全加密系统 debootstrap chroot 中的 Initramfs

全加密系统 debootstrap chroot 中的 Initramfs

我正在研究一个从 debootstrap 创建完全加密的可清洗系统的脚本。它确实有一些好处,但是initramfs出来的图像没有正确地获取密码根。使用 qemu 启动映像后,我会进入 busybox shell,并且必须使用以下命令手动解锁 luks 加密cryptsetup

cryptsetup luksOpen /dev/sda1 system
/scripts/local-premount/flashback
exit

(闪回会执行一些 btrfs 快照魔法来忘记每次启动时所做的更改)

之后,qemu 中的启动会正常继续,然后我就能够生成良好的initramfs映像。我将其复制到 btrfs @root.base 子卷,从那时起一切都很好。

我需要帮助弄清楚为什么 cryptsetup/cryptroot 部分没有在 chroot 环境中被拾取update-initramfs

echo "CRYPTSETUP=y" >> /usr/share/initramfs-tools/conf-hooks.d/cryptsetup
echo "export CRYPTSETUP=y" >> /usr/share/initramfs-tools/conf-hooks.d/cryptsetup
update-initramfs -ut

我尝试了很多东西,我写了一个很好的 fstab 和 crypttab,甚至尝试在 grub.cfg 中显式设置 cryptdevice。具体版本请参考脚本

以下是我创建 fstab 和 crypttab 的方法:

export partuuid=$(blkid $partition | sed -re 's/.*: UUID="([^"]+)".*/\1/')
export decruuid=$(blkid /dev/mapper/$decrypted | sed -re 's/.*: UUID="([^"]+)".*/\1/')
echo "Adding flashback with uuid $partuuid"
echo "system UUID=$partuuid none luks" >> "$rootmount/etc/crypttab"
echo "UUID=$decruuid / btrfs [email protected] 0 0" >> "$rootmount/etc/fstab"
echo "UUID=$decruuid /home btrfs subvol=@home 0 0" >> "$rootmount/etc/fstab"

原则上的问题是:如何在加密的已卸载的 Debian 的 chroot?

非常感谢

答案1

/etc/initramfs-tools/conf.d/cryptsetup在拉伸中不推荐使用。

新的首选方法是设置"CRYPTSETUP=y"/etc/cryptsetup-initramfs/conf-hook.

在buster及更高版本中,此配置参数似乎是多余的,因为默认行为似乎是在安装了initramfs-cryptsetup包的情况下在initramfs中配置cryptsetup。

答案2

即使 crypttab 为空,这也始终有效:

echo 'export CRYPTSETUP=y' > /etc/initramfs-tools/conf.d/cryptsetup

或者,您可以将其添加到 /etc/environment:

CRYPTSETUP=y

相关内容