我正在研究一个从 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