You encounter the following issue : after a fresh install of Arch Linux on a Chromebook, the system does not boot. The system boot process gets to the initial Linux GRUB screen but for some reason the internal disk is not recognized. It could be because the Chromebook has a UFS disk and therefore, to fix this issue, you need to add the UFS modules to the initramfs image.

Assume you have the partitions listed below.

/dev/sdb1 -> /boot/efi
/dev/sdb2 -> /
/dev/sdb3 -> /home

First of all, boot the system from a live ISO. Once the live ISO is booted, you can drop to a terminal. Then complete the steps below:

  • Create a new directory to hold the root filesystem. In this example it is /mnt/root
  • Mount the partitions listed above (yours will most likely be different)
  • Mount /dev
  • Mount /proc
  • Mount /sys
  • arch-chroot to the previously created directory

These steps are required before you can generate the new initramfs. Of course, don't forget to create the ufs.conf file!
sudo su

mkdir /mnt/root

mount /dev/sdb2 /mnt/root
mount /dev/sdb1 /mnt/root/boot/efi
mount /dev/sdb3 /mnt/root/home

mount --bind /dev /mnt/root/dev
mount --bind /proc /mnt/root/proc
mount --bind /sys /mnt/root/sys

cd /

arch-chroot /mnt/root

Before generating the new initramfs, you will need to create a new configuration file ufs.conf which will add the modules that need to be loaded. The contents of the /etc/mkinitcpio.conf.d/ufs.conf file are shown below.

MODULES=(ufs ufshcd-pci)

Now you can go ahead and generate the new initramfs. For my Arco Linux installation I had to generate two initramfs, as shown below.

mkinitcpio -p linux
mkinitcpio -p linux-zen

-rw-------  1 root root 16896416 Sep 15 17:22 initramfs-linux.img
-rw-------  1 root root 17172530 Sep 15 17:22 initramfs-linux-zen.img

Exit out of the chroot environment and reboot the system. The UFS disk should now be detected.