如何避免 LVM-arch linux 中加密启动分区密码提示

如何避免 LVM-arch linux 中加密启动分区密码提示

我正在 Arch Linux 中使用 LVM。请参阅下面的磁盘结构。

NAME              MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda                 8:0    0   50G  0 disk  
|-sda1              8:1    0  512M  0 part  
| `-cryptboot     254:3    0  510M  0 crypt 
|   `-vgboot-boot 254:4    0  508M  0 lvm   /boot
`-sda2              8:2    0 49.5G  0 part  
  `-cryptlvm      254:0    0 49.5G  0 crypt 
    |-vgos-swap   254:1    0    4G  0 lvm   [SWAP]
    `-vgos-root   254:2    0 45.5G  0 lvm   /
sr0                11:0    1  560M  0 rom   

当我启动系统时,我会收到一个输入 Boot 分区密码的提示,因为它是加密的。但我想避免这个密码提示,而且我的 boot 分区应该驻留在 lvm 中。如果有人这样做了,请告诉我。

如果您看到上面的图表,我的根目录也位于 lvm 中。选择内核后,它还会提示输入密码。但这不是问题。

答案1

由于您的分区已加密,因此您会收到双重密码提示/boot。首先,GRUB 提示输入密码,因为它需要从加密中加载内核/boot。然后内核再次提示输入密码以解密/

有两种方法可以解决此问题:

  1. 不要使用加密/boot。GRUB 不会要求输入密码。这将允许任何人修改内核和 initramfs 文件。例如,有人可能会用恶意内核替换内核,/一旦您输入密码,该内核就会访问您的加密数据。

  2. 创建解密密钥并将其添加到 上的空闲 LUKS 插槽/,然后将该密钥嵌入 initramfs。这将允许内核/无需密码即可访问。

#2 的设置相当复杂,因此我将采用前一种方法。这是我凭空想出来的,没有经过任何测试。请备份并谨慎操作。我不对此过程造成的任何数据丢失和其他问题负责。

您需要一个带有cryptsetup和 的可启动 Linux 媒体resize2fs。我建议使用 Ubuntu 闪存驱动器。您也可以将后者替换为partclone。您还需要大约 500 MB 的可用磁盘空间来存储中间解密/boot映像。

从您的 Linux 媒体启动。访问 LVM(老实说,我从来没有处理过这个问题,所以我不知道是否需要任何额外的步骤 - Ubuntu 可能会自动处理这个问题)。打开加密的/boot

cryptsetup open /dev/<boot> cryptboot

制作未加密启动的映像:(要查看进度,请使用pv而不是cat

cat /dev/mapper/cryptboot > /media/ubuntu/<someExternalStorage>/boot.img

关闭/boot

sync
cryptsetup close cryptboot

将未加密的内容写入/boot分区并调整文件系统大小:

cat /media/ubuntu/<someExternalStorage>/boot.img > /dev/<boot>
resize2fs /dev/<boot>

获取 UUID /boot(记下来):

blkid /dev/<boot>

打开并挂载/、更新fstab

cryptsetup open /dev/<root> cryptroot
mkdir -p /mnt/root
mount /dev/mapper/cryptroot /mnt/root
cd /mnt/root
vi etc/fstab

调整挂载的行/boot以使用新的 UUID 而不是/dev/mapper/...条目。您可能还必须/boot从中删除行etc/crypttab

更新 initramfs (如果你的主操作系统是 Arch,这个可能会在 Ubuntu 中中断...我不确定,所以要小心):

cd /mnt/root
mount -t sysfs sysfs sys
mount -t tmpfs tmp tmp
mount -t proc proc proc
mount --bind /dev dev
mount /dev/<boot> boot
mount --bind /boot/efi boot/efi
chroot
update-initramfs -u -k all
exit

据我所记得,这应该足够了。您还可以通过禁用配置文件中的加密启动来简化 GRUB 配置。它可以稍微加快启动速度,但不是必需的。

自己清理一下:

umount boot/efi boot dev proc tmp sys
cd ..
umount root
cryptsetup close cryptroot

相关内容