MacのBoot CampでWindowsパーティションを2個用意する

iMacBoot Campを使ってWindows XPマシンにすることになってる。今までのWindows XPは、OSをインストールするCドライブと、VMwareのVirtual Machineを設置するDドライブに分割して使っていた。Boot Campアシスタントを使うと、Windowsパーティションは1個しか用意されないから、Cドライブのみになってしまう。今まで通りDドライブを用意することにしたんだけど、これが不幸の始まりだった。
結論としては、以下の通り。ようするに手を出さない方が無難。WindowsでGPTを扱う方法がこなれていないことと、Mac OS Xとの同居が特殊なことが原因か?

hal.dllが見つからない

最初は安直に、Boot Campアシスタントを使ってWindowsパーティションを1個作成し、Windowsインストールの中でそのパーティションを消去して、新しく2個のパーティションを作ってみた。
すると、見事にWindowsが起動しなくなった。hal.dllが見つからないらしい。Windowsインストーラパーティション構成をさわったのがまずかったんだろう。

次のファイルが存在しないか壊れているため、windowsを起動できませんでした。
<Windows root>\system32\hal.dll

diskutilを使ってパーティション構成を変更する

Windowsインストーラパーティション構成を変更するのがダメなら、Mac OS Xでやってみよう。diskutilのresizeVolumeコマンドを使う。diskutilはNTFSを扱えないので、とりあえずFAT32でフォーマットしておいて、WindowsインストーラNTFSにフォーマットし直す。

# diskutil /dev/disk0s2 40G "MS-DOS FAT32" BOOTCAMP 40G "MS-DOS FAT32" DATA limits

これで、Mac OS Xに40G、Windows C:に40G、残りがD:になる。あとはWindowsインストールCDから起動してインストールを進めるだけ。
結果は、インストールはできるけど、初回の再起動後にhal.dll地獄でインストールを進められなかった。うーん。

Windowsパーティションの順番が重要?

Webを眺めてみると、どうやらC:が最後のパーティションにあれば大丈夫ということらしい。Windowsは、Windowsから利用可能な新しいパーティションを発見すると、発見した順番にドライブレターを付与する。そのままだと、WindowsをインストールするドライブがD:になってしまう。これでもWindowsは動くけど、何となく気持ち悪いので小手先でなんとかしてみよう。
Windowsは、いったんドライブレターを付与すると、重複がない限りは前回同様のドライブレターを付与するらしい。というわけで、初回インストールの時だけ、D:になる予定のパーティションWindowsから見栄無くすればOK。今回はD:をHFS+でフォーマットしておくことにした。

# diskutil /dev/disk0s2 40G "Journaled HFS+" DATA limits "MS-DOS FAT32" BOOTCAMP 40G

optionキーを押しながらMacを再起動して、起動デバイス選択画面になったらWindows XPのインストールCDを選択する。インストールが終わったら、Disk UtilityでDATAパーティションを選択して、FAT32で「消去」する。あとはWindows側で、NTFSに変換すればOK。なぜかうちではクイックフォーマットがうまく動かなかった。全部完了したら、ドライブレターの割り当てを適宜変更すべし。

FAT32をNTFSへ変換する
> convert g: /fs:ntfs

ちなみに、LeopardからはGUIのDisk UtilityでVolumeのサイズ変更が可能らしい。知らなかったよ。

まとめ