我有一个“防弹”的 Arch Linux 安装,其结构如下:
/dev/sda1
:FAT32 EFI分区:挂载为/boot/efi/dev/sda2
:LUKS加密的ext4分区:挂载为/boot(提示密码)/dev/sda3
:加密交换分区/dev/sda4
:包含根文件系统的加密zpool(提示密码)
系统启动并运行,但某些功能无法正常工作。在启动时,systemd 抱怨加载周期错误,但真正的问题是我必须输入/dev/sda2
两次密码(一次用于 GRUB,一次用于 Linux)。我用了本指南设置一个密钥文件来解锁/dev/sda2
,但没有骰子,它仍然要求输入密码。
这是我的钩子顺序mkinitcpio.conf
:
base udev autodetect modcont block keyboard zfs encrypt filesystems
zfs
我尝试颠倒和的顺序encrypt
,但这产生了一个不同的问题,它不会设置我的交换分区(它也可能弄乱了 GRUB [我假设它无法挂载 /boot?],我不得不重新启动到archiso 来修复它)。无论如何它并没有解决我的问题,我仍然必须输入 /dev/sda2 的密码两次。
我的crypttab
:
cswap /dev/sda3 /dev/urandom swap,cipher=aes-cbc-essiv:sha256,size=256
我的内核参数在/etc/default/grub
:
GRUB_CMDLINE_LINUX="zfs=zroot/ROOT/default rw cryptdevice=/dev/sda2:cboot"
我的fstab
:
# Static information about the filesystems.
# See fstab(5) for details.
# <file system> <dir> <type> <options> <dump> <pass>
# /dev/mapper/cboot
/dev/mapper/cboot /boot ext4 rw,relatime 0 2
# /dev/sda1
UUID=CE42-9249 /boot/efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=re
mount-ro 0 2
# /dev/mapper/cswap
/dev/mapper/cswap none swap defaults 0 0
启动时,系统在要求/dev/sda2
我输入/dev/sda4
's 之前先要求我输入密码(即使我交换了 中的钩子顺序mkinitcpio.conf
)。
经过一些研究后,问题似乎是 ZFS 的 systemd 目标要求在执行任何操作之前解锁加密分区,但我不知道如何修复它。