将 Ubuntu 22.04.2 LTS 全新安装到 LUKS 分区。当我启动时,它从不提示我输入 LUKS 密码,无法加载系统,而是让我进入命令提示符。如果我输入
cryptsetup open /dev/nvme0n1p6 nvme0n1p6_crypt
在此提示符下,输入我的密码,然后退出,系统将成功启动。因此,LUKS 设置正确,只是它没有提示我输入密码,而是让我手动输入。
我的系统建立在这教程。简而言之,/dev/nvme0n1p6 是一个 LUKS 分区,它应该映射到 /dev/mapper/nvme0n1p6_crypt,它对应于一个名为“treehouse-vg”的卷组,其中包含 treehouse--vg-swap_1(交换分区)和 treehouse--vg-root(挂载到 /)。
设备 nvme0n1 的 lsblk 输出:
nvme0n1
│ 259:0 0 476.9G 0 disk
├─nvme0n1p1
│ 259:1 0 100M 0 part /boot/efi
├─nvme0n1p2
│ 259:2 0 16M 0 part
├─nvme0n1p3
│ 259:3 0 166.5G 0 part
├─nvme0n1p4
│ 259:4 0 900M 0 part
├─nvme0n1p5
│ 259:5 0 1000M 0 part /boot
└─nvme0n1p6
259:6 0 308.5G 0 part
└─nvme0n1p6_crypt
253:0 0 308.5G 0 crypt
├─treehouse--vg-swap_1
│ 253:1 0 32G 0 lvm [SWAP]
└─treehouse--vg-root
253:2 0 276.5G 0 lvm /var/snap/firefox/common/host-hunspell
/
/etc/crypttab 的内容:
nvme0n1p6_crypt UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX none luks,discard
(UUID 是 blkid /dev/nvme0n1p6 的 UUID 输出)
然而,在编辑 crypttab 之后,当我尝试
$ sudo update-initramfs -k all -c
update-initramfs: Generating /boot/initrd.img-5.19.0-32-generic
cryptsetup: WARNING: target 'nvme0n1p6_crypt' not found in /etc/crypttab
I: The initramfs will attempt to resume from /dev/dm-1
I: (/dev/mapper/treehouse--vg-swap_1)
I: Set the RESUME variable to override this.
update-initramfs: Generating /boot/initrd.img-5.19.0-46-generic
cryptsetup: WARNING: target 'nvme0n1p6_crypt' not found in /etc/crypttab
I: The initramfs will attempt to resume from /dev/dm-1
I: (/dev/mapper/treehouse--vg-swap_1)
I: Set the RESUME variable to override this.
所以那里可能出了问题,但我不知道是什么。为什么它会警告我“nvme0n1p6_crypt”在 crypttab 中找不到,而这正是我在 crypttab 中输入的内容?
这是我的 /etc/fstab(我没有动过):
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/treehouse--vg-root / ext4 errors=remount-ro 0 1
# /boot was on /dev/nvme0n1p5 during installation
UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /boot ext4 defaults 0 2
# /boot/efi was on /dev/nvme0n1p1 during installation
UUID=XXXX-XXXX /boot/efi vfat umask=0077 0 1
/dev/mapper/treehouse--vg-swap_1 none swap sw 0 0
如果有帮助的话,以下是我在启动时收到的错误消息,以及我为继续启动所做的事情:
答案1
弄清楚了。确保 /etc/crypttab 文件末尾有一个换行符在您运行 update-initramfs -k all -c 之前。如果没有该换行符,cryptsetup 将会阻塞并忽略该行。
有趣的是,我以为几个小时前我试过了,但没有成功,但也许我当时忘了更新 initramfs 之类的。我只是在尝试为伪造的 crypt 设备在 crypttab 中添加第二行以查看会发生什么时偶然发现了这一点,结果第一行突然开始起作用了。