Windows XP, 2000 server をインストール済みのハードディスクに、Linux ES3 をインストールしたことで、一応のトリプルブートは可能となっている。
各 OS が正常に起動できるか確認しよう。
grub の起動リストの順でいけば、上から Linux ES3, Windows 2000 server, Windows XP となっている。
すべて順調に起動できただろうか。
X.1.2.ドライブの確認 (Windows)
起動が正常に行えたら、各 Windows (XP, 2ooo server) のドライブ状況を確認する。
それぞれ自 OS のドライブは C ドライブとなっていて申し分ないが、他方の Windows 用パーティションもドライブ (例えば E ドライブ) として認識されている。
また、ディスクの管理で確認すると、他 Windows のパーティションが確認できるほか、Linux 用のパーティションも複数確認できる。
ただ、Linux 用に確保されたパーティションは、Windows のドライブとしては認識 (マイコンピュータに表示) されない。
2 つの Windows が独立した C ドライブとして起動できるようなトリプルブートとするには、起動対象の Windows に "自パーティション以外に Windows システムは無い" と誤認識させなければならない。
そこで、起動 OS 選択リストである grub.conf の編集と、パーティション 2 にインストールした Windows 2000 server の boot.ini ファイルの編集が必要になる。
grub.conf では選択された Windows に応じて、パーティション タイプの動的な変更を、Windows 2000 server の boot.ini ではパーティション番号の変更を行う。
編集の手順は以下の通り。
Windows 2000 server の boot.ini, Linux ES3 の grub.conf の順に実施する。
- Windows 2000 server を起動する。
- C ドライブにある boot.ini を次のように変更する。
( 赤字の部分を "2" から "1" に変更 )
- PC を再起動する。
- Linux ES3 を起動する。
- /boot/grub ディレクトリにある grub.conf を次のように変更する。
( 赤字の部分を追加する )
【 参考 】
因みに、grub.conf または boot.ini のどちらか一方のみの編集が終わった段階で 各 OS を起動すると、次のような状態になる。
- Linux ES3
正常起動。
- Windows 2000 server
下記メッセージが出てブートシーケンスは停止する。
※ grub.conf に先立って boot.ini を編集する理由はここにある。
- Windows XP
正常起動。
さて、これで目指していたトリプルブートは完成する(はずである)。
次の点を確認する。
- 3 種類の OS は正常に起動できるか。
パーティション タイプの書き換えを行っているので、各 OS を順番に起動するテストを複数回実施する。
- Windows XP と Windows 2000 server は、次の項目も確認する。
- マイコンピュータに 他 Windows のパーティションが、ドライブとして表示されない。
( ハードディスクドライブは、C ドライブのみ表示 )
- ディスクの管理では、他 Windows のパーティションは、"未割り当て" になっている。
Linux ES3 の grub.conf と Windows 2000 server の boot.ini を編集したのは次の理由による。
- Windows 2000 serve の boot.ini
grub から起動された Windows 2000 server の ntldr は、boot.ini を参照して読み込むべきファイル (ntoskrnl.exe) の所在を知る。 それは次の位置を指している。
しかし、パーティション 1 のパーティション タイプが grub によって 0x00 (未使用領域) に書き換わっているため、Windows 2000 server が認識するパーティション番号は以下のように変わってしまう。
この状態では "ファイルが存在しないかまたは壊れている" となって Windows 2000 server を起動できない。 エラーを回避し起動可能とするため、boot.ini のパーティション情報を次のように書きかえる。
- grub.conf の Windows 2000 serve ブロック。
- parttype (hd0,1) 0x07
自身のパーティション タイプを正常値 (0x07) に戻す。
- parttype (hd0,0) 0x00
Windows XP が存在するパーティションを未使用領域 (0x00) と偽る。
この措置により Windows 2000 serve から Windows XP のパーティションが見えなくなる。
- grub.conf の Windows XP ブロック。
- parttype (hd0,0) 0x07
自身のパーティション タイプを正常値 (0x07) に戻す。
- parttype (hd0,1) 0x00
Windows 2000 server が存在するパーティションを未使用領域 (0x00) と偽る。
この措置により Windows XP から Windows 2000 serve のパーティションが見えなくなる。
- grub.conf の Linux ES3 ブロック。
ここは何も変更しない。
grub はパーティション テーブルの位置でパーティション番号を識別する(ように思える)。
grub は指定のパーティション (hd0,2) をルート パーティションとして認識し、以後カーネル等のロードはこのルートパーティションから行う。
以後、Linux のシステムが組み上げられマウントされて使用可能になる。
したがって、Linux ES3 に関係のないパーティション タイプが 0x00 (未使用領域) であっても、何の影響も受けない。
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Server" /fastdetect