Windows 7 と Linux でマルチブート

目的を達成することはできたけど,あんまりよくわかってないんで適当なこと言っているかも.

目的

Windows 7 がプリインストールされているマシンに新に Linux をインストールしてマルチブートしたい.ただしハードディスクは1つ.

手段

まずブートローダをどうするかという問題.
Windows 7 で使われている bootmgr は Linux を直接ブートできないし,Linux でよく使われている grubWindows を直接ブートできないため,いわゆるチェーンロードが必要になる.

という選択肢があるが,どうやら前者のほうが手軽らしく,また失敗したときのリスクも低そう*1だったのでそちらを選択した.

手順

まずは Linux をインストールするための領域を用意する.
今回の場合最初から3つのパーティションに切られていたので,メインのパーティションを縮小して空き領域を作る.
Windows 7 では「ディスク管理」というもので簡単に行えるらしいのでそれに従って 80GB 空けた.
http://journal.mycom.co.jp/special/2009/windows7/028.html
どうでもいいけど「縮小する領域のサイズ」という日本語の意味がわからなかった.ようはここにどれだけ空きを確保したいかを入力すればいいみたいだった.


次に Linux のインストールディスクを入れてそっちから起動.
ここでの細かい操作はディストリビューション毎に異なるが

  • さっき空けたところにインストールする
  • ブートローダはインストールしない

ことに注意.
今回インストールしたのはやはり Arch なんだが,Arch での細かい操作もメモしておく.
Arch の場合は少なくとも swap,boot,ルートの3つのパーティションが必要なので parted で切る.
primary パーティションは4つまでしか持てないので,空けた領域を extended にしてそこを logical で3つに分けた.
swap, boot(ext2) は parted でフォーマットできるが,ルート(ext3)はできないので切った後に mkfs.ext3 する.
そうしたらいつも通り /arch/setup でウィザードに従ってインストール.
ただし,パーティション選択において手動でさっき作ったパーティションに設定し,また最後のブートローダのインストールの段階でインストールしないことを選択する.


Linux のインストールが終わったらディスクを抜いてリブート.この時点ではまだ Windows 7 しか起動しない.
マルチブートを実現するために EasyBCD を利用した.
http://neosmart.net/dl.php?id=1
Add/Remove Entries→Linux で,Type は Grub にし,「GRUB isn't installed to the bootsector」にチェックして Add Entry.
Change Settings で「Bootloader Timeout」を適当な秒数にセットして Save Settings.
最後に Manage Bootloader で Write MBR したら完了.
これでリブートしてみれば,起動時に選択できるようになっており,Linux のほうを選べば grub のほうの menu に遷移するはず.

*1:とりあえず Windows がブートできないということにはあんまりならなそう