我在 2TB 驱动器上安装了三个 Linux。此外,我还有两个承载公共数据的分区,以及三个交换分区。
在出现某种故障且恢复有限后,只能成功启动 grb2 菜单中的一个选项,其余选项会产生内核恐慌。我可以通过运行 rescatux 并选择不同的一个来更改哪个可以启动。其余部分将变得无法启动!
如何探究问题出在哪里以及如何解决?
答案1
一般来说,Linux 引导加载程序的工作是将三样东西从磁盘传输到 RAM:
- Linux 内核文件
- initrd/initramfs 文件(这可以是可选的)
- 引导选项,通常指定根文件系统。
由于您安装了三个 Linux,因此您可能拥有三个独立的根文件系统:每个安装前都有一个。每个安装也可能有/boot
一个单独的文件系统,或者根文件系统的子目录。其中每个都包含一个 GRUB2 引导加载程序配置文件,其中包含该特定 Linux 版本的正确引导设置。 Rescatux 可能只是选择一个安装并使用其 GRUB2 配置文件将 GRUB 重新写入磁盘的主引导记录(或者写入 EFI 系统分区,如果您在本机模式下使用 UEFI,而不是旧版 BIOS)。
您应该选择您的 Linux 之一作为引导加载程序的“主要”维护者,因为在同一磁盘上拥有多个 GRUB2 引导加载程序实际上是行不通的。理想情况下,这将是您安装的最新 Linux 发行版,因为它最有可能在 GRUB2 中内置最好的文件系统类型支持。
一旦“主要”Linux 发行版可启动,您应该手动挂载其他发行版的文件系统并找到它们的 GRUB 配置文件。阅读它们,了解其他发行版的 GRUB 在哪里加载其内核和 initramfs 文件,以及它们使用哪些引导选项。现在,您已拥有将其他发行版添加到“主要”Linux 安装的启动菜单中所需的所有信息。如果菜单项已经存在,您现在可以检查它们是否有不正确的路径、语法错误或错误的引导选项。
一旦您设法使主安装的 GRUB 成功引导其他 Linux 安装,您可能会考虑卸载来自非主安装的 GRUB 软件包。这样,在将更新安装到非主安装之一时,您就不会意外覆盖主安装的 GRUB。
另一方面,除非您能找到一种方法,使非主安装的最新内核和 initramfs 文件保持不变的文件名,否则每次您都必须手动更新主安装的 GRUB 配置。在非主要安装之一上安装新的内核软件包。