我目前正在尝试在普通模式下使用 dm-crypt 实现全磁盘加密,无需 LUKS 标头,并/boot
在 USB 记忆棒上单独使用。
我的主要目标是在基于 Debian 的发行版上实现合理的否认性。目前,我已成功使用单独的 USB 密钥加密分区cryptsetup
并将分区安装到该分区。/boot
一切都按预期进行,因为加密标头没有存储在 LUKS 中,所以我需要在 initramfs 屏幕上手动输入它,但在这一步我只是收到一个错误,表明 initramfs 中没有 cryptsetup ("/bin/ sh: cryptsetup: not found") 在尝试解析标头时。
综上所述:
dev/sda
使用dm-crypt
(/root
和/home
卷)加密:
cryptsetup --hash=sha512 --cipher=twofish-xts-plain64 create crypt /dev/sda
dev/sdb
安装了 grub 的引导棒
我可以从启动棒成功启动。我看到 Ubuntu 启动画面大约 20 秒,这正是我想要实现的看似合理的推诿,然后它下降到 initramfs 抱怨无法找到/dev/mapper/root
— 这也是我想要实现的。
问题是,当我想解析允许我输入密码并继续启动的 cryptsetup 行时,initramfs 会抱怨“cryptsetup:未找到”。
我想这个投诉是真的。我的问题是:如何将 cryptsetup 安装到 initramfs 中,以便进一步启动密码提示?
另外,我知道我在添加适当的条目时遗漏了一些内容/etc/fstab
,/etc/crypttab
并且在启动过程中找不到设备。
这些是我找到并用于设置所有当前配置的指南,也许这会清除我的问题中未涵盖的内容:
- http://and1equals1.blogspot.ro/2009/10/encrypting-your-hdd-with-plausible.html
- https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_an_entire_system#Plain_dm-crypt
第一个有点过时,第二个适用于 Arch Linux,但我在最新的 Lubuntu 安装中使用了其中两个,几乎没有进行任何调整。
答案1
根据initramfs-工具(8),可以通过将以下内容添加到 initrd 映像来将程序添加到钩子脚本:
copy_exec /sbin/cryptsetup /sbin
示例挂钩脚本可以在/usr/share/initramfs-tools/hooks
我的 Ubuntu 系统中找到,/usr/share/initramfs-tools/hooks/cryptroot
确实添加到了映像/sbin/cryptsetup
中initrd
。
例子:
$ gzip -dc /boot/initrd.img-`uname -r` | cpio -tv 2>/dev/null | cpio -tv 2>/dev/null | grep 密码设置 => 尚未包含 cryptsetup。 $ cat /etc/initramfs-tools/hooks/fde #!/bin/sh 。 /usr/share/initramfs-tools/hook-functions copy_exec /sbin/cryptsetup /sbin $ sudo chmod 0755 /etc/initramfs-tools/hooks/fde $ sudo update-initramfs -u $ gzip -dc /boot/initrd.img-`uname -r` | cpio -tv 2>/dev/null | cpio -tv 2>/dev/null | grep 密码设置 -rwxr-xr-x 1 root root 59248 八月 21 04:04 sbin/cryptsetup -rw-r--r-- 1 root root 158848 八月 21 04:04 lib/x86_64-linux-gnu/libcryptsetup.so.4