启动时无提示解密 luks 分区

启动时无提示解密 luks 分区

将 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 中添加第二行以查看会发生什么时偶然发现了这一点,结果第一行突然开始起作用了。

相关内容