Various initramfs images for Chrome OS: recovery, factory, etc...

Clone this repo:
  1. eb4d97c initramfs: add sub-OWNERS for recovery by Andrey Pronin · 5 days ago master
  2. 319f8c0 Update OWNERS file by Hung-Te Lin · 14 days ago stabilize-12249.B
  3. f8e0478 factory_shim: Change the size of ram disk by chuntsen · 10 weeks ago firmware-sarien-12200.B release-R75-12105.B release-R76-12239.B stabilize-12088.B stabilize-12121.B stabilize-12202.B stabilize-12206.B stabilize-12222.B stabilize-flapjack-12109.B
  4. e043793 initramfs: Conditionally include and use ectool by Duncan Laurie · 6 months ago factory-atlas-11907.B firmware-atlas-11827.12.B firmware-atlas-11827.B release-R73-11647.B release-R74-11895.B stabilize-11554.B stabilize-11647.104.B stabilize-11686.B stabilize-11839.3.B stabilize-11839.B stabilize-11895.108.B stabilize-11895.109.B stabilize-11895.118.B stabilize-11895.72.B stabilize-11895.89.B stabilize-11895.95.B stabilize-11998.B stabilize-12054.B stabilize-12058.B stabilize-12060.B stabilize-atlas-11512.6.B stabilize-atlas-11512.B stabilize-atlas.11448.B
  5. c748ebd initramfs: recovery: init: Enable oobe config by Amin Hassani · 7 months ago firmware-kalista-11343.B

Chromium OS initramfs

Build logic for creating standalone initramfs environments.

See the README files in the respective subdirs for more details.

To Use

Normally you wouldn't build in this directory directly. Instead, you would build the chromeos-initramfs package with the right USE flags. e.g.:

$ USE=recovery_ramfs emerge-$BOARD chromeos-initramfs

That will install the cpio initramfs files into the sysroot for you to build into a kernel directly. The various build scripts would then be used to make the right kernel/image using those (e.g. mod_image_for_recovery.sh).

To Make

You could build these by hand for quick testing. Inside the chroot:

$ make SYSROOT=/build/$BOARD BOARD=$BOARD <target>

That will create the cpio archives for you.

To Debug

It is possible to debug few of the initramfs targets in QEMU. Read test/README.md for more information.

Also, here is a shortcut for developing/debugging graphical bits in initramfs, without having to create a full image for every iteration.

After emerge-$BOARD, find your initramfs package from chroot /build/$BOARD/var/lib/initramfs and copy to a running DUT, for example /tmp/recovery_ramfs.cpio.xz, then do followings on DUT:

  1. mount -o remount,exec /mnt/stateful_partition
  2. mkdir /mnt/stateful_partition/test; cd /mnt/stateful_partition/test
  3. xzcat /tmp/XXXXXX_ramfs.cpio.xz | cpio -iv
  4. stop ui; kill $(pidof frecon)
  5. bind mount /dev, /proc, /sys and /tmp in /mnt/stateful_partition/test
  6. chroot /mnt/stateful_partition/test/init
  7. Iterate.