You can run Linux on this thing, and it ain’t bad! It’s not super peppy, but it’s definitely usable. I installed the Gnome desktop, because that’s what I’m used to, and the entire OS is weighing in at around 10GB on disk, leaving me with about 54GB of storage.
Motivation
My dad’s Lenovo C330 has finally stopped getting OS updates from Google. This thing lasted far longer than we expected it to, and we still pull it out quite a lot when we’re at his place and need to get on the Internet for something. Everything is still working well, and it would be nice if we could keep it in service.
This Chromebook is from the “don’t be evil” era of Google, and has an unlockable bootloader that can load other Linux kernels. That’s awesome: it means we stand a chance of getting something like Debian or Ubuntu running!
Developer mode
Before anything else, I had to put the Chromebook into “developer mode”. This allows booting off external media, and skipping OS signature verification. It’s pretty in line with how Google was acting at that time, giving you the ability to really dig into the hardware and mess with it in whatever way you wanted. I’m so grateful for the engineers who, 10+ years ago, decided to put the extra effort into making it so that in 2025, this no-longer-supported machine could still be used somehow, instead of just thrown away.
Anyhow, you have to enable developer mode, switch to a console
(Ctrl-Alt-F2), log in, and run sudo crossystem dev_boot_usb=1 dev_boot_signed_only=0 to get the boot loader to chain load unsigned
something. The next time it boots into the obnoxious white screen, you
can hit Control-U to have it boot off USB. Now we’re all teed up to
try some other kernels!
Submarine
Because this is an ARM machine, we have to rely on whatever Google created, which appears to be called “depthcharge”. There’s a thing called submarine which claims to provide a tiny Linux kernel that pulls in a bigger OS and calls kexec to run it. This sounds like exactly what I want.
A few hours with submarine left me disappointed, though. The instructions are written for somebody who knows what they’re trying to accomplish, and I didn’t. It made it sound like I could just flahs submarine to a USB device and I’d be able to see a menu or something, but no. The Chromebook boot loader just beeped at me.
There were further instructions to load Debian, yay! Step 1: obtain a live boot ISO. Well, ARM machines don’t live boot, so that’s out. Same instructions for Ubunu. But Arch Linux has instructions for a different ARM Chromebook, so I gave that a try.
At the end of day 1, I had a kernel booting and part of early
userspace going. It panicked because of some problem not being able to
find /dev. This is progress, though!
postmarketOS
I super appreciate the community of nerds willing to do everything in hard mode (and document it!) for Arch Linux, maybe there’s an easier way to get this going.
postmarketOS is an Alpine-based “works out of the box” distribution specifically for obscure hardware. After chasing 5 or so links on their maze of a wiki, I’ve learned that they call the C330 an “Oak Chromebook”, and they have builds for that. I gave it a try and… success!
It just required downloading the “google-oak” prebuilt image (I used
the XFCE4 variant), and writing it to a USB flash drive with dd. It
took a few minutes to boot, but it eventually came up, and I was able
to log in.
This is runing of the USB flash drive, so next up is to install to the eMMC. This is asking if I want to use Gnome as the desktop. That’s what I use on my main laptop, so I told it to use that. It’s building an entire boot disk locally here, by installing alpine packages. This is taking a long time, with most of my CPU in “wait” state. My guess here is that the USB flash drive is not very fast.
Aaand that was it! I have Gnome now. fscrypt doesn’t appear to be compiled into the kernel, so no encrypted home directory, which is a bummer. Maybe one day I’ll recompile a kernel to get it back. But we’re in business now.
Usability
I like this thing! I think it’s going to do a good job replacing the OS that only really provided a web browser. But I bet it can play OpenRCT2 like a champ.
Things I like
- I’m compiling a kernel, pegging all four CPUs at 100%, and it’s drawing 10 watts, running at 30°.
- The battery says it will last for about 14 hours.
- It’s got mostly the same ports as my $1000 Framework 12: the Framework has one additional USB C port, but no SD card port.
- Runs a web browser well
- YouTube videos play flawlessly
- Pages render with no problems
- Scrolling is a bit slow, but not so bad that it’s annoying
- It’s real Linux
- I can interface with every USB peripheral now, no translation needed
- I can install Emacs natively if I want
- Nobody has nerfed the GPU acceleration
Problems
- Folding the screen isn’t recognized
- Rotating the screen isn’t recognized
- I can’t have the built-in speakers at the same time as the built-in microphone
- The kernel didn’t have cryptfs built, so I’m having to rebuild a kernel (but I’m happy to have this option)