在 LUKS 加密的 ZFS 根目录上安装 Arch 时出错:“/sbin/init 不存在”

在 LUKS 加密的 ZFS 根目录上安装 Arch 时出错:“/sbin/init 不存在”

我有几乎已成功在具有 ZFS 根的 LUKS 加密磁盘上安装 Arch Linux。

我可以收到密码提示来解密 LUKS 卷,但从 ZFS 池加载已安装系统的下一步不起作用。

解密后立即出现以下错误:

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/default' 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 ]#   

有什么建议么?我感觉我已经很接近终点线了!

附加信息:

标头/GRUB 位于 USB 记忆棒上:

  • /dev/sda

    内置SSD

    • LUKS容器拱穴
      • 池池兹根(包含已安装的Arch系统)
  • /dev/sdb

    USB驱动器

    • /dev/sdb1

      1M BIOS启动

    • /dev/sdb2

      512MB 引导,带 GRUB、标头

    • /dev/sdb3

      可用空间

/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
}

...

更新#1:

使用 thezfs=zroot/ROOT/default代替root=ZFS=zroot/ROOT/default按照Arch Linux 维基结果在精确的与上面相同的错误,仅适用于

ERROR: device '' not found. Skipping fsck.
no pools available to import 

更新#2:

所以 zpoolzroot存在,并且它可以找到它。是安装问题吗?是fstab的问题吗?我在这里缺少什么?

ERROR: device '' not found. Skipping fsck. 
no pools available to import 
ERROR: Failed to mount the real root device.
Bailing out, you are on your own. Good luck.

sh: can't access tty; job control turned off 
[rootfs ]# zfs list 
NAME                         USED      AVAIL       REFER      MOUNTPOINT 
zroot                        6.32G     443G        6.31G      legacy
zroot/ROOT                   192K      443G        96K        none 
zroot/ROOT/default           96K       443G        96K        none 
zroot/boot                   192K      443G        96K        legacy
zroot/boot/grub              96K       443G        96K        legacy
zroot/data                   192K      443G        96K        none 
zroot/data/home              96K       443G        96K        legacy
[rootfs ]# zpool status 
  pool: zroot
 state: ONLINE 
  scan: none requested 
config: 

        NAME                                                                          STATE     READ WRITE CKSUM
         zroot                                                                        ONLINE       0     0     0
           dm-uuid-CRYPT-LUKS2-12345abcde54321vwxyz-archcrypt1                        ONLINE       0     0     0
errors: No known data errors
[rootfs ]#

预先感谢您提供的任何帮助!

相关内容