我把 Ubuntu 安装在外部硬盘上,并将其用作便携式安装,无论我去哪里都可以随身携带。
今天我在朋友的 iMac 上启动了它,然后软件更新程序要求我安装更新。所以我照做了。
因为那时我已经完成了,所以我关闭了电脑并拔下了外部硬盘。之后我立即重新启动了 iMac,以便它能够重新启动到 OSX。
令我震惊、恐惧和困惑的是,我看到了 GRUB 救援屏幕!
这怎么可能?Ubuntu 安装在外部硬盘上,而不是内部硬盘上!GRUB 怎么会出现在 iMac 的内部硬盘上?
更重要的是,我该如何解决这个问题?
答案1
(向下滚动查看实际修复)
因此事情比最初看上去的还要复杂。
为了保持与 MS-Windows 的兼容性,Apple 使用混合 UEFI 和传统 MBR 模式。显然,有一个 NVRAM 值可以告诉固件是否尝试以 UEFI 模式(OS-X)或传统 MBR 模式(Windows)启动。该值由您在“系统偏好设置 > 启动磁盘”中的选择控制。(不要问我为什么,问 Apple)
现在,为了从我的外部硬盘启动 Ubuntu,我首先从刻录了 rEFInd ISO 的 DVD 启动。(Option启动过程中按住按键时,使用 DVD 图标选择“EFI 启动”)。从该 DVD 启动后,我选择从 rEFInd 内部启动的外部硬盘。
事情从这里开始变得非常奇怪。在告诉 rEFInd 从外部硬盘启动后,紫色的 GRUB 屏幕从未出现(是的,我设置了延迟),而且,没有紫色圆点启动动画。相反,它是滚动的白色文本启动。
从启动之前仔细查看 rEFInd 来看,我发现 Ubuntu 选项实际上是加载特定的内核,而不仅仅是从磁盘启动。
这意味着,因为 rEFInd 显然是 EFI,并且它本质上作为 GRUB 的替代品,所以即使 Ubuntu 以 MBR 模式安装在外部硬盘上,它最终还是以 UEFI 模式启动。
这个事实非常重要,您马上就会明白为什么。
于是我让软件更新程序运行一些更新。查看日志,似乎该update-grub
命令是在安装过程中运行的。所有坏事都发生在这里。现在我还不知道到底发生了什么,但我最好的猜测是:grub 更新程序混淆了,因为 grub 是在 MBR 模式下安装的,但 Ubuntu 目前是在 UEFI 模式下启动的。由于混淆,以及根据您启动的模式,引导加载程序会安装到不同位置,grub 更新程序犯了一个大错误,将 grub 以 MBR 模式安装到内部硬盘上。
现在进行实际修复!
就我的情况而言,如果我Option在启动过程中按住该键并选择“Macintosh HD”,则 OS-X 分区仍然可以启动。
启动 OS-X 后,您需要打开“系统偏好设置”,然后转到“启动磁盘”。选择 OS-X 卷,点击“应用”或其他操作,重新启动,然后繁荣!出现了苹果标志!
现在,仅供参考,我认为虽然这解决了问题,但 GRUB 仍然驻留在扇区 0,但我不认为它在那里会造成任何损害,当然如果你在 Boot camp 中安装 Windows,也不会造成任何损害,因为 Windows 的引导加载程序会覆盖它