几天来我一直在尝试让双启动正常工作。我安装了 rEFIT,然后安装了 Ubuntu,安装时我选择了将 grub 加载程序放在 ubuntu 分区上的选项。安装后,我在 rEFIT 加载程序中看不到 Ubuntu 的安装,也无法修复分区表。我启动 OS X 并从分区检查器获取输出,如下所示。
*** Report for internal hard disk ***
Current GPT partition table:
# Start LBA End LBA Type
1 409640 781659639 Mac OS X HFS+
2 781660160 970772479 EFI System (FAT)
3 970772480 976772479 Linux Swap
Current MBR partition table:
# A Start LBA End LBA Type
1 1 409639 ee EFI Protective
2 409640 781659639 af Mac OS X HFS+
3 * 781660160 970772479 83 Linux
4 970772480 976772479 82 Linux swap / Solaris
MBR contents:
Boot Code: None
Partition at LBA 409640:
Boot Code: None
File System: HFS Extended (HFS+)
Listed in GPT as partition 1, type Mac OS X HFS+
Listed in MBR as partition 2, type af Mac OS X HFS+
Partition at LBA 781660160:
Boot Code: None
File System: ext4
Listed in GPT as partition 2, type EFI System (FAT)
Listed in MBR as partition 3, type 83 Linux, active
Partition at LBA 970772480:
Boot Code: None
File System: Unknown
Listed in GPT as partition 3, type Linux Swap
Listed in MBR as partition 4, type 82 Linux swap / Solaris
有人知道我该如何修复这个问题吗?
答案1
首先,您的 GPT 布局似乎存在错误:从扇区 781660160 开始的分区在 GPT 端被标识为EFI 系统分区(ESP);但在 MBR 方面,它显示为具有 ext4 文件系统的 Linux 分区。鉴于此识别方式,我相信此分区上的 MBR 数据。您或安装程序可能错误地在分区上设置了“启动标志”。使用基于 libparted 的程序,在 GPT 分区上设置“启动标志”实际上会设置 ESP 类型代码,这应该绝不在 Linux 分区上设置。(ESP 需要保存 FAT 文件系统,并且应该保存 EFI 引导加载程序和相关文件,而不是 Linux 安装。)此错误不太可能导致您的问题,但可以想象它是一个促成因素。因此,我建议启动 Linux 应急系统并使用 GParted、、parted
或gdisk
其他工具适当调整类型代码。使用 GParted 或parted
从 Linux 分区中删除“启动标志”;或使用gdisk
将类型代码从 EF00 更改为 8300。请注意,这些工具可能会显示其他ESP,这个带有 FAT 文件系统。您应该将其配置为 ESP(带有其“启动标志”或 EF00 类型代码,具体取决于您使用的工具)。
其次,我建议你从 Linux 的 BIOS 模式启动切换到 EFI 模式启动。这样就无需使用混合型 MBR,您现在正在使用的。混合 MBR 是丑陋而危险的黑客。您可以毫不费力地安装合适的 EFI 模式引导加载程序。最简单的设置可能是我的rEFInd,这是 rEFIt(现已停产)的一个分支;但是,我将要描述的过程仅适用于 3.3.0 及更高版本的内核。Ubuntu 12.10 及更高版本,包括 Ubuntu 12.04.2(但不是原始的 12.04)都带有合适的内核。过程如下:
.zip
从其下载 rEFInd 二进制文件下载页面。- 在 OS X 下安装 rEFInd。使用
install.sh
脚本可以轻松完成。 - 安装 ext4fs 的 rEFInd 驱动程序。您可以通过将文件
ext4_x64.efi
从 rEFInd 包复制到/EFI/refind/drivers_x64/
目录(您必须创建)来执行此操作。(这假设您安装到默认位置;如果您将 rEFInd 安装到您的 ESP 或手动安装在其他地方,则需要适当调整路径。) - 重新启动。rEFInd 应该会出现。
- 在 rEFInd 中,使用箭头键选择其中一个 Linux 企鹅图标,rEFInd 应该将其识别为启动一个文件名以 开头的 Linux 内核
vmlinuz
。 - 选中其中一个 Linux 内核,按两次 F2 或 Insert。将出现一个文本模式的文本编辑器。
- 添加
ro root=/dev/sda2
到启动选项并按 Enter。Linux 应该会启动。 - 在 Linux 中,运行rEFInd 附带的脚本。这将创建一个配置文件,下次启动时
mkrlconf.sh
无需添加到 Linux 选项中;相反,当您选择其选项并按下 Enter 键时,Linux 应该会直接启动。ro root=/dev/sda2
此时,您的系统基本可以正常运行。您可以使用程序删除混合 MBR gdisk
(具体来说,键入x
,然后n
键入w
),或者使用 或 GParted 对分区进行任何细微更改parted
。您可能还想通过编辑 OS X 下的文件来调整 rEFInd 配置/EFI/refind/refind.conf
;有关详细信息,请参阅 rEFInd 文档。
答案2
您是否尝试过选项启动?为此,您可以在启动时按住选项并可能修复它。其次,您可能安装不正确。我这样做了 2 次,然后才意识到我犯了一个错误。
答案3
我遇到过类似的情况,但是当我安装rEFit.dmg
并安装后refind-bin
。当我输入sudo [PATH of refined-bin]
密码时,系统提示我(大致):
系统应该删除 bless 文件,因为它导致 rEFit 无法正常工作,您应该通过键入来删除它
y
。
我这样做了,问题解决了。