我选择在 2008 年的 MacBook 5,1 上进行三重启动,其中安装了 mac OSX 10.6.8、elementary OS 和 Windows 7 (64 位)。我最终还是这样做了,但对 GPT/MBR 会发生什么情况却知之甚少。
我遵循的安装过程非常复杂,涉及将驱动器交换到光驱托架和虚拟盒(安装顺序为 OS X、eOS、W7),但(幸运的是)最终结果是我现在有三个可通过 rEFInd 启动的正常运行的安装。
问题是 - 我不确定它是否能正常工作。在我安装 W7 之前,rEFInd 可以正确检测到 OS X 和 eOS grub 加载程序。在 W7 之后(以及随后重新安装 rEFInd 以纠正恶意启动),rEFInd 现在提供了许多菜单选项:
- Mac OS(正常运行)
- eOS(通过 EFI 存根加载器启动,在 W7 安装之前不存在,运行正常)
- 一个 Linux 条目(ext4 上的 eOS)(在 W7 之前用于通过 grub 启动到 eOS,现在选择此选项会由于某种原因启动到 W7?)
- W7 条目(正常工作)
最重要的是,为了让一切启动,我创建了一个混合 MBR,但我不确定我是否已正确设置它,因为 gdisk verify 提供了以下输出:
$ sudo gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.1
Partition table scan:
MBR: hybrid
BSD: not present
APM: not present
GPT: present
Found valid GPT with hybrid MBR; using GPT.
Command (? for help): v
Warning! Mismatched GPT and MBR partition! MBR partition 4, of type 0x0A,
has no corresponding GPT partition! You may continue, but this condition
might cause data loss in the future!
Identified 1 problems!
Command (? for help):
进入恢复菜单并输入 o 和 p 以获取 MBR 和 GPT 列出以下内容:
Recovery/transformation command (? for help): o
Disk size is 468862128 sectors (223.6 GiB)
MBR disk identifier: 0x4F5D06CB
MBR partitions:
Number Boot Start Sector End Sector Status Code
1 1 409639 primary 0xEE
2 409640 137128391 primary 0xAF
3 * 284540928 468860927 primary 0x07
4 137128392 284540927 primary 0x0A
Recovery/transformation command (? for help): p
Disk /dev/sda: 468862128 sectors, 223.6 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): AEF39373-7FA0-4FD9-A968-99C6D20E9C8C
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 468862094
Partitions will be aligned on 8-sector boundaries
Total free space is 2765 sectors (1.3 MiB)
Number Start (sector) End (sector) Size Code Name
1 40 409639 200.0 MiB EF00 EFI System Partition
2 409640 137128391 65.2 GiB AF00 Fry
3 137129984 266962943 61.9 GiB 8300
4 266962944 284540927 8.4 GiB 8200
5 284540928 468860927 87.9 GiB 0700 ROBOFRY
在哪里:
- GPT 1 是 MBR 1 下的 EFI
- GPT 2 是 MBR 2 下的 MacOS
- GPT 3 和 4 是 Linux eOS 和 swap 下的MBR 4
- GPT 5 是 W7 下的MBR 3
我的问题:
- 我是否意外破坏了我的 grub 引导加载程序,从而迫使 rEFInd 使用 EFI 存根加载程序?我该如何修复 rEFInd 中的 linux 菜单项,使其指向 grub 而不是 W7?
- 我的混合 MBR 设置正确吗?
- 编辑:我甚至需要使用混合 MBR 吗?
答案1
我是否真的需要使用混合 MBR?
是的,要启动 Windows 7,至少,如果您的安装都位于一个磁盘上。Windows 8 及更高版本通常可以在 Mac 上以 EFI 模式安装,但 Windows 7 几乎不可能以 EFI 模式安装。(我听说过成功的故事,但很难做到。)对于 Windows 7,在 BIOS/CSM/旧版模式下启动是在 Mac 上可靠执行的唯一方法,并且需要 MBR 或混合 MBR。如果您想从另一个物理磁盘启动 Windows 7,它可以是直接的 MBR 磁盘,而您的主磁盘可以是 GPT,但如果所有内容都在一个磁盘上,就像您的一样,那么您需要一个混合 MBR。
我的混合 MBR 设置正确吗?
这几乎是一个哲学问题,因为混合 MBR 违反了 GPT 规范,所以从某种意义上说,任何混合 MBR 是错误的。也就是说,您的混合 MBR 还可以,但不是最佳选择。实际上,这有两个部分:
gdisk
警告您 MBR 分区 #4 跨越两个 GPT 分区。这是 Apple 软件不会做的事情,如果其他操作混合 MBR 的工具不期望这样的配置,它可能会造成问题。(FWIW,我创建了gdisk
,我赋予它以这种方式设置的能力,以实现最大的灵活性;但这种灵活性能给人们带来麻烦。)您的配置有效,如果您理解它并在其上记录数据(如gdisk
您在此处显示的输出)以便您可以重新创建它,那么您应该可以接受它。- 您的 MBR 分区 #2 和 #4 分别涵盖 OS X 和 Linux,它们都不需要或使用混合分区;当显示混合 MBR 磁盘时,OS X 和 Linux 都会查看 GPT 侧。
第一个问题只是一种问题,但第二个问题提供了一种创建更清洁配置的可能方法:因为 Windows 是唯一具有需要混合分区的操作系统,并且因为它位于磁盘的末尾,所以你可以重新创建混合 MBR 来保存仅有的类型 0xEE 保护分区和 Windows 分区。在此配置中,类型 0xEE 保护分区将覆盖从扇区 1 到 OS X 和 Linux 分区。这比您现有的设置更干净,并且不太可能混淆其他工具。另一方面,现在更改设置可能会使 Windows 感到困惑。特别是,如果它的 MBR 分区从 #3 更改,Windows 可能无法启动。因此,如果您决定解决当前设置中的这一奇怪之处,则可能会出现严重问题。
我是否意外破坏了我的 grub 引导加载程序,从而迫使 rEFInd 使用 EFI 存根加载程序?我该如何修复 rEFInd 中的 linux 菜单项,使其指向 grub 而不是 W7?
这个比较难。据我了解,您有一个标识为“ext4 上的 eOS”的条目,它启动 Windows,但以前是通过 GRUB 启动 Linux。这听起来像是 ext4 分区上的 BIOS 模式引导加载程序。这应该是 GRUB,我怀疑它仍然是 GRUB,但 GRUB 配置已更改为链式加载到 Windows 而不显示 GRUB 菜单。如果是这样,请编辑 GRUB 配置文件 ( /boot/grub/grub.cfg
),直接编辑或(最好)使用 GRUB 的设置工具(update-grub
脚本或GRUB 定制器) 可能会带回 GRUB 菜单。
另一方面,可能是 rEFInd 的描述具有误导性,或者 Windows 引导加载程序以某种方式安装到了错误的分区。(也许 Windows 在您弄乱混合 MBR 设置时决定将其放在那里?)
由于存在不确定性,我不确定如何恢复 BIOS 模式 GRUB(如果是的话)的功能。我可以提供一些建议,但我担心我可能最终会给你一些建议,而这些建议最终会引发新的问题。
因此,我倾向于建议您忽略该条目,或者使用选项隐藏错误标记的dont_scan_volumes
条目refind.conf
,而是依靠 EFI 存根加载程序进入 Linux。如果您想要备份,安装 EFI 版本的 GRUB 可以提供这一点,但要注意的是,安装 GRUB 可能会导致启动政变您需要从中恢复过来。