Skip to content

Instantly share code, notes, and snippets.

@abtrout
Last active January 24, 2023 19:15
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save abtrout/8403647 to your computer and use it in GitHub Desktop.
Save abtrout/8403647 to your computer and use it in GitHub Desktop.
ArchlinuxARM on HP chromebook 11

Install onto USB

Make sure that developer mode (Hold ESC + Refresh and poke the power button, then ctrl+D when not prompted) and USB booting have been enabled (crossystem dev_boot_usb=1). Then reboot.

Follow these instructions until step 10, where we'll make some substitutions. Our directions will vary slightly because we need HP (spring) variants of the Samsung (snow) kernel and uboot. These can be found in a dropbox link in this thread.

Before we reboot, we install a few packages in chroot. Suppose that /dev/sda3 is mounted at /tmp/root.

$ cp /etc/resolv.conf /tmp/root/etc/resolv.conf
$ sudo mount -o bind /dev /tmp/root/dev
$ sudo mount -t devpts none /tmp/root/dev/pts
$ sudo mount -t proc proc /tmp/root/proc
$ sudo mount -t sysfs sys /tmp/root/sys
$ sudo chroot /tmp/root /bin/bash 

Now to install a few things:

# pacman -S devtools-alarm base-devel git libyaml

trousers and vboot-utils, too, but from AUR!
dosfstools for mkfs.vfat
# exit

When finished, make sure to unmount:

$ sudo umount /tmp/root/dev/pts /tmp/root/dev /tmp/root/proc /tmp/root/sys

If we need to chroot in the future we can just /tmp/root/usr/bin/arch-chroot /tmp/root.

Copy /usr/share/alsa/ucm and /usr/share/vboot from chromeOS to the rootfs so we can get sound working and sign our kernel in the next section.

Install onto eMMC

From our USB install we can take over the eMMC. Actually, you can skip the USB install and just take over ROOT-C and KERN-C on the standard partition table. That's just not how I did it. The procedure looks (I hope) exactly like before, except replacing /dev/sda with /dev/mmcblk0.

First, it was reported that cgpt could be copied from chromeOS and "just work". This wasn't the case, but it can be compiled from vboot-utils. A little bit has been writting about the procedure in this thread.

We partition /dev/mmcblk0 just as we did /dev/sda.

# cgpt show /dev/mmcblk0
       start        size    part  contents
           0           1          PMBR (Boot GUID: E12BD9F6-7833-3449-8FD9-DAAB09FAD167)
           1           1          Pri GPT header
           2          32          Pri GPT table
        8192       32768       1  Label: "U-Boot"
                                  Type: ChromeOS kernel
                                  UUID: A9805C2B-FC70-994C-9524-D4D9C8E09ED2
                                  Attr: priority=10 tries=5 successful=1
       40960       32768       2  Label: "Kernel"
                                  Type: Linux data
                                  UUID: BD69B9DE-AD38-1E4C-BEC4-644B8FCAF013
      106496    30670815       3  Label: "Root"
                                  Type: Linux data
                                  UUID: 1186D744-C59D-AC42-ACAD-2D7479D39FCA
       73728       32768      12  Label: "Script"
                                  Type: Linux data
                                  UUID: FB2614E2-2C58-584A-ADFB-5A8A8A28F66C
    30777311          32          Sec GPT table
    30777343           1          Sec GPT header

Make the same filesystems, unpack the rootfs, chroot in, etc - all as before. We need to create a new kernel to write, since the one that was so lovingly packaged up for us has a kernel command line that sets root=/dev/sda3. We need to change that to /dev/mmcblk0p3.

For this, we use vbtools.

# echo "root=/dev/mmcblk0p3 rootwait rw lsm.module_locking=0" > cmdline.txt
# vbutil_kernel --pack arch-eMMC.kpart \
       --keyblock /usr/share/vboot/devkeys/kernel.keyblock \
       --signprivate /usr/share/vboot/devkeys/kernel_data_key.vbprivk \
       --config cmdline.txt \
       --vmlinuz /boot/vmlinux.uimg \
       --arch arm --version 1
# dd if=arch-eMMC.kpart of=/dev/mmcblk0p1
@omgmog
Copy link

omgmog commented Feb 7, 2014

I've automated all of the usb stick creation now, this will provide you with a bootable USB stick, and can be used to install to eMMC after booting from USB: https://github.com/omgmog/archarm-usb-hp-chromebook-11/

And a write-up here: http://blog.omgmog.net/post/installing-arch-linux-arm-on-the-hp-chromebook-11/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment