我有带有全盘加密功能的笔记本电脑。有一个 /boot 分区未加密,另一个分区 /dev/sda5 已加密。
为了解密,它要求我提供密码,然后将其传递给命令 /sbin/cryptsetup luksOpen ${name} ${device}。
如果命令 /sbin/cryptsetup 位于无法访问的加密分区上,如何解密该分区。我想也许 /boot 分区中有该命令的副本,但我没有找到。
有人可以解释一下吗?
答案1
许多 Linux 发行版都使用内存中的文件系统作为临时根文件系统开机时。这种内存文件系统有两种形式:传统形式 initrd,它是 RAM 驱动器;而 initramfs,现代形式,它是由存档中的数据填充的文件系统。
initrd(或 initramfs,这里的区别无关紧要)上的程序的工作是执行挂载根文件系统所需的一切操作。这包括加载相关驱动程序的模块(硬盘、根文件系统类型以及任何其他数据层,例如 RAID 和卷加密)。这还包括使根卷可供使用。提示用户输入加密密码是这些任务之一。
initrd 与内核同时由引导加载程序(Grub、Lilo 等)加载。它通常存储在与内核相同的目录中,以/boot
.
大多数发行版都会在内核升级时重新生成 initrd。在其他情况下,您可能还需要重新生成 initrd,例如根文件系统位置或卷类型发生更改。如果根文件系统被加密,发行版将确保 initrd 包含cryptsetup
和crypttab
(这些是生成 initrd 时从根文件系统复制的副本)。