在加密磁盘中安装其他Linux

在加密磁盘中安装其他Linux

我最近用 SSD 取代了笔记本电脑的 HDD,并决定更改并使用“全盘”加密。

我创建了一个小的未加密分区/boot和一个大的加密 LUKS 分区,在其中我使用 LVM 在卷组中创建了 5 个逻辑卷:

  • 一是安装 Fedora ( lv_fedora)。
  • 一个用于交换 ( lv_swap)。
  • 一个用于另一个 Linux 操作系统 ( lv_os2)。
  • 两个用于数据(lv_data1lv_data2)。

我安装了 Fedoralv_fedora作为我的第一个操作系统,没有任何问题,并且可以从 GRUB 菜单启动它,但现在我不知道如何在加密磁盘中安装另一个基于 Linux 的操作系统(Linux Mint 17)并制作 Fedora 的 GRUB2检测它并启动该操作系统。

我尝试了两种不同的方法。在这两种情况下,我都启动了ubiquityLinux 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,以便可以将内核映像复制到该目录中,并且可能在安装后启动。安装成功,/bootLinux 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-initramfs2

据我了解,这应该作为安装 Mint 后创建 initramfs 映像的指南,您似乎已经安装了 Mint。希望这涵盖了所有内容,但请务必亲自研究每个部分。

实时启动薄荷mount以及chroot您安装 Mint 的分区。3

创建和配置 /etc/crypttab在启动时解锁。4这是您添加安装 Mint 的 lvm 路径的位置,根据您的问题,该路径应位于/dev/mapper/lv_os2/dev/<big encrypted LUKS>/lv_os25

我见过的大多数例子/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 -rMint 中显示的特定内核版本。该命令看起来应该类似于,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

它并没有真正回答你的问题“如何”,但应该给你一些见解 - 而且对于评论来说太长了。

首先,您无法启动加密分区。原因很简单,因为启动链仅在该过程的后期才理解加密:

  1. 硬件加载固件 - 通常是 UEFI 的 BIOS(在 x86 平台上)。这样的硬件完全与数据无关——它只是加载在某些持久存储中(在预定义地址上)找到的任何内容。

  2. 固件加载引导加载程序或直接加载内核。与 CPU 一样,它对可能的加密模式一无所知(不是说它不能,而是通常不会)。

  3. 如果涉及引导加载程序,它会加载内核(或链式引导加载程序,例如启动 Windows 时),并且通常还会加载初始 ramdisk(可以位于独立文件中或嵌入到内核映像中)。这里变得更有趣了,因为例如 GRUB2 应该能够从 LUKS 设备启动,但文档似乎是相当稀缺

  4. 内核挂载根文件系统并运行init(System V init、、、systemd...OpenRC选择upstart很多)。

  5. 如果使用初始 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 ) 每个发行版的内核。

也就是说,您可能还需要考虑是否真的想要并行安装两个安装 - 运行一个虚拟化可能会更方便。

相关内容