Categories
Linux Mastering Development

Error installing Arch on LUKS-encrypted ZFS root: `/sbin/init does not exist`

I have almost successfully installed Arch Linux on a LUKS-encrypted disk with a ZFS root.

I can get the password prompt to decrypt the LUKS volume, but the next step with loading the installed system from the ZFS pool is not working.

I get the following error immediately after decrypting:

Starting version 246.6-1-arch 

A password is required to access the archcrypt1 volume: 
Enter passphrase for /dev/disk/by-id/ata-Samsung_etc_etc_etc: 
ERROR: device ' ZFS=zroot/ROOT/defauIt' not found. Skipping fsck.
no pools available to import 
ERROR: Root device mounted successfully, but /sbin/init does not exist. 
Bailing out, you are on your own. Good luck.

sh: can't access tty: Job control turned off 
[rootfs ]#   

Any suggestions? I feel like I’m so close to the finish line!

Additional info:

The header/GRUB are on a USB stick:

  • /dev/sda

    Internal SSD

    • LUKS container archcrypt
      • zpool zroot (containing installed Arch system)
  • /dev/sdb

    USB drive

    • /dev/sdb1

      1M BIOS boot

    • /dev/sdb2

      512MB boot with GRUB, header

    • /dev/sdb3

      Free space

/etc/mkinitcpio.conf

...
FILES=(/boot/header.img)
...
HOOKS=(base systemd autodetect keyboard keymap sd-vconsole modconf block sd-encrypt sd-lvm2 zfs filesystems fsck)

/etc/crypttab.initramfs

archcrypt1  /dev/disk/by-id/ata-Samsung_etc_etc_etc none    header=/boot/header.img

grub.cfg

...

menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-dbafe9793fadcd06' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_gpt
    insmod ext2
    set root='hd4,gpt2'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275/(null)/sas/disk@0,gpt2' --hint-bios=hd4,gpt2 --hint-efi=hd4,gpt2 --hint-baremetal=ahci4,gpt2  12345abcd-usb-stick-uuid-dcba54321
    else
      search --no-floppy --fs-uuid --set=root 12345abcd-usb-stick-uuid-dcba54321
    fi
    echo    'Loading Linux linux ...'
    linux   /vmlinuz-linux cryptdevice=/dev/disk/by-id/ata-Samsung_etc_etc_etc:archcrypt1:header root=ZFS=zroot/ROOT/default rw loglevel=3 quiet
    echo    'Loading initial ramdisk ...'
    initrd  /initramfs-linux.img
}

...

Leave a Reply

Your email address will not be published. Required fields are marked *