在三重引导系统的不同分区上安装 GRUB

und*_*012 7 grub2

我有两个 SSD。第一个有 Ubuntu 14.04 LTS 和 Windows 8.1 Pro。第二个安装了 Kali Linux。因为我在 Ubuntu 和 Windows 8.1 Pro 之后安装了 Kali Linux,它的引导程序现在正在使用中。问题是当我删除第二个 SSD 我无法在第一个 SSD 的操作系统上启动,因为 grub 找不到第二个 SSD,而是启动了 grub-rescue。是否有可能以某种方式使这个三重启动系统即使在第二个SSD不见了?

我试过grub-install /dev/sda1(sda1 是安装 Ubuntu 的分区)但我收到一个错误消息:

attempting to install grub to a partitionless disk or to a partition. this is a BAD IDEA.

我也试过grub-install /dev/sda没有给出任何错误或警告,但是当我通过删除第二个 SSD grub-rescue 来测试它时,出于上述相同的原因再次启动。

我试过grub-install --force /dev/sda, grub-install --force /dev/sda1, grub-setup /dev/sda, grub-setup /dev/sda1, grub-setup --force /dev/sda1grub-setup --force /dev/sda但没有运气。

Mar*_*ied 7

不要对 GRUB 有两个部分这一事实感到困惑,一个部分位于整个磁盘的主引导记录 (MBR) 中,另一部分位于具有 GRUB 菜单的系统分区中。MBR 代码通过菜单连接到分区。因此,您不仅要对分区执行 grub-install,还要对磁盘执行 grub-install。

现在,我不在 EFI 部分,因为我根本不运行 Windows,这对我来说不是问题。另外,我依赖于我之前做事的方式,但我希望我没有记错。希望这将有助于解释足够的事情,至少让您提出更具体的问题。

我认为您可能需要做的是将 GRUB 引导加载程序安装到两个驱动器的 MBR 中,然后从您的 BIOS 中选择要引导的驱动器。一个将调出菜单以在 Ubuntu 和 Windows 之间进行选择,另一个将启动到 Kali。如果您移除一个驱动器,另一个驱动器仍将启动。

我过去设置它的方法是从 liveCD 启动,例如 Ubuntu 的安装 CD。您要修改的磁盘需要自动或由您安装。如果您使用自动挂载,它可能会挂载在/media/UUID of disk. 然后,您发出这样的命令(假设目标磁盘是 sda,但您必须确定它是哪个。

sudo grub-install --root-directory=/media/(UUID or directory name) /dev/sda

您正在指定 grub 菜单所在的根目录 ( /boot/grub)。它应该有之前安装的菜单。一旦您可以启动,您就可以运行update-grub以重新生成菜单并允许访问所有可用的操作系统(如果两个磁盘都存在)。

由于两个原因,我没有详细介绍:1,我不知道您是否需要它,2,我不确定我的记忆是否 100% 正确,所以如果这是您想要做的,我或其他人都可以确认它会起作用。


old*_*red 7

引导修复是将 grub2 的引导加载程序(或 Windows)安装或修复到 MBR 的更简单方法之一。对于基于 BIOS 的系统,但引导修复也可以在基于 UEFI 的系统上工作。

https://help.ubuntu.com/community/Boot-Repair

但是,如果您有多个驱动器并且每个驱动器中有不同的操作系统,最好不要使用自动修复。自动修复将为每个 MBR 安装一个 grub。最好将每个操作系统及其引导加载程序保存在单独的驱动器上,这样每个驱动器都可以在没有其他驱动器的情况下启动。

使用高级选项,选择操作系统,然后选择要将引导加载程序安装到哪个驱动器。