Latest news about Bitcoin and all cryptocurrencies. Your daily crypto news habit.
The Dell 11" 3120 (Candy model, 2015) makes for a nice chromebook, and the first thing we want to do is install Ubuntu on it.
Don’t rush to Dell website: it’s out of production. Only student versions are available now
Legacy boot
Although you can read here and here that it is necessary to open the chromebook and remove the write-protect switch, it is really not necessary* to boot Linux. I will give here for reference some instructions on the procedure I followed.
First step is to switch the chromebook to developer mode; you can use Arch Linux’ documentation for this. All steps including “Enabling SeaBIOS” should be followed, but do not reboot the machine yet.
*= unless you want to boot directly into SeaBIOS avoiding the Chromebook warning prompt, then it is necessary.
Flashing the right SeaBIOS
The official upstream about using legacy boot on this model is here: https://bugs.chromium.org/p/chromium/issues/detail?id=544236
I tried the seabios.cbfs provided by Vapier there, but it does not work. Instead I used the script provided by John Lewis.
You can find documentation and instructions here*: https://johnlewis.ie/custom-chromebook-firmware/rom-download/
The matrix there confirms that for this model it is not necessary to remove the write-protect switch, since RW_LEGACY mode is supported.
*= Please donate to the author to support his work, we would not be here enjoying Ubuntu on this device otherwise.
You can download and check the script to see what it does; it will detect the model and then download the right ROM file and offer you options to install it on the RW_LEGACY slot of the disk.
Run this script (after reading/changing it if you like) on the chromebook root shell started at previous step; once it has completed, congratulations, you now have unlocked a working SeaBIOS for your device!
gfxboot problems
After flashing an Ubuntu 16 installer ISO (desktop or server) to an USB device and booting with Ctrl+L you will unfortunately be blocked by the dreadful gfxboot error:
graphics initialization failledError setting up gfxbootboot:
You can read online many desperate calls to write “help” and get going to next stage, but that is not helpful nowadays. The bug is explained in detail at the upstream Launchpad issue here.
Basically this means that the bootloader stage cannot setup a valid video mode, but bear in mind: this is just the bootloader, not the actual installer.
FAT boot (netboot)
The easiest solution would have been to change the isolinux.cfg file so that it would pick the first entry (installer) and do not bother displaying a menu, however that proved to be a dead end as I was not successful in modifying the ISO and flashing it again as bootable.
I decided to change approach and try a FAT boot disk from USB, which is commonly referred to as netboot/boot.img.gz for Debian/Ubuntu.
You can download the Ubuntu netboot image from the alternate downloads section:
Index of /ubuntu/dists/xenial-updates/main/installer-amd64/current/images/netboot
This image is a plain FAT16 partition with a bootable MBR, so no partition table in there. It was probably created with makeboot (could not find instructions online about how Debian/Ubuntu actually creates it) and I was not able to create a larger one from scratch (you will see later why this matters).
You can flash the image to the correct USB device with:
gunzip < boot.img.gz | dd of=/dev/sdX bs=16M
Replace /dev/sdX with the actual USB mass storage device (try to not flash your main disk in this process).
Intel Wireless network
The netboot image will nicely boot and allow us to reach the textual installer, however you will soon realize that the wireless network interface is not recognized. This seems to be due to a single module missing, iwlmvm.
Just copying the iwlmvm.ko from the linux-image-extra package inside the initrd will not work, because the kernel symbols do not match; also, adding all the modules from linux-image-extra is not an option because of size constraints (the boot.img is quite small), so I had to patch the existing initrd with the following procedure:
- create a list of all the module files already present inside the initrd
- copy such modules and boot/vmlinuz-4.4.0–101-generic (renamed as simply linux) from http://security.ubuntu.com/ubuntu/pool/main/l/linux/linux-image-4.4.0-101-generic_4.4.0-101.124_amd64.deb
- copy the missing iwlmvm.ko from http://security.ubuntu.com/ubuntu/pool/main/l/linux/linux-image-extra-4.4.0-101-generic_4.4.0-101.124_amd64.deb
- put all the copied files (except the linux kernel) inside the initrd.gz (I removed other unused modules in the process to free up some space)
- copy the kernel (/linux) and the updated initrd.gz on the mounted boot.img
While I was at it I also fixed the vga= line to use the correct value for the chromebook’s display, which is 0x340.
Success
The end result is that the installer boots flawlessly, you can configure wireless network and proceed to the actual installation.
You can repeat the steps above yourself or download the files I changed from this gist:
The most important files are linux and initrd.gz; mount the USB storage as you would regularly (Ubuntu will allow you to do this without issues even from GUI) and overwrite the files in it with those provided in the gist.
Ubuntu 16 installer boot image for Dell Chromebook 11 (Candy) was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.
Disclaimer
The views and opinions expressed in this article are solely those of the authors and do not reflect the views of Bitcoin Insider. Every investment and trading move involves risk - this is especially true for cryptocurrencies given their volatility. We strongly advise our readers to conduct their own research when making a decision.