好的,我已经阅读了一些关于该问题的帖子,但是要么是写这篇文章的人有双启动的 Windows/Ubuntu,要么是我最终没有理解解决方案……无论如何,我只是太害怕在这个层面上做错事,所以情况是这样的:
发生了什么
我有一台安装了 rEFIt 的 iMac,并安装了 Ubuntu 12.04 的双启动系统。我使用 Mac,并决定为 Ubuntu 释放一些空间,所以我只是缩小了 Mac 分区,在最后切掉了 30Gb(可用空间),就这样,一切都很顺利。至少我是这样认为的。
目前的情况如何
现在我仍然可以在 Mac 上启动,但是当我尝试在 Ubuntu 上启动时,我得到了一个error: unknown filesystem
提示grub rescue>
。我按照我在论坛上看到的内容在 Ubuntu 上启动:
set root=(hd0,3)
set prefix=(hd0,3)/boot/grub
insmod normal
normal
这个方法很有效,但不是长久之计。我听说过 BootRepair,但我用的是 Mac,而且据我所知,这个软件的所有选项都是针对 MBR 的,而不是 EFI 的……
我的想法
据我所知,当我在 rEFIt 菜单中选择 linux 选项时,我需要告诉 EFI 在哪里“重定向引导加载程序”。我不能直接从 OSx 执行此操作吗?还是只是 grub 搞砸了?如果我必须使用 liveUSB,请向我解释该怎么做,就好像我很笨一样,我真的不想把事情搞得更糟…… :S
答案1
有许多可能的解决方案,但很难说哪种方法最有效,因为不清楚 Linux 是如何安装的(BIOS 模式还是 EFI 模式),尽管我猜你已经采用了 BIOS 模式安装。
一种可能的快速修复方法是在 Ubuntu 中运行update-grub
。如果成功,这将更新 GRUB 文件,从而恢复其正常功能。但如果不成功,这可能会使情况变得更糟,可能导致无法以您现在的方式启动 Linux。
另一种选择稍微复杂一些,也更有可能奏效,但仍然并非没有风险:
- 在 Linux 中,输入
df /
并记下与 关联的设备文件名/
。它可能是/dev/sda3
、/dev/sda4
或其他编号分区。 - 在 OS X 中,下载并安装重新索引。
- 在 OS X 中,安装适用于 Linux 根 (
/
) 文件系统(或/boot
,如果是单独的)上所使用的任何文件系统的 EFI 文件系统驱动程序。rEFInd 附带 ext2/3fs、ext4fs 和 ReiserFS 驱动程序。您可以通过将文件系统驱动程序复制到rEFInd 安装目录(通常)的drivers
或子目录中来安装它。drivers_x64
/EFI/refind
- 重新启动。rEFInd 应该会出现。
vmlinuz-{version}
突出显示菜单上的一个选项,然后按 F2 或 Insert 两次。这将打开一个简单的行编辑器。- 添加
ro root=/dev/sda3
到选项中,更改/dev/sda3
为您在第一步中确定的分区。 - 按 Enter。Linux 应该会启动。
- 找到
mkrlconf.sh
rEFInd 附带的脚本并运行它。这将创建一个名为 的文件/boot/refind_linux.conf
,这样下次启动 Linux 时就无需添加内核选项(步骤 5-6);只需按 Enter 即可。
此过程绕过了 GRUB,从长远来看可能比 GRUB 更强大;但是,有些 Mac 在直接以 EFI 模式启动时工作不正常(此解决方案就是这样),因此可以想象这对您来说不是一个可接受的选择。如果是这样,您需要让 GRUB(或其他一些引导加载程序)的 BIOS 模式版本正常工作。您可能还需要清理启动菜单。请参阅 的 rEFInd 文档refind.conf
,特别注意dont_scan_dirs
、dont_scan_files
和scanfor
选项,以了解如何执行此操作的详细信息。删除文件(例如 文件refit.efi
)也可以解决问题。