[转]MacBook Pro上装三系统 OS X、Ubuntu、Win 7
[转]MacBook Pro上装三系统 OS X、Ubuntu、Win 7
原文在这里 http://www.pblog.lpcastle.com/2010/07/triple_boot_macbook_ubuntu_win7/
前言
趁着快毕业买了最新MacBook Pro,然后装了三系统。装Ubuntu的原因是很多实验都是在Ubuntu下做的,以后可能还要继续整理那些东西。装Windows 7的原因是考虑到接下来的半年可能有时间玩些游戏,并且也想看看最新的Windows 7到底有多好。最终,经过长达10个小时左右的N次失败的实践,最终成功把三系统(Mac OSX,Ubuntu 10.4,Windows 7)装了进去,发现新版的这两个系统都很不错。现在上来把过程总结一下,希望能对别人有所帮助。
不过注意,以下经历都是在以上版本的基础上进行的,其余版本请查看其余的攻略,并自负后果。另,整这个东西比较麻烦,很有可能丢掉Win或者Ubu的引导而不能访问里面的数据。
三系统的引导原理及注意事项(引自Rainux’s Journal)
背景
理论上,所有基于 Intel CPU 的 Mac 计算机(包括 MacBook,Mac Mini 等)在安装过 Mac OS X 10.4.6 或更高版本的 combo update 和 firmware update 后都应该可以安装运行 GNU/Linux 和 Windows 2000 以上版本,但是有一些限制。
众所周知 PC 使用 BIOS 作为硬件 firmware 和操作系统的中间层,并且使用 MBR 分区表作为硬盘分区方案。而 Intel Mac 与普通 PC 最大的区别就是使用了 BIOS 的下一代替代品 EFI 和 GPT 分区方案。EFI 和 GPT 都分别向后兼容于 BIOS 和 MBR 分区表,所以可以支持基于 BIOS 和 MBR 的操作系统,例如 GNU/Linux 和 Windows。
简单地说,GPT 通过包含一份 MBR 分区表来兼容 MBR 分区方案(参考 Wikipedia 上的 GPT 页面)。GPT 的内容可以被同步到 MBR 分区表中,所以当硬盘使用 GPT 分区方案时,GPT 里的分区可以通过 MBR 分区表被访问到——这是在 Intel Mac 上安装基于 MBR 分区表方案的操作系统的关键。但是 MBR 分区表只能包含最多 4 个主分区(扩展分区相当于一个主分区,可以在其上划分多个逻辑分区),而 GPT 没有扩展分区和逻辑分区的概念,现有的工具在同步 GPT 到 MBR 分区表时也不会做额外的转换,所以实际上只能同步 GPT 上的前 4 个分区到 MBR 分区表中。而 Intel Mac 上运行 Windows 有一个奇怪的限制,Windows 必须被安装到 MBR 分区表中的最后一个分区上,否则会在启动时提示找不到 %SystemRoot%\system32 目录下的某文件。
虽然 Mac OS X 附带的 Disk Utility 可以对 GPT 分区方案的硬盘进行分区,但是不够稳定,不建议使用。GNU Parted 是我的选择,它对 GPT 分区方案支持比较好。另外还需要 rEFIt 中的Partitioning Tool 来同步 GPT 和 MBR 分区表,同时我也使用 rEFIt 作为多系统引导管理器,相对于目前的 GRUB2 来说,它更成熟并且非常容易使用,还拥有很漂亮的图形界面。
GNU/Linux 内核支持 GPT,因此启动之后可以访问 GPT 上的所有分区。但是 GRUB 不支持 GPT,所以 GRUB 和 GNU/Linux 内核必须被安装到一个 MBR 分区表里的分区上。Windows 完全不支持 GPT,所以始终只能访问 MBR 分区表上的 4 个分区。
双系统的特殊情况
在典型的双系统情况下,你可能只有三个分区,Mac OS X 占用两个,Windows 占用一个。使用 rEFIt 同步 GPT 和 MBR 分区表后,工作很正常。然而如果你在 Mac OS X 里创建了另外一个分区,导致同步 GPT 和 MBR 后 Windows 安装分区不再是 MBR 分区表中最后一个分区,此时 Windows 就会像上文中提到那样无法启动。解决方法很简单,使用不支持 GPT 的分区工具将这个新创建的分区在 MBR 分区表中删掉即可。注意,仅仅是在 MBR 分区表中删掉,在 Mac OS X 里通过 GPT 你仍然可以访问它。
不支持 GPT 的分区工具包括 Linux 里的 fdisk,Windows 的 compmgmt.msc 里的磁盘管理,以及各种 Windows 下第三方工具的较老版本,例如 Paragon Partition Manager 7.0。
根据以上的介绍,有两个事项需要注意:MBR最多支持4个分区,Windows必须被装在最后一个分区。所以,怎么分区就成了主要问题。参照很多资料,分区方案基本上都是如下:
- /dev/sda1 -> EFI
- /dev/sda2 -> Mac OS X
- /dev/sda3 -> intended for Linux
- /dev/sda4 -> Windows
- /dev/sda5 -> Linux Swap
然后问题就是怎么进行以上的分区,以及按照什么顺序安装。
准备的工具
rEFIt的光盘,Mac OSX的随机光盘,Ubuntu 10.4的自刻光盘,Windows 7的系统光盘。
安装成功的步骤
- 最新的Mac OSX下安装rEFIt。
- 在Mac OSX下利用磁盘工具分出一个大的新磁盘,作为Ubuntu和Windows用的。
- 把Ubuntu的光盘插入后重启系统,然后rEFIt会自动识别Ubuntu的启动光盘(不能识别就利用rEFIt继续重启一次),最终进入Ubuntu的体验系统。然后利用Ubuntu下自带的分区工具(很赞的,以后可以放弃番茄花园光盘里自带的PQ了)把系统分成以上几个区. 这时候可以直接把/dev/sda4格式化成NTFS文件系统,而/dev/sda3的话,我把他格成了ext2.(另注:不是很清楚能否跳过2直接用Ubuntu下的分区工具来搞定以上分区,也许可行。)
- 分区成功后重启,进入rEFIt 同步 GPT 和 MBR。
- 把Windows 7插入光驱后重启,rEFIt一般能识别这个光盘,然后把Windows 7安装在/dev/sda4下。过程会经过两三次重启,最后可以插入OSX的系统盘安装BootCamp的各种驱动,然后再启动的话就可以进入已经整备好的Win 7了。
- 最后插入Ubuntu的光盘,重启,利用rEFIt开始Ubuntu的安装,成功后重启,就会出现由rEFIt表示的三个系统。
- 以为万事大吉的时候,进入rEFIt中的Win或者Ubu,发现接下来的页面是Grub的引导页面!然后查rEFIt的文档,发现了下面的话(引自rEFIt主页):
- 最后重启,按住Alt/Option后会发现BootCamp的默认引导,然后按下去就是Grub的驱动,也可以由此继续进入Ubu或者Win。也就是现在成了一下的引导格局
If you have both Windows and Linux installed on the same internal disk, and choosing Windows in the rEFIt boot menu boots Linux, the likely cause is that your Linux system installed its boot loader (GRUB, LILO, etc.) in the Master Boot Record (MBR) instead of the partition boot record (PBR). Due to the way rEFIt works, choosing either of the operating systems in the rEFIt menu starts the Linux boot loader installed in the MBR. In the best case that boot loader then presents you with another menu where you can choose between Windows and Linux, and in the worst case it just loads Linux without giving you a chance to get into Windows.
也就是说因为Linux的把应该装在PBR的引导装到了MBR上去了。同时我这算是运气好的,最终还能利用Grub进入下面的两个系统。
To fix this problem, you need to install GRUB / LILO in the boot sector of your Linux partition instead, then remove it from the MBR. I’m not aware of a ready-made tool that can safely do that removal. Please ask for help on a Linux forum if needed.
如果想解决这个问题,必须重新把Linux的引导改道PBR上,但是没有这样的工具,而且修改起来也比较麻烦。
(Boot(Mac_BootCamp(Mac_rEFIt|Ubuntu_rEFIt(Ubuntu_Grub|Windows7_Grub)
|Windows7_rEFIt(Ubuntu_Grub|Windows7_Grub)))
|Windows_BootCamp(Ubuntu_Grub|Windows7_Grub)))
也就是说有了两套进入Win或者Ubu的方法。一种是开机按Option然后由Grub引导。一种是开机直接进入rEFIt,然后选择Ubu或者Win的图标后再由Grub引导一次。
后来考虑到自己的主用系统是Mac,偶尔进入Windows或者Ubuntu,索性就把rEFIt的引导删除了(如何删除参见rEFIt主页),留下了BootCamp和Grub的那一套引导。
(Boot(Mac_BootCamp|Windows_BootCamp(Ubuntu_Grub|Windows7_Grub))
网上的几个攻略
参照某人的备忘,发现Paragon ext是收费软件,所以当时没能在Mac下给Linux画出空间来。
参照Rainux’s Journal的步骤安装完Linux后安装了Windows,最后发现Linux的引导丢失。
以及Google上广为流传的“ 教你在macbook pro上装三系统”,在等linux开始拷贝文件的时候强制切断电源那一步,可以利用linux自带的分区工具进行的。
其余失败过的步骤
包括分区的失败,颠倒顺序的失败等,用番茄花园的失败等。
参考网页
http://forum.ubuntu.org.cn/viewtopic.php?f=77&t=261921
http://wiki.onmac.net/index.php/Triple_Boot_via_BootCamp
http://wiki.onmac.net/index.php/How_To_Backup_your_Mac
http://wiki.onmac.net/index.php/Triple_Boot_via_BootCamp_Ubuntu
http://rainux.org/intel-mac-multi-boot-macosx-gnu-linux-windows-xp-theory-and-practice
http://wiki.debian.org/MacBook
http://it.21cn.com/notebook/bbpc/2010/03/14/7403044.shtml
---------------------------
另外,害怕折腾的同学,推荐做法是,由于win7比较吃资源,所以将其用bootCamp装成双系统,而且你不是那么地爱ubuntu的特效的话,就用虚拟机吧.
---------------------------
我的win7下,插上耳机或音响没声音,但笔记本自己的喇叭能正常工作,是驱动问题,按照下图一一做吧:
在设备管理器下,选择cirrus logic cs 4206A,更新驱动程序