我有两个 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
但没有运气。
不要对 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% 正确的,所以如果这是你想做的,我或其他人都可以确认它会起作用。
引导修复是将 grub2 的引导加载程序(或 Windows)安装或修复安装到 MBR 的更简单方法之一。对于基于 BIOS 的系统,但引导修复也可以在基于 UEFI 的系统上工作。
https://help.ubuntu.com/community/Boot-Repair
但是,如果您有多个驱动器并且每个驱动器中有不同的操作系统,最好不要使用自动修复。Auto-Repair 将为每个 MBR 安装一个 grub。最好将每个操作系统及其引导加载程序保存在不同的驱动器上,这样每个驱动器都可以在没有另一个驱动器的情况下启动。
使用高级选项,选择操作系统,然后选择要将引导加载程序安装到哪个驱动器。