分区调整大小后在 Mac 上进行 Grub 救援

分区调整大小后在 Mac 上进行 Grub 救援

好的,我已经阅读了一些关于该问题的帖子,但是要么是写这篇文章的人有双启动的 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。

另一种选择稍微复杂一些,也更有可能奏效,但仍然并非没有风险:

  1. 在 Linux 中,输入df /并记下与 关联的设备文件名/。它可能是/dev/sda3/dev/sda4或其他编号分区。
  2. 在 OS X 中,下载并安装重新索引
  3. 在 OS X 中,安装适用于 Linux 根 ( /) 文件系统(或/boot,如果是单独的)上所使用的任何文件系统的 EFI 文件系统驱动程序。rEFInd 附带 ext2/3fs、ext4fs 和 ReiserFS 驱动程序。您可以通过将文件系统驱动程序复制到rEFInd 安装目录(通常)的drivers或子目录中来安装它。drivers_x64/EFI/refind
  4. 重新启动。rEFInd 应该会出现。
  5. vmlinuz-{version}突出显示菜单上的一个选项,然后按 F2 或 Insert 两次。这将打开一个简单的行编辑器。
  6. 添加ro root=/dev/sda3到选项中,更改/dev/sda3为您在第一步中确定的分区。
  7. 按 Enter。Linux 应该会启动。
  8. 找到mkrlconf.shrEFInd 附带的脚本并运行它。这将创建一个名为 的文件/boot/refind_linux.conf,这样下次启动 Linux 时就无需添加内核选项(步骤 5-6);只需按 Enter 即可。

此过程绕过了 GRUB,从长远来看可能比 GRUB 更强大;但是,有些 Mac 在直接以 EFI 模式启动时工作不正常(此解决方案就是这样),因此可以想象这对您来说不是一个可接受的选择。如果是这样,您需要让 GRUB(或其他一些引导加载程序)的 BIOS 模式版本正常工作。您可能还需要清理启动菜单。请参阅 的 rEFInd 文档refind.conf,特别注意dont_scan_dirsdont_scan_filesscanfor选项,以了解如何执行此操作的详细信息。删除文件(例如 文件refit.efi)也可以解决问题。

相关内容