2009/06/30(Tue)デュアルブートにおけるNTLDR is missingのチェックポイント
2009/06/30 15:55
というわけで、今回はこのTips。
はじめに
シングルブートならXPのセットアップCDでブートし、回復コンソールに入ってfixmbr, fixbootと打つのが常套手段であろう。(VistaならGUI画面からブート領域の修復だかを行うだけと、お手軽である)が、デュアルブート(マルチプルブート)環境の場合は、「Windowsは入っているけどNTLDRはMBRに置いていない」ということもあろう。私もLinuxとデュアルブートにするため、先にXPを入れ、後からFedoraを突っ込み、MBRにはgrub2が鎮座している。
このような場合に、単純にfixmbrを行うとNTLDRのMBRに書き換わり、とりあえずXPは起動できるもののLinuxが起動できなくなるという弊害がある。
こういう場合はどうするか。
基本的には
MBRに鎮座しているブートローダーを設定をいじる。NTLDRからWindowsとLinuxに分岐しているならWindows側のboot.ini(XPまで)やbcdedit(Vista)辺りであるし、grubやliloを使っているならLinux側の設定ファイルを設定し直せばよい。
これを行う際には各種Live Linuxがお手軽なので、安価なUSBメモリ等に放り込んでおいて損はないだろう。
が、今回私が遭遇したケースはちょっと違った。
ことのあらまし
元々FMV-BIBLO LOOX U50WN2を2台、Windows+Linuxのデュアルブート環境を整備していて、とりあえず1台完成させた。後はパーティションごとバックアップして2台目に書き戻せばよいや~と思い、True Image等でバックアップを取り、Disk Suiteでパーティションサイズを同じように切り、True Imageで戻したのはいいが、XP側がNTLDR is missingで立ち上がらないという状況だったのである。
2台の設定を見比べてみたところで
- grubのmenu.confも全く同一
- ntldrやNTDETECT.COMなどのmd5sumは同じ
- fdiskで見るBoot flagは両方同一
2台目の方でもLinuxはきちんと動作する。
Partition table entries are not in disk order
しかし、気になったのが2台目でfdiskを起動し、pコマンドで一覧を表示したときの↑のエラーらしきコマンド。訳せば、「パーティションテーブルのエントリがディスク順ではない」ということだが、確かにSTARTがsector1のパーティションがsda3にいる時点でおかしい。
なるほど、これでNTLDRを見に行くパーティションを混乱しているのか……。
Partition table entries are not in disk orderの直し方
Linux(LiveCDでもよい)で起動して、以下のようにやればよい。# fdisk /dev/sda Command (m for help): x Expert command (m for help): fExpert commandにおけるfとは、"fix partition order"であるので、まさにこれの修復のことである。
この後、wコマンドで保存し、再起動すれば、無事NTLDRの位置を認識し、起動することができた。
たぶん、インストールシーケンス外でパーティションをぐちゃぐちゃいじってると、このようにパーティションオーダとディスクオーダに差異ができることがあるのだろう。