Mac OS X 更新后出现 GRUB 2 问题

Mac OS X 更新后出现 GRUB 2 问题

我有一个MacBook Pro在双启动 Mac OS X / Ubuntu 12.04 (Precise Pangolin) 中。当我启动它时,我有一个改装菜单,我可以在 Mac OS X 和 Linux 之间进行选择。几天前,我使用公司提供的 .dmg 映像将 Mac OS X 从 10.7 (Lion) 更新到了 10.8 (Mountain Lion)。从那时起,当我在 rEFIt 中选择 Linux 时,它显示:

没有可启动设备--插入启动盘并按任意键

  1. 我尝试使用 rEFIt 分区工具。结果如下:

在此处输入图片描述

正如建议的那样Mac OSX 更新导致 Ubuntu 无法启动 我想以与 AndrewM 相同的方式修复该问题,但我没有“必须更新 MBR 表”选项。

  1. 然后我启动了 Ubuntu 12.04 CD,选择修复损坏的系统,选择根分区,/dev/sda6因为这是我的 Ubuntu 文件系统所在的位置。我得到了一个 shell,但我真的不知道如何修复这个问题,因为如果它只是 Windows 双启动。GRUB更新可以解决问题,但我不知道 GRUB 2 安装在哪里。

以下是结果分开,这对我来说有点令人困惑,因为 Mac 分区是带有启动的分区:

在此处输入图片描述

如你所见,条目 1 是电喷系统分区是启动分区,所以我想知道我是否应该在那里安装 GRUB 还是在 sda6(即 Ubuntu 文件系统)中安装 GRUB。

我不确定我应该在 rEFIt shell 还是 Ubuntu 上工作。不幸的是,我不记得更新之前 GRUB 在哪里。

更新:使用上面相同的链接我已经尝试了 RoundSparrow hilltx 答案并安装了重新索引,但结果是一样的......当我选择 Linux 时仍然没有可启动设备。

更新 2:刚刚再次使用了备用 CD,将其安装在 /dev/sda6 上并运行 update-grub。它似乎正常工作并开始列出我的所有内核。但重启几次后,当我在 rEFInd 中选择 Linux 时仍然没有可启动设备。

更新 3:尝试从 Ubuntu CD 启动并选择“从第一个可用文件系统启动”。我收到错误并进入 grub 救援 shell。我甚至按照此关联但我尝试使用 sdb6 却无法启动,没有成功

更新 4 根据 Rob Smith 的要求,以下是ls -l $(find /EFI -iname "*.efi")

*苹果电脑

-rw-r--r--@ 1 root  admin    55048 29 oct 17:44 /EFI/refind/drivers_x64/btrfs_x64.efi
-rw-r--r--@ 1 root  admin    38888 29 oct 17:44 /EFI/refind/drivers_x64/ext2_x64.efi
-rw-r--r--@ 1 root  admin    39304 29 oct 17:44 /EFI/refind/drivers_x64/ext4_x64.efi
-rw-r--r--@ 1 root  admin    43432 29 oct 17:44 /EFI/refind/drivers_x64/hfs_x64.efi
-rw-r--r--@ 1 root  admin    38984 29 oct 17:44 /EFI/refind/drivers_x64/iso9660_x64.efi
-rw-r--r--@ 1 root  admin    43656 29 oct 17:44 /EFI/refind/drivers_x64/reiserfs_x64.efi
-rw-r--r--@ 1 root  admin   175016 29 oct 17:44 /EFI/refind/refind_x64.efi
-rw-rw-r--  1 root  admin    73232  7 mar  2010 /EFI/tools/dbounce.efi
-rw-rw-r--  1 root  admin   763248  7 mar  2010 /EFI/tools/dhclient.efi
-rw-rw-r--  1 root  admin    67024  7 mar  2010 /EFI/tools/drawbox.efi
-rw-rw-r--  1 root  admin    71312  7 mar  2010 /EFI/tools/dumpfv.efi
-rw-rw-r--  1 root  admin    84848  7 mar  2010 /EFI/tools/dumpprot.efi
-rw-rw-r--  1 root  admin   472912  7 mar  2010 /EFI/tools/ed.efi
-rw-rw-r--  1 root  admin   143856  7 mar  2010 /EFI/tools/edit.efi
-rw-rw-r--  1 root  admin  1801008  7 mar  2010 /EFI/tools/ftp.efi
-rw-r--r--@ 1 root  admin    47848 29 oct 17:44 /EFI/tools/gptsync_x64.efi
-rw-rw-r--  1 root  admin   320560  7 mar  2010 /EFI/tools/hexdump.efi
-rw-rw-r--  1 root  admin   286384  7 mar  2010 /EFI/tools/hostname.efi
-rw-rw-r--  1 root  admin   534416  7 mar  2010 /EFI/tools/ifconfig.efi
-rw-rw-r--  1 root  admin   395344  7 mar  2010 /EFI/tools/loadarg.efi
-rw-rw-r--  1 root  admin   587408  7 mar  2010 /EFI/tools/ping.efi
-rw-rw-r--  1 root  admin   730416  7 mar  2010 /EFI/tools/pppd.efi
-rw-rw-r--  1 root  admin   561360  7 mar  2010 /EFI/tools/route.efi
-rw-rw-r--  1 root  admin  1961712  7 mar  2010 /EFI/tools/shell.efi 
-rw-rw-r--  1 root  admin   750224  7 mar  2010 /EFI/tools/tcpipv4.efi
-rw-rw-r--  1 root  admin     4048  7 mar  2010 /EFI/tools/textmode.efi
-rw-rw-r--  1 root  admin   320656  7 mar  2010 /EFI/tools/which.efi

