My Attempt to Install Kali Linux on an Old Chromebook

My Attempt to Install Kali Linux on an Old Chromebook

A harrowing and detailed account of my first ever attempt at installing Kali Linux on an old Chromebook

Cas Spicer · 6 minute read

I have wanted to do this for over a year, and I am so excited to be doing this project now! Finally, I shall attempt to install Kali Linux on my old Chromebook! I don't care too much about this old chromebook, so if I accidentally brick it, it's okay.

This was a great experience which helped me learn how to install an OS from a USB flashdrive.

If I can figure out how to fix the issue I encountered (detailed below), I will come back and modify this blog post. If anyone knows how to fix this issue, I would love to learn from you.

My materials:

  1. A USB flash drive with at least 5 GB storage space. I got one with 64GB storage space for cheap on Amazon. :)

  2. A USB adapter

  3. A Mac. I'm using my X64 Macbook (M1Pro chip) which I purchased in 2022.

  4. An old Chromebook. I'm using my old Samsung XE500C13 X64 Chromebook that I purchased back in 2017. This Chromebook only has 16 GB of storage, and Kali requires 20, but there have been reports of this working ok even with only 16 GB's of storage.

Note: This process will replace ChromeOS with Kali Linux, and will delete anything saved on your Chromebook.

Your experience may vary based on your Chromebook model and other specifics.

Initial Steps:

  1. I checked my Chromebook to find out whether it had a 32 bit or 64 bit processor (turned out it was a 64 bit)
  2. On my Macbook, I downloaded BalenaEtcher for Mac from etcher.balena.io/#download-etcher
  3. On my Mac, I downloaded the recommended Kali Live Boot Image here: www.kali.org/get-kali/#kali-live (make sure to choose the correct version: X64 or X32)
  4. I opened the BalenaEtcher app and followed the prompts to write the Kali live boot image to the USB flashdrive. Once I saw a 'success' message, I ejected the USB.
  5. I followed the instructions on this YouTube video by DB Tech who got his instructions, and the file he downloads, from this blog post. I added detailed the instructions below for reference.

Process Steps:

  1. Enable Developer mode

Please note: Enabling developer mode will wipe your Chromebook back to factory settings, so make sure you back up any data not on your Google drive.

With your Chromebook turned off, hold down the ESC and Refresh (the little clockwise circle) buttons while keeping them held down, press the power button once briefly. Keep the ESC and refresh button held down until you see the next screen begin to appear.

You might see the 'ChromeOS is missing or damaged' screen; if so, that's okay. Press Ctrl + D to bypass this screen. You may see the 'To turn OS verification off, press enter' screen. Press enter (we want to turn off OS verification)

Then, you should see the screen with the red exclamation mark saying 'OS verification is off'. Wait a few seconds - you should hear two loud beeps. After a bit, you should see the 'your system is transitioning to developer mode' screen. It may take a few minutes to load.

developermodetransitionscreen

You might see the 'OS verification is off' screen again; if so, press CNTRL + D again. You should be routed back to the Chromebook setup flow.

chromebookstartupscreen

Press 'get started' and follow the prompts to connect to your internet network. Once connected, if you're prompted to sign into your Google account, you can simply click 'browse as guest'.

Open the crosh (Chrome Shell) using command CRTL + ALT + T.

croshscreen

Then, type command shell to open the shell interface.

  1. Modify the Chromebook's BIOS

At this point in the YouTube video, he enters command cd;bash <(curl https://johnlewis.ie/flash_cb_fw.sh) in the terminal. This is a script he grabbed directly from John Lewis's chromebook firmware webpage.

After a moment, you should see a 'greetings weary traveller' message encouraging you to donate to John Lewis and emphasizing that he does not provide technical support. Got it.

whatdoyouwanttodo

Press enter and you should see a 'what do you want to do' options menu. In my case, I only had one option (based on my chromebook model) which was to modify the Chromebook's RW_Legacy slot. You may have more options based on your model.

(P.S. I love this lecture he programmed in, which shows up breifly, just before the 'what do you want to do' options menu. Very good advice IMO): lecture

After selecting your choice and pressing enter, you'll see a phrase written in lovely leprechaun language, written by a Gryphon and a Mock Turtle, or some combination of both. This is designed to make you aknowledge that what you're about to do is your own responsibility. I strongly recommend replacing 'my' with 'me' where it appears, and reading this in a lilting Irish or Scottish accent for maximum effect.

onmyheadbeit

Restart the computer.

  1. Enable USB boot

Upon restarting, you should again see the screen with the red exclamation mark. Press CNTRL + D, and you should see the ChromeOS startup screen again.

Press Ctrl + Alt + F2 (or the forward arrow button):

forwardarrowbutton

You'll see a terminal-esque login screen; login using the password chronos

developerconsoleloginscreen

Enter command: sudo crossystem dev_boot_usb=1 dev_boot_legacy=1. In my case, I had to use command dev_boot_altfw=1 instead of dev_boot_legacy=1 due to my version of chromeOS.

bootfromusb

Power off the Chromebook with command: sudo poweroff.

Step 4. Install Linux

Plug in your USB drive into the USB port of your Chromebook!

usbkalilinux

Power on the Chromebook and press Ctrl + L to get to the BIOS screen. Press ESC to get to the boot menu, then select your USB drive from the menu.

You should see a blue box containing more install menu options. I chose 'start installer' which opened the graphical install:

installer

You might see a 'undefined video mode number - press enter to see video modes available' message. I pressed enter and then chose #7, the same as DB Tech did in his video:

videomenu

You should now be able to configure your language preferences, time zone, username and password in the next few screens (my mouse stopped working at this point, so I had to use the tab and enter keys to navigate through these).

kalisetup1

When you get to the disk partitioning screen, choose the 'use entire disk' option:

disk

I saw an error appear during the Kali Linux setup process indicating there were still some processes running on the Chromebook's disc.

errorscreen

At this point I decided to restart and try again. However, I found myself in a rut, because the change to the BIOS (indicating to start the OS from the USB rather than the disc) didn't persist, therefore my Chromebook was only looking to start up with ChromeOS, and was giving me the 'ChomeOS missing or damaged' screen followed by the 'the device you inserted does not contain ChromeOS' screen when the USB was inserted.

chromebook11

I grabbed an empty USB flashdrive and followed the process in this Chromebook help article under option 2, recover from a USB drive, on how to recover ChromeOS on a chromebook. Note: In order to get the recovery to work, I had to enter the exact model number displayed on the the device you inserted does not contain ChromeOS' screen into the Chromebook Utility Recovery extension, which in my case was CELES D25-D4B-F8A-A2A.

recoverchromeos

Once I did that, I completely re-started the entire process step by step from the beginning, with a few adjustments:

When I got to the crosh, before opening the shell, I ran command top to check the task manager in crosh. However, from what I could see, only the crosh-related processes were running. Hrm. I decided to go ahead with the steps as I had before. Perhaps the ChromeOS recover had stopped processes previously running on the disk...?

I got all the way back to where I had left off, only to see the same error screen as before. Oh, bricks! On me head be it!

errorscreen

This time, I decided to continue and see what happened.

The result was that I got stuck in an installer loop, coming back to this 'failure' screen:

failurescreen

I will continue to research possible reasons for this, and if I find a resolution, I will definitely update you here! If you have any tips to share, please feel free to reach out to me. I would love to learn from you.

Cheers!