如何使用 grub-install 命令在 Macbook Pro 上安装 Grub2,而不会出现有关需要使用 --force 的“阻止列表”的警告?

如何使用 grub-install 命令在 Macbook Pro 上安装 Grub2,而不会出现有关需要使用 --force 的“阻止列表”的警告?

我有一台 Macbook Pro 5.2,在系统更新后,我偶尔会遇到必须重新安装 GRUB 的问题。这种情况在 Ubuntu 的几个最新版本中都发生过,尽管我没有确切的记录。

偶尔,在使用更新管理器更新系统后,我无法再启动 Ubuntu,除非我手动修复 GRUB 安装。为此,我遵循以下步骤:

https://help.ubuntu.com/community/Grub2#Reinstalling_GRUB2

按照 ChRoot 下的说明操作。这总是可以重新安装东西,但你可以想象,这不是我最喜欢做的事情,而且每次都要花大约半个小时。

我在尝试遵循这些说明时遇到的一个问题是,当我到达应该运行的步骤 #11 时grub-install /dev/sda,它总是告诉我无法执行该命令,因为它必须使用本质上不稳定的“阻止列表”,而继续的唯一方法是使用--forcegrub-install 上的选项。因此,我使用该--force选项并确实安装了它,但事实是它没有按照说明进行,这让我担心这也许是警告告诉我的不稳定的根源。但它不允许我以任何其他方式重新安装它。

作为背景信息,我可能会提到我在 Mac 端安装了 Refit,以防这是问题的根源,因为它与 Grub 在引导扇区或类似问题上发生冲突或争斗。我也无法从 Grub 启动 OS/X,即使它在 Grub 启动菜单上。如果我选​​择它,它只是挂起并且什么也不做。为了启动 OS/XI,必须使用 Mac 上的硬件支持,方法是在启动时按下选项键,然后选择 OS/X 分区,然后通过 Refit 启动。相反,我无法通过 Refit 启动 Ubuntu,即使该分区显示在 Refit 菜单上(作为 Windows 分区,因为我认为 Refit 假设任何不是 OS/X 的东西都是“Windows”)。最后,这是sudo fdisk -l我的系统的输出:

WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util 
fdisk doesn't support GPT. Use GNU Parted.

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000001

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          26      204819+  ee  GPT
/dev/sda2   *          26       12972   103986412   af  HFS / HFS+
/dev/sda3           12972       25767   102782192   83  Linux
/dev/sda4           25768       59272   269128912   83  Linux

OSX 安装在 sda2 上。Linux 根安装在 sda3 上,我的 /home 文件夹安装在 sda4 上。整个 Macbook Pro 双启动过程对我来说有点神秘,所以我尽可能多地提供一些信息,以防万一有用。在此先感谢您的帮助。

答案1

我的第一反应是注意到你正在使用混合型 MBR,这是 Apple 用来简化 OS X 双启动的丑陋且危险的黑客手段。您的 fdisk 输出仅显示混合 MBR 的 MBR 端,但 OS X 和 Linux 都忽略了这一点,而更倾向于 GPT 端。要显示 GPT 分区,您需要使用 parted、gdisk 或其他支持 GPT 的实用程序。

其次,“阻止列表”错误表明您已在 BIOS 模式下启动(使用 Apple 为 Windows 创建的兼容系统),但您的 GPT 不包含BIOS 启动分区,GRUB 2 在 GPT 磁盘上使用它来存储其 BIOS 模式引导加载程序的一部分。解决此错误的一种方法是调整您的分区,以便您拥有 BIOS 引导分区。这可能相对容易完成,但这种改变可能会带来意想不到的后果。特别是,如果您需要使用 GParted 调整任何分区的大小,它可能会清除混合 MBR,这将阻止系统在其当前配置中启动 Linux,因为混合 MBR 是激活 Mac 的 BIOS 兼容模式的。可以通过创建新的混合 MBR 来纠正此问题。

由于您似乎没有 Windows,您可能需要研究以 EFI 模式启动 Linux,这将消除对 BIOS 兼容层和混合 MBR 的需求。我有一个关于如何执行此操作的网页:http://www.rodsbooks.com/ubuntu-efi/index.html简而言之,从正常运行的 Ubuntu 安装开始,过程是卸载 grub-pc,然后安装和配置 grub-efi 或其他支持 EFI 的引导加载程序。不过,这种方法也有缺点。特别是,在某些系统上,某些硬件(可能包括视频硬件)可能无法激活,在极端情况下,这会导致系统无法使用。

顺便说一句,rEFIt 不太可能成为问题;它是一个 EFI 模式启动管理器,不会与 BIOS 模式启动程序冲突。不过,rEFIt 似乎已被废弃。我的 fork,rEFInd,开始开发、添加功能和修复错误。它有一些选项对于启动 Linux 特别有用,但其中一些选项仅适用于 3.3.0 或更高版本的内核,而 Ubuntu 尚未提供该版本。

相关内容