我有一个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 时,它显示:
没有可启动设备--插入启动盘并按任意键
- 我尝试使用 rEFIt 分区工具。结果如下:
正如建议的那样Mac OSX 更新导致 Ubuntu 无法启动 我想以与 AndrewM 相同的方式修复该问题,但我没有“必须更新 MBR 表”选项。
- 然后我启动了 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 的说明,包括使用选项--alldrivers
,install.sh
您应该会在 rEFInd 中看到一个或多个新选项,其描述包括字符串。这些新条目应该可以启动 Linux。如果可以,您可以通过编辑、取消注释该行并确保 来删除vmlinuz
不起作用的 Linux 条目/EFI/refind/refind.conf
scanfor
hdbios
不是在选项之中。
如果你这样做不是使用该--alldrivers
选项,或者如果您没有看到条目vmlinuz
,则应尝试安装 rEFInd 附带的 ext4fs 驱动程序。假设您使用了默认的 rEFInd 安装选项,则需要/EFI/refind/drivers
在 OS X 中创建目录,然后将适合您的体系结构(X64 或 IA32)的 ext4fs 驱动程序复制到该目录。重新启动时,您应该会看到一个新的 Linux 选项,其名称包含vmlinuz
。这应该可以正确启动。
编辑:您能否执行以下操作并发布结果(编辑您的原始帖子以执行此操作):
- 在 OS X 中,
ls -l $(find /EFI -iname "*.efi")
在此处输入并发布结果。(假设您使用默认选项在 OS X 下安装了 rEFInd;如果您将其安装到 ESP,请将其安装并调整从/EFI
ESP 的安装点到 ESP 的路径。) - 在 Linux 中,
ls -l /boot/vmlinuz*
在此处输入并发布结果。 - 检查
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 以使一切正常运行,但您可以研究这种可能性。