<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rainux's Journal &#187; Mac OS X Archives  &laquo; Rainux&#039;s Journal</title>
	<atom:link href="http://rainux.org/tag/mac-os-x/feed/" rel="self" type="application/rss+xml" />
	<link>http://rainux.org</link>
	<description>Rubyist of Vimmer</description>
	<lastBuildDate>Sat, 23 Jul 2011 12:09:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Intel Mac 多系统（Mac OS X、GNU/Linux、Windows）原理和实践</title>
		<link>http://rainux.org/intel-mac-multi-boot-macosx-gnu-linux-windows-xp-theory-and-practice</link>
		<comments>http://rainux.org/intel-mac-multi-boot-macosx-gnu-linux-windows-xp-theory-and-practice#comments</comments>
		<pubDate>Sat, 07 Feb 2009 09:15:55 +0000</pubDate>
		<dc:creator>Rainux</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Software 软件]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Mac Mini]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[MacBook]]></category>
		<category><![CDATA[MacBook Air]]></category>
		<category><![CDATA[三启动]]></category>
		<category><![CDATA[三系统]]></category>
		<category><![CDATA[多启动]]></category>
		<category><![CDATA[多系统]]></category>

		<guid isPermaLink="false">http://www.rainux.org/2009/02/07/241</guid>
		<description><![CDATA[Intel Mac 安装多系统的方法网上有很多文章介绍，已经不神秘了。本文解释整个过程背后的原理以及提供关键问题的解决方案，同时介绍我自己的分区方案和实践经验。以下内容基于在一台 MacBook 上安装运行 Mac OS X 10.5、Debian GNU/Linux lenny 分支和 Windows XP 的三系统实践，所以某些细节可能会不适用于其它情况。]]></description>
			<content:encoded><![CDATA[<p>Intel Mac 安装多系统的方法网上有很多文章介绍，已经不神秘了。本文解释整个过程背后的原理以及提供关键问题的解决方案，同时介绍我自己的分区方案和实践经验。以下内容基于在一台 MacBook 上安装运行 Mac OS X 10.5、Debian GNU/Linux lenny 分支和 Windows XP 的三系统实践，所以某些细节可能会不适用于其它情况。</p>

<h2>背景</h2>

<p>理论上，所有基于 Intel CPU 的 Mac 计算机（包括 MacBook，Mac Mini 等）在安装过 Mac OS X 10.4.6 或更高版本的 combo update 和 firmware update 后都应该可以安装运行 GNU/Linux 和 Windows 2000 以上版本，但是有一些限制。</p>

<p>众所周知 PC 使用 <a href="http://en.wikipedia.org/wiki/BIOS">BIOS</a> 作为硬件 firmware 和操作系统的中间层，并且使用 <a href="http://en.wikipedia.org/wiki/Master_Boot_Record">MBR</a> 分区表作为硬盘分区方案。而 Intel Mac 与普通 PC 最大的区别就是使用了 BIOS 的下一代替代品 <a href="http://en.wikipedia.org/wiki/Extensible_Firmware_Interface">EFI</a> 和 <a href="http://en.wikipedia.org/wiki/GUID_Partition_Table">GPT</a> 分区方案。EFI 和 GPT 都分别向后兼容于 BIOS 和 MBR 分区表，所以可以支持基于 BIOS 和 MBR 的操作系统，例如 GNU/Linux 和 Windows。</p>

<p>简单地说，GPT 通过包含一份 MBR 分区表来兼容 MBR 分区方案（参考 <a href="http://en.wikipedia.org/">Wikipedia</a> 上的 <a href="http://en.wikipedia.org/wiki/GUID_Partition_Table">GPT</a> 页面）。GPT 的内容可以被同步到 MBR 分区表中，所以当硬盘使用 GPT 分区方案时，<strong>GPT 里的分区可以通过 MBR 分区表被访问到——这是在 Intel Mac 上安装基于 MBR 分区表方案的操作系统的关键</strong>。但是 MBR 分区表只能包含最多 4 个主分区（扩展分区相当于一个主分区，可以在其上划分多个逻辑分区），而 GPT 没有扩展分区和逻辑分区的概念，现有的工具在同步 GPT 到 MBR 分区表时也不会做额外的转换，所以<strong>实际上只能同步 GPT 上的前 4 个分区到 MBR 分区表中</strong>。而 Intel Mac 上运行 Windows 有一个奇怪的限制，<strong>Windows 必须被安装到 MBR 分区表中的最后一个分区上，否则会在启动时提示找不到 %SystemRoot%\system32 目录下的某文件</strong>。</p>

<p>虽然 Mac OS X 附带的 Disk Utility 可以对 GPT 分区方案的硬盘进行分区，但是不够稳定，不建议使用。<strong><a href="http://www.gnu.org/software/parted/index.shtml">GNU Parted</a></strong> 是我的选择，它对 GPT 分区方案支持比较好。另外还需要 <strong><a href="http://refit.sourceforge.net/">rEFIt</a></strong> 中的 <strong>Partitioning Tool</strong> 来同步 GPT 和 MBR 分区表，同时我也使用 rEFIt 作为多系统引导管理器，相对于目前的 <a href="http://www.gnu.org/software/grub/grub-2.en.html">GRUB2</a> 来说，它更成熟并且非常容易使用，还拥有很漂亮的图形界面。</p>

<p>GNU/Linux 内核支持 GPT，因此启动之后可以访问 GPT 上的所有分区。但是 GRUB 不支持 GPT，所以 GRUB 和 GNU/Linux 内核必须被安装到一个 MBR 分区表里的分区上。Windows 完全不支持 GPT，所以始终只能访问 MBR 分区表上的 4 个分区。</p>

<h2>双系统的特殊情况</h2>

<p>在典型的双系统情况下，你可能只有三个分区，Mac OS X 占用两个，Windows 占用一个。使用 rEFIt 同步 GPT 和 MBR 分区表后，工作很正常。然而如果你在 Mac OS X 里创建了另外一个分区，导致同步 GPT 和 MBR 后 Windows 安装分区不再是 MBR 分区表中最后一个分区，此时 Windows 就会像上文中提到那样无法启动。解决方法很简单，使用不支持 GPT 的分区工具将这个新创建的分区在 MBR 分区表中删掉即可。注意，仅仅是在 MBR 分区表中删掉，在 Mac OS X 里通过 GPT 你仍然可以访问它。</p>

<p>不支持 GPT 的分区工具包括 Linux 里的 fdisk，Windows 的 compmgmt.msc 里的磁盘管理，以及各种 Windows 下第三方工具的较老版本，例如 Paragon Partition Manager 7.0。</p>

<h2>我的分区方案</h2>

<p>Mac OS X 的常规安装需要占用两个分区，第一个是预留的 EFI System，有文章说可以安全地删除它，不过我没有尝试。GNU/Linux 和 Windows 各自需要占用一个分区，刚好达到 MBR 分区表中 4 个主分区的限制。这是大多数文章中介绍的方案，但是这样 GNU/Linux 和 Windows 都没有一个专门存储数据的分区，GNU/Linux 也没有 swap 分区，使用上并不方便。</p>

<p>以下是我的分区方案，使用 GNU/Linux 的设备描述方式：</p>

<pre><code>/dev/sda1 200.00MB  EFI System
/dev/sda2 43.83GB   HFS+ 文件系统，Mac OS X 安装分区
/dev/sda3 13.50GB   ext3 文件系统，同时作为 GNU/Linux 的 /boot，/home 和 Windows 里的 D: 盘
/dev/sda4 5.00GB    NTFS 文件系统，Windows 安装分区 C: 盘
/dev/sda5 10.00GB   reiserfs 文件系统，GNU/Linux 的安装分区 / 目录
/dev/sda6 2.00GB    linux-swap 文件系统，GNU/Linux 的交换分区
</code></pre>

<p>使用 rEFIt 的 Partitioning Tool 进行同步后，/dev/sda4 刚好是 MBR 分区表中的最后一个分区，符合上面提到的 Intel Mac 运行 Windows 的必要条件。</p>

<p>在 Windows 里安装 <a href="http://www.fs-driver.org/">Ext2 IFS</a> 或者 <a href="http://ext2fsd.sourceforge.net/">Ext2fsd</a> 即可将 ext3 文件系统的 /dev/sda3 当成 ext2 文件系统挂载为 D: 盘。要注意的是目前主流发行版里的 mkfs.ext3 默认会创建 inode 为 256 字节的 ext3 文件系统，而 Ext2 IFS 只支持 inode 大小为 128 字节的 ext3 文件系统，Ext2fsd 则没有问题。或者也可以使用 mkfs.ext3 -I 128 来创建 inode 大小为 128 字节的 ext3 文件系统。</p>

<p>Windows 还可以通过安装 <a href="http://www.mediafour.com/products/macdrive/">MacDrive</a> 来访问安装 Mac OS X 的 HFS+ 分区，它对 HFS+ 文件系统支持很好。和 Ext2 IFS 及 Ext2fsd 一样，安装它以后你可以将 HTFS+ 文件系统的分区挂载为 Windows 下的一个逻辑盘。与 Ext2 IFS 和 Ext2fsd 不同的是，这个逻辑盘的盘符只能在 Windows 自己的磁盘管理工具里修改。但是它可能跟 Ext2fsd 有冲突，每次安装 Ext2fsd 后都会由 MacDrive 的某个驱动程序导致 Windows 蓝屏。与 Ext2 IFS 同时安装使用就没有问题。MacDrive 是本文提到的第三方工具中唯一一个商业软件。</p>

<p>Mac OS X 也可以通过安装 <a href="http://sourceforge.net/projects/ext2fsx/">Mac OS X Ext2 Filesystem</a> 来访问 /dev/sda3，并将其作为单独的个人数据分区。不过我没有这么做，因为事实上我几乎不使用 Mac OS X，我觉得 Debian GNU/Linux 提供的类 Unix 环境比 Mac OS X 的更友好，保留它只是因为这台 MacBook 的主人需要它。</p>

<p>这个方案的好处是 Windows 可以有 D: 盘来将系统和个人数据分开，GNU/Linux 也可以有多个分区来分离系统和个人数据。实际上因为 GNU/Linux 内核 支持 GPT，后面可以创建更多分区给 GNU/Linux，不过我使用的 MacBook 硬盘只有 80GB，分区太多各个分区空间利用率反而降低，所以 /dev/sda3 身兼了三职。这样做还有个好处，Windows 里的 Cygwin 和 GNU/Linux 可以很容易的共享同一个 $HOME 目录，不管是 <a href="http://www.rainux.org/2008/12/08/240">TM2008</a>、Pidgin 还是 OpenSSH、zsh、Vim/gVim 都可以很方便地在两个系统共享同一套配置和数据文件。</p>

<h2>准备工具</h2>

<ul>
<li>一台 Intel Mac。</li>
<li>Mac OS X 10.4 以上安装光盘，如果 Intel Mac 上已经安装好了 Mac OS X，则不需要。</li>
<li>Windows 安装光盘，原始版本或者 Ghost 版本都可以。</li>
<li>一张包含 GNU Parted 的 GNU/Linux 安装光盘或者 Live CD，例如我使用的 Debian 安装光盘。</li>
<li><a href="http://refit.sourceforge.net/">rEFIt</a> 安装程序。</li>
</ul>

<p>因为 Intel Mac 对 USB 存储设备的 BIOS 兼容启动支持很差，所以上面提到的都是光盘。</p>

<h2>安装步骤</h2>

<ol>
<li><p>按照常规的方式将 Mac OS X 安装到<strong>一个</strong>分区上。建议将安装光盘的 dmg 镜像使用 Disk Utility 恢复到一块移动硬盘的某个主分区上，再用它启动安装程序，这样安装过程会比较快。如果你的 Intel Mac 上已经有一个正常使用的 Mac OS X 10.4 以上版本，这一步可以直接忽略。</p></li>
<li><p>使用 Mac 主菜单里的 Software Update 安装最新的 combo update 和 firmware update。</p></li>
<li><p>在 Mac OS X 里使用命令行工具 diskutil 将 Mac OS X 安装分区动态缩小（也可以使用 BootCamp），为其它系统预留出足够的空间。这一步的目的只是留出空间，详细的分区过程将使用 GNU Parted。命令格式如下，第一个 45G 是 Mac OS X 安装分区 disk0s2 将要被缩小到的大小。第二个 30G 只是用来占位的分区，必须提供，否则 diskutil 完成工作之后你会发现 disk0s2 大小没有变化。<strong>在这么做之前请使用 diskutil list 查看 GPT，确保你的 Mac OS X 是安装在 disk0s2</strong>。</p>

<pre name="code" class="bash">sudo diskutil resizeVolume disk0s2 45G "MS-DOS FAT32" "Windows" 30G
</pre></li>
<li><p>在 Mac OS X 里安装多系统引导管理器 rEFIt。安装完成以后每次启动时都可以看到 rEFIt 的图形界面，通过它可以选择启动不同的系统，以及访问 rEFIt 的 Partitioning Tool 进行 GPT 和 MBR 分区表的同步。</p></li>
<li><p>使用 Debian 安装光盘（或者其它包含 GNU Parted 的 LiveCD）启动 Intel Mac，在硬盘分区步骤即可以使用 GNU Parted 工具。删掉刚才预留的 30G 占位分区，将空闲空间按照上面提到的方案分成 4 个分区。此处 GNU Parted 不能创建 NTFS 文件系统，所以 /dev/sda4 暂时使用 ext3 或者其它文件系统，将来可以用 Windows 安装程序重新格式化为 NTFS。我在这一步直接安装好了 Debian GNU/Linux，你也可以在分区完成后取消安装过程，安装你喜欢的其它发行版。我猜测大多数的发行版使用的分区工具都应该是 GNU Parted，因此这一步你应该可以直接使用你喜欢的发行版的安装光盘。</p></li>
<li><p>重新启动后在 rEFIt 的图形界面里进入 Partitioning Tool，按提示进行 GPT 和 MBR 的同步。</p></li>
<li><p>使用 Windows 安装光盘启动 Intel Mac 并将最后一个分区（Windows 安装程序看到的最后一个分区只是 MBR 分区表中的最后一个分区，即 /dev/sda4）格式化为 NTFS，安装 Windows。</p></li>
<li><p>也可以用国内常见的各种 GhostXP 光盘来安装 Windows，但是必须要使用带有 Windows PE 的版本。<strong>因为 Intel Mac 几乎完全不能运行 DOS 下的任何程序，所以必须使用光盘上的 Windows PE 启动，然后使用 GHOST32 来恢复光盘上的 .GHO 文件到预留的 Windows 安装分区 /dev/sda4</strong>。这里还可能会遇到一个问题，<strong>如果执行 GHOST32 之前你已经将 /dev/sda4 格式化成了 FAT32 文件系统（也可能是 NTFS），很有可能在 GHOST32 中选择目标分区时看不到它，而保留在第 5 步中选择的 ext3 或者 reiserfs 文件系统则没有问题</strong>。</p></li>
</ol>

<h2>参考资料</h2>

<ul>
<li><a href="http://wiki.onmac.net/index.php/Triple_Boot_via_BootCamp">Triple Boot via BootCamp - OnMac.net Wiki</a></li>
<li><a href="http://refit.sourceforge.net/myths/">rEFIt - Myths and Facts About Intel Macs</a></li>
<li><a href="http://wiki.debian.org/MacBook">MacBook - Debian Wiki</a></li>
</ul>

	标签：<a href="http://rainux.org/tag/gnu-linux/" title="GNU/Linux" rel="tag">GNU/Linux</a>, <a href="http://rainux.org/tag/mac-mini/" title="Mac Mini" rel="tag">Mac Mini</a>, <a href="http://rainux.org/tag/mac-os-x/" title="Mac OS X" rel="tag">Mac OS X</a>, <a href="http://rainux.org/tag/macbook/" title="MacBook" rel="tag">MacBook</a>, <a href="http://rainux.org/tag/macbook-air/" title="MacBook Air" rel="tag">MacBook Air</a>, <a href="http://rainux.org/tag/windows/" title="Windows" rel="tag">Windows</a>, <a href="http://rainux.org/tag/%e4%b8%89%e5%90%af%e5%8a%a8/" title="三启动" rel="tag">三启动</a>, <a href="http://rainux.org/tag/%e4%b8%89%e7%b3%bb%e7%bb%9f/" title="三系统" rel="tag">三系统</a>, <a href="http://rainux.org/tag/%e5%a4%9a%e5%90%af%e5%8a%a8/" title="多启动" rel="tag">多启动</a>, <a href="http://rainux.org/tag/%e5%a4%9a%e7%b3%bb%e7%bb%9f/" title="多系统" rel="tag">多系统</a><br />
]]></content:encoded>
			<wfw:commentRss>http://rainux.org/intel-mac-multi-boot-macosx-gnu-linux-windows-xp-theory-and-practice/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

