Elisp on an old Chromebook
Each Chromebook model has an auto-update expiration (AUE) date. On this date Google stops distributing updates for the specific model.
When this date is passed, your Chromebook will no longer receive updates and your Chromebook is destined to become a rather large paper weight.
Older Chromebooks have no option to install Android apps, with these models you are limited to the Chrome-extensions that Google offers.
chrx is a awesome tool that makes it possible to install a real Linux distribution on your Chromebook.
You choose between installing Linux next to the original ChromeOS ("dual boot") or replace the original ChromeOS completely.
The second option (completely replace ChromeOS) is much more destructive, and on older Chromebooks it requires opening the case in order to remove a write protect screw. On the other hand, it also is more flexible, this way you can choose one of the many different Linux distributions, or even one of the BSD's, to install on your Chromebook.
The first option ("dual boot") is less scary, because it doesn't require opening your Chromebook (with the chance of breaking some of the plastic tabs), removing the write protect screw is not necessary, and the whole process is almost completely automated. So, you have less chance to screw things up, and you can still occasionally boot into ChromeOS.
GalliumOS is the default distro installed by chrx.
GalliumOS is derived from Xubuntu, developed specifically for compatibility and optimized performance on Chromebook hardware. It scores well on all metrics, looks great, and installs quickly.
The latest version of GalliumOS is based on Ubuntu 18.04, a rather older version.
Ubuntu 18.04 is a Long Term Support version, it will be supported until April 2028.
Of course you can't expect any wonders, Chromebooks are usually sporting a processor without high capabilities, and for the older models this is even more so. Having a ton of tabs open in your web browser and than opening a new one to go to reddit to watch the latest Tiktok video is not the best experience on a older Chromebook.
Installation of Emacs 27
When installing Emacs from the packages ("apt-get install emacs") it will install Emacs 25.
Installation of Emacs 27 on GalliumOS, however, is not difficult, just follow the instructions from ubuntuhandbook.org.
I have revived a Chromebook, built in 2014, with the following specs:
- CPU: Intel Dual-Core Celeron N2830 @ 2.4 GHz
- RAM: 2 Gb
- Display: 11.6 inch 1366x768
- SSD: 16 Gb eMMC
- Touchpad: 4.1 x 2.4 inch
- Wifi: 802.11a/b/g/n/ac
- Bluetooth: Bluetooth 4.0
- Battery: 48WHrs, 3-cell Li-ion
- Weight: 1.15 kg
The keyboard is a typical Chromebook keyboard, according to a review it offers a nice deep 2mm of vertical travel and requires 65 grams of force to depress. In other words: it is not a Thinkpad keyboard, but it is not bad.
Other than a power port, it offers an HDMI port, a 3.5 mm headphone jack, a SD card slot, a USB 3.0 port and a USB 2.0 Type-A port.
These specs are quite typical for Chromebooks from that era.
Conversion to Linux
I went for the less scary option, making it a dual boot. The size of the Linux partition is about 9 Gb. After installing some packages, there is still about 4 Gb free. The conversion took less than an hour.
I won't use ChromOS anymore, but this setup works fine and I didn't have to open up the case, risking to break any plastic tabs. Perhaps one day I will do the full conversion.
Search key as Control key
Chromebook keyboards have a search key where you would expect the Capslock key.
To make this key behave like a Control key, I added
~/.Xmodmap file, with the following contents:
remove mod4 = Super_L add control = Super_L
This turns out to be enough. During the start of the XFCE4 session, xmodmap is being run with this file.
In the beginning I had some problems typing because of the lack of palm rejection.
This post helped me solve this.
Edit the file
Search for the section with
touchpad catchall and add a line
Option "Tapping" "true".
This is the end-result:
Section "InputClass" Identifier "libinput touchpad catchall" MatchIsTouchpad "on" Option "Tapping" "true" MatchDevicePath "/dev/input/event*" Driver "libinput" EndSection
Reboot after this to activate the change.
Emacs runs very well on this Chromebook with GalliumOS.
I have started to learn Elisp and this is a great solution for it.
The low weight, and the absolute silence are great benefits. Emacs doesn't require much power and runs just as good on this Chromebook as on my Lenovo Thinkpad X270 with a more capable processor and 16 Gb RAM.
My setup is almost plain vanilla Emacs though, I have added only a few pacakges and my .emacs is less than 50 lines.
To see how it functions with a ton of packages and a loaded .emacs, I will do a Doom installation and post about that in a follow up post. I don't use Doom, but it seams a nice simulation of a Emacs setup where a user has lots of extra's installed and a huge .emacs.
The 11.6 display with the resolution 1366x768 leaves some room for improvement. The 16:9 aspect ratio still allows for having two windows side-by-side within Emacs, but a higher resolution is better for this.
I have no reservations to bring this old Chromebook on a camping trip, or toss it in a bag pack. It requires less power than an ordinary laptop.
This way the machine has a purpose, which is better than putting it out with the garbage.
Advantages of an old Chromebook
Expanding the life of any laptop is a climate-friendly and environment-friendly solution.
The advantages of using an old Chromebook as an Emacs machine are multitude:
- Most older Chromebooks have a fanless design and are absolutely silent.
- Most older Chromebooks are light weight.
- Most Chromebooks are low power machines and offer long battery life.
- Many Chromebooks have a sturdy design.
- Older Chromebooks ---specially after their auto-update expiration date--- are very cheap.
- Emacs runs great on these machines.
- With a Linux distribution on it, the Chromebook can function for many years.