*Linux

由于 Ubuntu 12.04 分区不可启动,我不得不在 Live CD 上启动,因此一开始您的命令不起作用:

$ ls -l /boot/vmlinuz*
$ ls: cannot access /boot/vmlinuz*: No such file or directory

所以我决定挂载我的文件系统:

sudo mkdir /media/sda6
sudo mount -t ext4 -r /dev/sda6 /media/sda6
cd /media/sda6/
sudo ls -l boot/vmlinuz*

-rw-r--r-- 1 root root 4965840 Apr 25  2012 boot/vmlinuz-3.2.0-23-generic
-rw------- 1 root root 4965968 May 21  2012 boot/vmlinuz-3.2.0-24-generic
-rw------- 1 root root 4974672 Mar 25  2013 boot/vmlinuz-3.2.0-40-generic
-rw------- 1 root root 4978416 Jun  6 20:24 boot/vmlinuz-3.2.0-48-generic
-rw------- 1 root root 4978416 Jun 18 18:20 boot/vmlinuz-3.2.0-49-generic
-rw------- 1 root root 4978960 Jul 24 20:59 boot/vmlinuz-3.2.0-51-generic
-rw------- 1 root root 4980336 Aug 22 21:41 boot/vmlinuz-3.2.0-53-generic

答案1

如果您严格遵循 RoundSparrow hilltx 的说明,包括使用选项--alldriversinstall.sh您应该会在 rEFInd 中看到一个或多个新选项,其描述包括字符串。这些新条目应该可以启动 Linux。如果可以,您可以通过编辑、取消注释该行并确保 来删除vmlinuz不起作用的 Linux 条目/EFI/refind/refind.confscanforhdbios不是在选项之中。

如果你这样做不是使用该--alldrivers选项,或者如果您没有看到条目vmlinuz,则应尝试安装 rEFInd 附带的 ext4fs 驱动程序。假设您使用了默认的 rEFInd 安装选项,则需要/EFI/refind/drivers在 OS X 中创建目录,然后将适合您的体系结构(X64 或 IA32)的 ext4fs 驱动程序复制到该目录。重新启动时,您应该会看到一个新的 Linux 选项,其名称包含vmlinuz。这应该可以正确启动。


编辑:您能否执行以下操作并发布结果(编辑您的原始帖子以执行此操作):

  1. 在 OS X 中,ls -l $(find /EFI -iname "*.efi")在此处输入并发布结果。(假设您使用默认选项在 OS X 下安装了 rEFInd;如果您将其安装到 ESP,请将其安装并调整从/EFIESP 的安装点到 ESP 的路径。)
  2. 在 Linux 中,ls -l /boot/vmlinuz*在此处输入并发布结果。
  3. 检查refind.conf文件中是否存在以下行scan_all_linux_kernels现在,并且不是(被主角)注释掉了#

您还可以尝试修复以下问题,让 BIOS 模式启动再次正常工作:混合型MBR和/或通过重新安装 GRUB;但是,混合 MBR 既丑陋又危险,所以这不是我推荐的方法。如果您确实要走这条路,请尝试使用gptsync来自 rEFInd 的程序,而不是来自 rEFIt 的程序。后者对您来说失败了,但 rEFInd 可能会起作用;或者您可以使用gdisk它来完成这项工作,如我在本段前面链接的页面上所述。


编辑2:你的内核都是 3.2.x 版本,早于EFI 存根加载器。这意味着它们无法直接与 rEFInd 配合使用。广义上讲,有两种方法可以解决这个问题:

  • 添加另一个 EFI 引导加载程序,例如 ELILO 或 EFI 版本的 GRUB 2,以引导您现有的 3.2.x 内核。这相当容易做到如果您知道如何操作,但大多数用户并不熟悉此过程。请参阅我关于该主题的页面了解背景和一般说明。请注意,这些说明假设您已经安装了 Linux;您可能需要使用 Live CD 来安装。此外,您还需要不是运行efibootmgr以将引导加载程序注册到固件中;只需将其文件复制到位并设置其配置文件即可。此后,rEFInd 应该会检测到您安装的任何内容并允许您启动它。
  • 升级内核到 3.3.x 系列或更高版本。如果你能启动当前系统,升级过程相当简单。如此处所述,但当然,这造成了一个两难的局面。你应该能够通过使用chroot应急磁盘来克服这个障碍,正如这里所述。

另一个选择是升级您的 Ubuntu 版本。我知道 3.04 是一个 LTS 版本,但此后已经有了 3.04.1 和 3.04.2 版本,我非常确定它们包含较新的内核。我不确定您是否可以在 3.04 上安装 3.04.2 以使一切正常运行,但您可以研究这种可能性。

相关内容