![在三重启动系统的不同分区上安装 GRUB](https://linux22.com/image/973694/%E5%9C%A8%E4%B8%89%E9%87%8D%E5%90%AF%E5%8A%A8%E7%B3%BB%E7%BB%9F%E7%9A%84%E4%B8%8D%E5%90%8C%E5%88%86%E5%8C%BA%E4%B8%8A%E5%AE%89%E8%A3%85%20GRUB.png)
我有两个 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/sda1
grub-setup --force /dev/sda
答案1
Boot-Repair 是将 grub2 的引导加载程序(或 Windows)安装到 MBR 或进行修复的较简单的方法之一。适用于基于 BIOS 的系统,但 Boot-Repair 也适用于基于 UEFI 的系统。
https://help.ubuntu.com/community/Boot-Repair
但是如果您有多个驱动器,并且每个驱动器中都有不同的操作系统,最好不要使用自动修复。自动修复会将一个 grub 安装到每个 MBR。最好将每个操作系统及其引导加载程序放在单独的驱动器上,这样每个驱动器都可以独立启动。
使用高级选项,选择操作系统,并选择要安装引导加载程序的驱动器。
答案2
不要对 GRUB 有两个部分感到困惑,一个部分位于整个磁盘的主引导记录 (MBR) 中,另一个部分位于包含 GRUB 菜单的系统分区中。MBR 代码与包含菜单的分区相连。因此,您不仅可以将 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% 正确,所以如果这是你想做的,我或其他人都可以确认它是否会起作用。