我最近用 SSD 取代了笔记本电脑的 HDD,并决定更改并使用“全盘”加密。
我创建了一个小的未加密分区/boot
和一个大的加密 LUKS 分区,在其中我使用 LVM 在卷组中创建了 5 个逻辑卷:
- 一是安装 Fedora (
lv_fedora
)。 - 一个用于交换 (
lv_swap
)。 - 一个用于另一个 Linux 操作系统 (
lv_os2
)。 - 两个用于数据(
lv_data1
和lv_data2
)。
我安装了 Fedoralv_fedora
作为我的第一个操作系统,没有任何问题,并且可以从 GRUB 菜单启动它,但现在我不知道如何在加密磁盘中安装另一个基于 Linux 的操作系统(Linux Mint 17)并制作 Fedora 的 GRUB2检测它并启动该操作系统。
我尝试了两种不同的方法。在这两种情况下,我都启动了ubiquity
Linux Mint 安装程序,并带有--no-bootloader
选项来阻止 Mint 安装引导加载程序。在这两种情况下,为了开始安装,我之前都从 LinuxMint Live 映像的文件管理器中解锁了 LUKS 分区,以便能够选择相应的lv_os2
逻辑卷作为安装目标。现在:
/
首先,我尝试将 Linux Mint 安装在分配给in 的单个分区中lv_os2
。安装成功。在 Fedora 中,我执行了grub2-mkconfig -o /boot/grub/grub.cfg
更新 GRUB 条目(这就是我在使用非加密磁盘时一直在做的事情)。 GRUB 检测到 Linux Mint 存在并将相应的条目添加到启动菜单中。问题是我之后无法从这些条目启动。- 然后我想也许[1]这是因为内核映像
boot
在 Linux Mint 分区的文件夹中被加密。也许 GRUB 2 需要将这些文件放在未加密的分区中,就像我第一次安装 Fedora 时一样(我使用/boot
未加密的分区只是因为它是推荐的设置)。因此,这次我备份了 Fedora 的/boot
分区(以防万一)并重新安装了 Linux Mint,但使其也使用未加密的分区/boot
,以便可以将内核映像复制到该目录中,并且可能在安装后启动。安装成功,/boot
Linux Mint 添加的“额外”文件没有覆盖任何 Fedora 文件,所以至少 Fedora 可以工作,我不必使用 bakcup/boot
。然后我启动 Fedora 并grub2-mkconfig -o /boot/grub/grub.cfg
再次执行。这次情况更糟。 GRUB 混合了条目,例如为 Fedora(目标lv_fedora
)加载 Linux Mint 的内核映像创建条目。我尝试手动修改这些条目,但没有成功。
我敢打赌我做错了什么。有没有更好的方法将辅助 Linux 操作系统安装到已加密的卷中,并让主 Linux 操作系统处理引导加载程序? (更新其 GRUB 条目以允许从辅助操作系统引导)
[1]:正如你所看到的,我只是在尝试和学习,但对这个主题并没有深入的理解。
答案1
从我读到的所有内容来看,这似乎归结为将 initramfs“嵌入到内核中并在启动过程的早期阶段加载”。1
对于 Mint,您必须配置/etc/crypttab
,然后使用update-initramfs
。2
据我了解,这应该作为安装 Mint 后创建 initramfs 映像的指南,您似乎已经安装了 Mint。希望这涵盖了所有内容,但请务必亲自研究每个部分。
实时启动薄荷,mount
以及chroot
您安装 Mint 的分区。3
创建和配置 /etc/crypttab
在启动时解锁。4这是您添加安装 Mint 的 lvm 路径的位置,根据您的问题,该路径应位于/dev/mapper/lv_os2
或/dev/<big encrypted LUKS>/lv_os2
5
我见过的大多数例子/etc/crypttab
如下
root /dev/mapper/lv_os2 none luks
:这四个字段分别是:你选择的、安装Mint的lvm的路径、none
设置系统启动时手动输入的密码、luks
强制LUKS模式,但这似乎没有必要。
当选项字段中没有指定模式并且块设备包含LUKS签名时,它将作为LUKS设备打开;否则,假定为原始 dm-crypt(普通模式)格式。
配置 /etc/fstab
将/dev/mapper/<name>
您刚刚创建的目录挂载/etc/crypttab
为根目录/
。比如:
/dev/mapper/<name> / <fs_vfstype> <fs_mntops>
看man fstab
。
一旦你有 /etc/crypttab
并/etc/fstab
根据您的喜好进行配置,您可以用来update-initramfs
构建/更新启动映像。
看man update-initramfs
。最好使用uname -r
Mint 中显示的特定内核版本。该命令看起来应该类似于,update-initramfs -u -k 3.11.0-26-generic
只是用您自己的版本替换内核版本。
在此刻,您也许可以再次启动 Fedora 并尝试grub2-mkconfig -o /boot/grub/grub.cfg
之前检测到 Mint 的选项。如果这不起作用,请按照 GRUB 手册中的多重引导手动配置进行操作。6
特别是这部分:
在所有操作系统中都安装 GRUB 工具,但禁止在引导扇区中安装 GRUB,因此您可以使用 menu.lst 和 grub.cfg。还可以通过设置禁用 os-prober 使用:
GRUB_DISABLE_OS_PROBER=true
在
/etc/default/grub
希望这涵盖了启动 Mint 所需的大部分内容。
答案2
它并没有真正回答你的问题“如何”,但应该给你一些见解 - 而且对于评论来说太长了。
首先,您无法启动加密分区。原因很简单,因为启动链仅在该过程的后期才理解加密:
硬件加载固件 - 通常是 UEFI 的 BIOS(在 x86 平台上)。这样的硬件完全与数据无关——它只是加载在某些持久存储中(在预定义地址上)找到的任何内容。
固件加载引导加载程序或直接加载内核。与 CPU 一样,它对可能的加密模式一无所知(不是说它不能,而是通常不会)。
如果涉及引导加载程序,它会加载内核(或链式引导加载程序,例如启动 Windows 时),并且通常还会加载初始 ramdisk(可以位于独立文件中或嵌入到内核映像中)。这里变得更有趣了,因为例如 GRUB2 应该能够从 LUKS 设备启动,但文档似乎是相当稀缺。
内核挂载根文件系统并运行
init
(System V init、、、systemd
...OpenRC
选择upstart
很多)。如果使用初始 ramdisk 启动,它首先会扩展到内存中,然后安装并从那里运行 init 系统。 initramfs 应该包含挂载正确的根文件系统所需的所有内容 - 通常它包含每个可用的驱动程序(例如,当最终 rootfs 位于 RAID 设备上时必需的 RAID 驱动程序)、图形引导基础架构 - 这通常意味着最小(或不那么最小的)X11 堆栈 - 通常还有用于安装加密分区的工具。一切设置完毕后,最终 rootfs 挂载了 init 系统,从 initramfs 运行
pivot_root()
(请参阅pivot_root(8)
和pivot_root(2)
手册页了解更多详细信息),从而切换/
到正确的文件系统。
现在,启动加密卷的最简单方法通常是在步骤 5 中进行加密设置 - 主要是因为它是由将要运行的内核完成的,并且它可以使用任何像样的最新发行版提供的基础设施。
因此,您可能想了解 Fedora 和 Mint 究竟如何从加密卷启动。例如,您的问题的解决方案可能是为 Mint 内核创建适当的 initramfs 映像。您甚至可以为两个内核使用一个 initramfs,只要您确保根据启动的内核有条件地安装正确的 rootfs,尽管我不建议这样做,特别是如果您决定使用不同的(例如 stock ) 每个发行版的内核。
也就是说,您可能还需要考虑是否真的想要并行安装两个安装 - 运行一个虚拟化可能会更方便。