{Linux}WindowsXPとLinuxのdualbootにさんざん手こずる
周りの人たちには簡単だよ?っていわれたXPとLinuxのDualBootですが、えらい苦労しました。この作業またやるかもなので、その課程をまとめたいと思います。
みなさんの参考になると幸いですw
ちなみにこの記事で壊れたからって私は責任とれませんのであしからず。
DualBootって?
複数のOSを同じパソコンにインストールすることをいいます。それ以上はMultiBootとも。Macの場合はBootcampとかが代わりにやってくれるから簡単ですがWinやLinuxだとそうもいかなくて大変。。。
DualBootする方法
コンピューターを起動する際にどのOSを起動するか選ばなくてはなりませんが、その際選択するプログラムのことをBootLoaderといいます。
BootLoaderにはおおきく二種類あってMicrosoftの提供するntloaderを使う方法とUnixのliloやgrubを使う方法です。
ntloaderとgrubを両方入れておくことで双方向に行き来できるみたい。
私は色々試行錯誤しましたがXPを主に使うのでntloaderでいきました。*1
そもそもなんでdualbootしようと思ったのか
今回1.5TBのHDDを衝動買いしたので、それまでつかっていた300GBのHDD(WindowsXP)をCentOSにまわそうと思いました。で、仕事でOpenGLをLinux上で動かすプログラムを作っていたのですが、うちで試す環境が欲しくてGeforce8600GTSを積んでるマシンにWindowsXPとFedoraCore10をdualbootさせようと思い至ったわけです。
理想的な流れ
PartitionをWindowsXPとFedoraCore、もしほしければほかのにもわりあてられるように区切ります。
XPをインストールする際MBR(MasterBootRecord)にntloaderが書き込まれます。MBRに書き込まれたBootLoaderがデフォルトで起動するようになります。*2
別のパーティッションにFedoraCoreをインストールします。この際注意があります。BootLoaderをMBRに書き込まないでそのパーティッションに書き込んでやる必要があります。もし、ここでMBRに書き込むとntloaderが上書きされて、Windowsが起動できなくなってしまいます。*3
あとは起動の設定(ntloaderの設定)をしてやるだけです。
方法は二種類。
Windows側のみで解決(BootPartを使う)
使い方に関してはhttp://nobumasa-web.hp.infoseek.co.jp/multi_boot/bootpart.htmlが秀逸。ここのリンクからBootPartをダウンロードしてください。
解凍したディレクトリをブートしているパーティッションのルートにおきます。
>cd $(bootpart.exeのあるディレクトリ) >bootpart.exe //Linuxの入っているパーティッションのIDを見つける。 Boot Partition 2.20 for WinNT (c) 1995-98 G. Vollant (info@winimage.com) WEB : http://www.winimage.com and http://www.winimage.com/bootpart.htm Add partition in the Windows NT Multi-boot loader Run "bootpart /?" for more information 0 : C:* type=b (Win95 Fat32), size = 1670728 KB 1 : C: type=f (Linux Native), size = 16265812 KB 2 : C: type=b (Win95 Fat32), size = 1309266 KB 3 : C: type=5 (Extended), size = 1429785 KB .... //今回の場合1であることがわかる。 >bootpart.exe 1 c:\fedora.lnx "Fedora Core"
するとfedora.lnxがc:\直下にでき、Boot.iniがこんな感じで書き換わる。
[boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(2)\Windows [operating systems] multi(0)disk(0)rdisk(0)partition(1)\Windows="Windows XP" c:\fedora.lnx="Fedora Core"
ちなみにこのファイルは直接はみることができない。フォルダオプションを変えるのもありだが素直に、[スタート]-[コントロールパネル]-[システム]-[詳細設定]-[起動と回復]-[起動システム]
にある編集ボタンを押すのがよいと思う。
このBoot.iniの意味は「30秒以内に次のチョイスから選んでね。デフォルトはc:\Windowsを開くよ。選択肢にはWindowsXPとFedora Coreがあるよ」ってなかんじ。
LinuxとWindows両方。
Linuxのインストーラーを起動し、"Rescue Installed System"を選択。
LinuxからWindowsへファイルを移動する必要があるが、USBメモリかフロッピー、もしくはリモートにコピーしておくのもありだろう。ネットにアクセスするかきかれるのでリモートにコピーする場合はつないでおきましょう。
このあたりはhttp://www.multiburst.net/ElectricBrain/2007/10/rescue_cdfedoragrubconfに親切に書かれてます。
chroot /mnt/sysimage/
してrootになります。
次にLinuxが入っているPartitionの最初の512byte分をファイルに書き出す処理をします。
dd if=/dev/hda1 of=fedora.lnx bs=512 count=1
ちなみにこの作業はbootpart.exeがやっていることと同じ。
このfedora.lnxをなんとかしてWindowsのc:\直下におきます。
そして
フォルダオプションを変えるのもありだが素直に、[スタート]-[コントロールパネル]-[システム]-[詳細設定]-[起動と回復]-[起動システム]
にある編集ボタンを押して
[boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(2)\Windows [operating systems] multi(0)disk(0)rdisk(0)partition(1)\Windows="Windows XP" c:\fedora.lnx="Fedora Core"
てな感じに編集すればOK。
これが書かれていることを確認したら再起動。すると黒画面に"Windows XP"と"Fedora Core"てでてきたらOK。
両方起動することを確認しよう。
はまりどころ
今回はあちこちはまりました。その例を挙げていきます。
上記のfedora.lnx(に相当するファイル)を違うパーティッションにおくとBoot時に読めません。最初d:\fedola.lnxとおいてたので読めませんでした。この場合は
BootPart 2.60 Bootsecter (c) 1993-2005 Gilles Vollant http://www.winimage.com/bootpart.htm Loading New partision Bootsector from C.H. Hochstatter Cannot load from harddisk. Insert Systemdisk and press any key.
NTLDRが消える
色々やってたらNTLDRが消えてしまいました><
NTLDR is missing
なんて出る。
これはWindowsのinstallerから回復コンソールを起動し、
(WindowsのパーティッションをC、CDドライブをDとして)
copy d:\i386\Ntldr c:\ntldr copy d:\i386\Ntdetect.com c:\ntdetect.com bootcfg /rebuild fixboot exit
すればよいかと。このあたりは
http://support.microsoft.com/kb/318728/ja
http://kkariya.vox.com/library/post/ntldr-is-missing.html
を参考のこと
MBRが壊れた
ということもわりとよくあります。このときは
Invalid partition table
とでる。
このときはやはり回復コンソールで(壊れたMBRのあるドライブをsdaとして)
fixmbr sda exit
としてやればOK。
cドライブが無いとBoot.iniできない。
最初前に使ってたHDDを指してたのですが(Cドライブ)、サーバー用にするために抜いたところCドライブがなくなりました。するとntloaderが「Boot.iniがないよ〜」っていって「仕方ないから*:\Windowsをデフォルトで起動するよ><」ってしてくれます。
パーティッションの番号を変えればいいのですが、コントロールパネルからでは「ブート中のパーティッション番号は変えられんないよ!」って怒られます。
むりやりレジストリをかきかえてやったところあまりに腹が立ったのかWindowsが起動しなくなりました。
というわけでWindowsを再インストールしてC:\を割り当てたところ無事ntloaderが起動しました。
一応上記の原因と対処法は私なりの解釈ですが、間違っているところがありましたら指摘していただけると嬉しいです。