我正在编写一个脚本,从 debootstrap 创建一个完全加密的可清洗系统。它做得很好,但是出来的initramfs图像没有正确地拾取 cryptroot。使用 qemu 启动映像后,我进入了一个 busybox shell,我必须使用cryptsetup以下命令手动解锁 luks 加密:
cryptsetup luksOpen /dev/sda1 system
/scripts/local-premount/flashback
exit
Run Code Online (Sandbox Code Playgroud)
(闪回做了一些 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
Run Code Online (Sandbox Code Playgroud)
我尝试了很多东西,我写了一个很好的 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/') …Run Code Online (Sandbox Code Playgroud)