在MacBook Pro上安装Ubuntu后修复Windows Boot Loader

我按照本指南在Mac OS X Yosemite上安装了MacBookPro11,5(Retina)上的Ubuntu 14.04.2 LTS: https ://help.ubuntu.com/community/MacBookPro11-1/Saucy

问题是我已经通过Boot Camp安装了Windows 8.1 Pro,因此Mac OS上的磁盘工具不能用于重新分区SSD。 我在终端中使用了resizeStack来缩小OS X分区( 这里指南 )。 现在SSD被分区为:

  • /dev/sda1 :EFI分区
  • /dev/sda2 :OS X Yosemite
  • /dev/sda3 :OS X Recovery HD
  • /dev/sda4 :Boot Camp Windows 8
  • /dev/sda5 :安装到/ Ubuntu磁盘
  • /dev/sda6 :Ubuntu Swap

选择Ubuntu引导加载程序安装到/dev/sda1 ,但安装程序通知Windows引导加载程序也存在于sda1 。 安装后,Ubuntu和Mac OS从GRUB2成功启动,但无法从GRUB2或本机Apple启动管理器启动Windows(启动时按下option )。 我使用Parallels Desktop将Boot Camp分区加载为虚拟机并且Windows正常运行。

解决方案#1

我在Ubuntu上安装了Boot Repair并使用了推荐修复 ,没有运气; 修复后,更多条目将添加到Grub2菜单中。 GRUB工作,Mac OS可以启动。 以下是创建的Boot Info页面: http : //paste.ubuntu.com/11897269/

解决方案#2

我插入了Windows安装闪存驱动器并尝试了自动启动修复 ,但无法正常工作。 然后我尝试通过命令提示符修复主引导记录: bootrec /fixmbr

修复后,Mac OS被设置为第一个启动系统,因此启动计算机时没有出现Grub菜单。 我在Ubuntu安装闪存驱动器上使用了efibootmgr ,将Ubuntu作为第一个启动驱动器和Mac OS。 Windows仍然无法启动。

奇怪的是,这次Apple启动管理器在点击“Windows”磁盘图标后没有尝试启动Windows; “Macintosh HD”和“Windows”图标都将导致Mac OS启动。 因此修复必须更改Apple启动管理器。

几个问题

  1. 似乎/dev/sda1中的Windows Boot Loader被Grub覆盖。 那么有没有办法使Windows引导加载程序和Linux引导加载程序(现在是Grub,对吧?)共存?

  2. 值得注意的是, Boot Camp Windows 8在MacBook Pro上以EFI模式启动 ,因为setupact.log显示了Callback_BootEnvironmentDetect: Detected boot environment: EFI 。 我还检查了Grub它是否在EFI模式下工作。 因此,Windows是否也使用类似于Mac OS的GUID分区表(GPT)而不是MBR? 如果是这样,修复MBR可能没有用。

  3. 我不确定Apple启动开关在哪里,以及如何通过Windows安装驱动器更改它? 它也在/dev/sda1吗?

我是这个主题的初学者。 非常感谢你的回答!


更新:

我在Windows安装命令提示符中尝试了以下命令:

  • bootrec /fixmbr :成功
  • bootrec /fixboot :成功
  • bootrec /scanos :在D:\Windows上识别出1个Windows安装
  • bootrec /rebuildbcd :在D:\Windows上识别出1个Windows安装; 找不到请求的系统设备。
  • bcdedit :找不到请求的系统设备。

Windows无法启动,错误代码为0xc000000e

更新#2

我遵循Rod Smith的回答将我的EFI分区从MBR: MBR only转换为MBR: MBR onlyMBR: protectiveGPT: present ,但随后“Windows”选项从Apple启动管理器消失,Grub无法启动。

我也跟着Terrance对rebuildbcd的回答,但没有成功。 查看有关其答案的评论。

您的问题是您的Windows安装处于EFI模式,但您的磁盘配置了混合MBR,这会强制Windows将磁盘视为MBR磁盘。 Mac启动加载程序也可能将此作为尝试Windows的BIOS模式启动的信号,但磁盘上没有BIOS模式启动加载程序。 由于Windows将仅从GPT磁盘以EFI模式启动,因此此配置会导致启动失败。 可能还有其他问题,但这是我看到的第一个问题,它肯定会导致启动失败,所以你应该解决这个问题。

幸运的是,解决方案相当简单,尽管不直观:

  1. 启动到Ubuntu。 (您也可以从OS X执行此操作,但您需要安装gdisk并使用其他磁盘设备文件名。)
  2. 打开终端窗口。
  3. 输入sudo gdisk /dev/sda 。 在系统提示您输入密码后, gdisk应该启动并告诉您,其中包括MBR: hybrid
  4. 键入p以查看分区表。 假设您对分区了解得足够多,那么您应该能够validation您是否正在查看正确的磁盘。 如果没有,请键入q退出并尝试其他磁盘设备。
  5. 输入x进入专家菜单。
  6. 键入n以创建新的保护性MBR以替换现有的混合MBR。
  7. 再次键入p以validation您的分区是否仍然存在。 这只是一个预防措施,以确保您不会意外地敲错钥匙。
  8. 键入w以保存分区表。 系统会要求您validation此操作。 这样做。

运气好的话,这应该可以解决你的问题。

如果Bootrec显示“找不到请求的系统设备”错误,则以下步骤将有助于构建新的BCD:

  1. 输入以下命令:

     bcdedit /export D:\BCDBackup 
  2. 类型

     d: 

    其中d:是安装Windows的地方

  3. 类型

     cd boot 
  4. 输入以下命令:

     attrib bcd -s -h -r 
  5. 输入以下命令:

     ren d:\boot\bcd bcd.old 
  6. 输入以下命令:

     bootrec /RebuildBcd 

希望这可以帮助。

信用