I love the form factor of these small Chromebooks.
But ChromeOS isn't my thing.
Luckily, it doesn't have to be.
[chiptunes and guitars intro music] [yes that's a SID chip]
Greetings! And welcome to another thrilling episode of Veronica Explains!
I'm Veronica, and today I'm going to show you how I upgraded these two Chromebooks from
the stock firmware and ChromeOS to open firmware via Coreboot and whatever Linux distribution I like.
Now, I can already hear the comments.
"But Veronica! Did you know you can run *some* Linux apps from inside ChromeOS?"
Of course I knew that.
But that's not the point.
I'm a Linux user, and I like running a familiar Linux distribution, not just parts of one.
That's my choice, and I made it.
While trying to figure out how to install Linux on a Chromebook, all I was finding via
web search was very old articles explaining how to enable developer mode, which I've found
is a less-than-ideal experience.
But much like the Asahi Linux project, which aims to bring Linux to the newer Apple Silicon
Macs, there's a whole community of Chromebook enthusiasts with the "chrultrabook" project,
working under the SEO-radar on a much better way to unlock these things so you can install
*almost* anything on them.
Now, before I get too into the weeds, a word of caution- I'm definitely not suggesting
that you should go rush out and buy a brand new Chromebook for this kind of project.
If you just want a Linux laptop, there are plenty of vendors throughout the world who
want to sell you one.
And when you go with a dedicated vendor, you're gonna get much better hardware and software
support.
That said, tons of these old Chromebooks are sitting on shelves thanks to Google discontinuing
support, or because their owners swapped over to other devices.
On the used market, they can be a good bargain, as long as they aren't stolen devices from
a school or something.
In any case, do your own research, buy carefully, and make sure that you deal with honest and reputable
folks when shopping for a computer.
Lastly, before I begin- always remember that flashing new firmware has the risk of breaking
your device.
So back up your information, read the docs, and be prepared for mistakes.
I've only performed this operation twice.
Your mileage and success may vary.
Now that all of that is out of the way, the Chromebook I am featuring for today's escapades
is this very gently used Lenovo Thinkpad C13 Yoga, which has the benefits of a reasonably
fast processor and removable storage.
It's basically the little sibling of the full size Thinkpad, with the famous keyboard loved
throughout the galaxy.
I also tried out these utilities on an older 2017 Dell Chromebook 11 that I formerly used
as a Fedora test machine, albeit with stock firmware that was annoying to work around.
In fact, this all started as I was messing around with the stock firmware on the *2017*
Chromebook.
I ended up chatting on Mastodon with some folks about it, which connected me to the
Chrultrabook project, and the MrChromebox custom coreboot firmware.
[muttering] "That's not hard to say at all."
Apparently, a user by the name of MrChromebox has put together install scripts which help
many ChromeOS devices install new firmware.
Either a modified firmware to allow dual booting with ChromeOS, or in some cases even replacing
the firmware with Coreboot, the same open source firmware used on devices like System76s
Intel-based laptops.
[I'm "bee bopping" in the background]
And a community has sprung up at chrultrabook.com, with a forum and docs page helping folks like
me navigate through the tedious process of flashing new firmware on our devices.
And the documentation at docs.chrultrabook.com contains very detailed instructions, which
you should definitely check out if you're interested in this project.
Now, I'm recording this in early 2024, and at present, the only supported Chromebooks
are x86_64 models, so ARM is right out.
Because not every Chromebook is covered by the installation scripts, it's a good idea
to check yours against the project docs before we start messing with firmware.
And if you don't know your architecture, you can open a crosh terminal, that's apparently
the ChromeOS-specific terminal, with Ctrl-Alt-T and then use the command `uname -m`.
Here, I can see that mine is x86_64.
Now, after backing up all of my data, and ensuring that nothing was left on the Chromebook
that I cared about, it was time to enable developer mode.
To start with, I booted into recovery by pressing ESC + refresh at the same time as holding
the power button.
This showed me that my board model is MORPHIUS-HFAN, and "MORPHIUS" is a family of laptops which
appears supported on the project docs.
Since I was ready to delete everything on the Chromebook, I pressed Ctrl-D to enable
developer mode.
After a warning, I pressed Enter and the system rebooted.
From there, I selected Ctrl-D again to boot from the internal disk, and the lengthy process
of switching to developer mode began.
After a few minutes, and a loud beep, [beep] the system restarted, and launched me into
a "welcome" screen.
I set it up as normal, but did not enable debugging, per the project docs.
So now that I was logged in on developer mode, I had additional options over a standard ChromeOS
installation, such as the developer terminal called "VT-2", which you can get to by hitting
ctrl and alt, and the right arrow where F2 would normally go.
I could also now get a proper shell from that crosh terminal, the Ctrl-Alt-T one, by using
the shell command, which then let me cat out the cpu model.
Note that this shell doesn't have sudo permissions though, that's apparently what the VT-2 terminal is for.
Anyway, this is all super useful for finding your specific Chromebook in the Chrultrabook
documentation, and I'll provide a link to that page in the video description.
Now that my device was in developer mode, I was ready to pick a replacement firmware type.
The Chrultrabook project supports two types of firmware, RW_LEGACY and the UEFI Full ROM.
Different Chromebooks will have different levels of support for the different firmwares,
so this is one of those times where your mileage will certainly vary.
RW_LEGACY, according to the MrChromebox.tech documentation, updates-slash-replaces the
SeaBIOS stock legacy boot payload, apparently leaving stock functionality intact.
That includes the Developer Mode boot screen, and allows you to dual-boot ChromeOS and another
operating system.
Now, this is just me personally, but I can't think of a reason why someone would prefer
the dual boot approach on such a limited device.
If you've got a reason, feel free to let me know in the comments, because I'm frankly
stumped, and curious.
Unlike the RW_LEGACY option, UEFI Full ROM replaces the firmware entirely, removing all
of the developer mode warning hubbub.
Going this route means you'll lose ChromeOS functionality along with the Chromebook recovery
mode, but in the end, this firmware makes your Chromebook a lot more like a regular
laptop, and for me, that's what I'm after.
The Full ROM is UEFI-only, but I'm hard pressed to think of a popular modern operating system
where that's an issue.
So, I'm going the *UEFI Full ROM* route.
It should be noted that the Chrultrabook project cautions against using RW_LEGACY with Windows,
so if you were hoping to run Windows on a Chromebook, that's something to consider.
To replace the stock firmware, you'll have to disable write-protect features on the board,
and there's a few ways this needs to be done, depending on *your* Chromebook.
In my case, on my old Dell Chromebook, I had to remove this write-protect screw in order
to proceed with the flashing of new firmware.
And apparently on other Chromebook models, you may have to bridge two jumpers, or perhaps
use something called a "SuzyQable", which seems like might be hard to find.
On my ThinkPad Chromebook, though, I simply had to unplug the battery to disable the write-protect
features.
This was super easy, and we can just plug the battery in once the whole thing is done.
I didn't have to remove the whole battery- I could have just disconnected it.
But I wanted to have a look around, mainly to see if this NVMe cover was screwed in under
the battery, and it wasn't.
Having a replacable NVMe drive is a huge improvement over my older Dell Chromebook, which was stuck
with a nonreplacable 16GB eMMC module.
Now, plugging the ThinkPad in to power, I booted it up, and got the annoying developer
mode prompt and the beeps again.
[beep]
After signing in, everything looked normal, so it was time to run the firmware utility script.
I started by formatting a fresh USB stick, as the Mr Chromebox firmware utility will
offer to back up the stock firmware.
This is vital in case I ever decide to go back to ChromeOS.
Could be useful if I ever sell this Chromebook.
The script doesn't work within the Crosh "Ctrl-Alt-T" terminal, because of the lack of sudo access.
So, you'll need to work with the VT-2 terminal, which again, you can get to by hitting Ctrl
and Alt, and then the right arrow where the F2 key should be.
Then, you have to type user "chronos"...
[repeatedly pronouncing "chronos" in different ways, stammering a bit]
...and if you're using a default Chromebook, it shouldn't require a password.
The MrChromebox firmware utility is a bash script which makes changes by first pulling
in recent updates from the MrChromebox GitHub repo.
Then, it asks you a series of questions before testing your hardware, and ultimately, overwriting
the ROM itself.
GitHub user MrChromebox graciously released this utility and its source code into the
Public Domain, and if it helps you out and you have the means, you should consider donating
financially using the links on the MrChromebox.tech website.
Now the first time I ran the script on my new ThinkPad Chromebook, it gave me this warning
about software write protect.
I said go ahead and disable it, and the system rebooted.
After logging back in, I went back to the VT-2 terminal, ran the command again, and
it let me through to the script's prompt.
The script will show you the board you're running, in my case "morphius", as well as
the platform, current firmware type and version, and provide several options for upgrades based
on your particular hardware.
Then, depending on what option you choose and what hardware you are running, it'll ask
a series of questions to make sure you are aware of the potential pitfalls, and potential
risks, of upgrading your device's firmware.
In my case, after agreeing to take the risk of flashing the full ROM, I agreed to install
a UEFI-compatible OS after upgrading the firmware.
It then asked me if I wanted to enable the Trackpoint, which is the awesome little mouse
pointer in the middle of most ThinkPads.
Apparently this model has some problems with the Trackpoint and Windows drivers.
And since that's not me, I said go ahead and "enable the trackpoint".
Then, it prompted me to insert that USB device for backing up the firmware, which is contained
on a ROM file.
After this, it downloaded the full ROM from the MrChromebox.tech website, and successfully
flashed it, overwriting the stock firmware on my Chromebook!
The script then prompted for a reboot, warning me it could take a while for the first reboot
to complete.
After a few seconds, I was greeted with the Coreboot logo instead of the ChromeOS logo!
Of course, ChromeOS was no longer bootable, but after restarting again and hitting Escape,
I could get to the familiar Coreboot management screen.
A quick battery reinstallation, and then, I was ready to start testing some Linuxes.
Now, according to the Chrultrabook Docs for Linux, only kernel 6.4 or newer is supported,
at least as of early 2024 when I'm recording this video.
That's going to rule out a lot of distros that are based on older kernels.
And sure enough, throughout the docs and forums, I see recommendations against using Ubuntu
LTS for the time being.
That means flagship Mint, as well as other similar distros, are all likely off the table for the moment,
at least until those distros update their kernels.
I was able to get Pop_OS installed, although it had a terrible time with the rotatable
screen of the Chromebook.
While Pop is currently based on Ubuntu 22.04 LTS, it's running an updated kernel, so it
worked out just fine, beyond the screen rotation issues, which could be easily fixed via configuration.
Anyway, considering the kernel limitations, the project documentation currently recommends
Arch, Fedora, openSUSE Tumbleweed, and Debian 12.
I was able to install Arch, Fedora, and Tumbleweed without incident.
Pretty much just like it would be on any other laptop.
On a lark, I did try this obscure operating system called Windows, just to see if it would
boot.
As I expected, vanilla Windows 11 failed to allow installation without bypassing TPM and
secureboot checks.
And yes, Windows bros, I know there are ways to get around those checks.
Vanilla Windows 10 did install, even with the mouse driver issues.
Issues which may have been caused by my trackpoint being "enabled".
You may remember they warned me about this.
I couldn't be bothered to troubleshoot any Windows issues, because another, even more
obscure operating system was calling to me.
Unfortunately, Haiku was stuck in a boot loop on my ThinkPad Chromebook, and wouldn't even
start booting on my older Dell Chromebook.
So, I guess I'll have to find another device to use in my inevitable "Veronica tries out Haiku" video!
You know it's coming.
Next was my personal favorite on "recommended list", Debian 12.
And while it loaded just fine on my *Dell* Chromebook, on the *ThinkPad* it too threw
the same "looping" issue as Haiku.
No matter what option I chose in GRUB, it just kept restarting the computer over and
over again.
Now, I don't think this was a problem with the Chromebook, but instead, a problem with
GRUB.
Here's how I troubleshot it, and eventually got it working, in case something like this
happens with you...
I started by downloading a Debian nightly testing ISO, just in case it was a problem
with Debian 12's GRUB configuration.
And that testing ISO let me install Debian Testing just fine.
But for whatever reason, Coreboot didn't recognize GRUB in the boot partition, and when I selected
the GRUB file manually using Coreboot's EFI settings, it just restarted the machine right
away, exactly like Debian 12 did.
So I tried again, using Debian Testing's advanced installer, which allowed me to force GRUB
to install where Coreboot could see it, using the "removable media path".
And unfortunately, I still had that boot loop problem.
So, knowing Debian Testing's ISO booted fine, but Debian 12's ISO didn't, I looked at what
was different between those two ISOs.
And I noticed that the GRUB was running a different version- 2.06 in the Debian 12 ISO,
and 2.12 in the Testing ISO.
Then I noticed that even though the Testing Nightly *ISO* was using the 2 point *12* GRUB,
the Testing *Installation* was installing GRUB 2 point *06*.
Armed with that understanding, and after some discussion in the chrultrabook forums, I decided
to try using the Testing *ISO's* GRUB to boot my *installation* directly.
Now, this involves modifying the targets in the ISO's GRUB command line.
And yes, I'm planning a GRUB lil' Linux Lesson in the future, in case that's something you
want to learn more about.
So, even though there might be a bug with GRUB - pun intended - 2.06, yes, even Debian
works on my Chromebook now.
For now, I've gotten around this issue by installing a newer GRUB from Debian's Sid
branch.
And I'll keep the rest of the installation on Testing for a while.
And after performing a bit of customization - in particular replacing MATE with Sway - I
now have an 11 inch Debian Testing laptop with a great keyboard and fantastic battery life.
It's far from perfect- audio isn't working yet on the ThinkPad, even though it's working
great on the older Dell model, and might work great for you.
I'll be posting in the Chrultrabook forums about the Thinkpad's issues, to see if I'm
able to figure out an audio fix, though.
And that gets to my favorite part of this whole project- the community.
The Chrultrabook project, like the Asahi Linux project, is a group of enthusiasts working
hard to help open up a bunch of really cool devices.
The locked-in firmware ever present on these lil' laptops means eventually, everyday users
will just end up throwing them away.
And that is terrible for our planet.
If projects like Chrultrabook help enthusiasts like us keep these laptops out of the landfill,
in my opinion, that's a project worth supporting.
I've made a donation to Mr Chromebox to help support this work financially, and I encourage
all of you to do the same.
Even if you don't own a Chromebook, supporting projects like this is incredibly important
for our tech and our planet.
[child shouting] "1, 2, 3, 4!" [punk music outro]
"But Veronica! Did you know you can run some Linux apps from inside ChromeOS?!?"