パソコン実習室
GRUB によるトリプルブートの実験
≪ previous next ≫

Y.参考 - 137 GB の壁を回避する


Y.1.Service Pack による違い

 Windows 2000 の Service Pack 2 以前、および初期の Windows XP は、28 ビット LBA (28 ビットでハードディスクのセクタを指定する) を採用しているため 137 GB が限界となる。
※ 0xFFFFFFFF (28 ビット) × 512 (1セクタのバイト数) = (約) 137 GB

 これは、137 GB を超える領域は認識 (アクセス) できないということであり、大容量のハードディスクであっても 137 GB より手前の領域なら、インストールやアクセスは可能である。
※ Windows は OS 起動時にパーティション テーブル情報を参照する。
   適切な Service Pack を適用しないまま他のシステム等に 137 GB を超える領域を割り当てた場合、Windows は
   認識できない情報 (開始パーティション番号等) を受け取ることになり、下記のようなエラー メッセージを出してブ
   ートを停止する。
メッセージ例 1.
*** STOP 0x0000007B (......  )
INACCESSIBLE_BOOT_DEVICE
メッセージ例 2.
ハードウェアの構成が変わっています。 ・・・・

 Big LBA と呼ばれる 48 ビット LBA は Windows 2000 の Service Pack 3 以降、および Windows XP の Service Pack 1 以降からサポートされるようになった。

 ここでは 48 ビット LBA 未対応の Windows を、137 GB 以上のハードディスクにインストールする方法を探る。
 トリプルブートが目的なので、例として 250 GB のハードディスクに、3 つの OS をインストールすることを目指す。
それぞれの OS へのディスク容量の割り当ては次のようにする。
Windows XP120 GB
Windows 2000 server70 GB
Linux ES 360 GB

 以下では 48 ビット LBA 未対応の 2 つの Windows (XP, 2000 server) を、250 GB のハードディスクにインストールする。
※ Red Hat Linux ES3 のインストーラは 48 ビット LBA 対応済みなので、そのままインストールできる。


Y.2.準備

 ここで問題としている OS のインストーラは 137 GB 以降のハードディスク領域を認識しないが、インストール後に適切な Service Pack を当てた OS であれば 137 GB を超える領域を認識できるようになる。
 したがって 137 GB の壁を回避するには、137 GB 以前の領域にインストールした後でパーティションの操作を行うことになる。

Y.2.1.ハードディスク

 Service Pack 適用済みの Windows を、Partition Wizard を使って 250 GB のハードディスクに展開する方法は色々考えられるが、ここでは比較的簡単な方法を試みる。

 用意するのは目的とする 250 GB のハードディスク 1 台 (Y.3.ハードディスク1 台による回避手順) で可能だが、ハードディスクを 2 台使う方法 (Y.4.ハードディスク 2 台による回避手順) も検証する。  ハードディスクを 2 台使うと、MBR の編集をしないで済む。

Y.2.2.Partition Wizard

 パーティションのコピー、移動、リサイズといった操作に、フリーウェアの Partition Wizard Home Edition を使う。

 Partition Wizard Home Edition はこちらのサイトにアクセスし、[ Download ] ボタンをクリックしてダウンロードしておく。

Y.2.3.Service Pack

 あらかじめ次の Service Pack を用意しておく。
  • Windows XP Service Pack 2
    ※ Service Pack 1 は省略可。
  • Windows XP Service Pack 3
  • Windows 2000 Service Pack 4
  • ※ Service Pack 1 〜 3 は省略可。

Y.2.4.dskprobe

 ハードディスクに 2 つ目の Windows をインストールする際の MBR 編集に用いる。
※ dskprobe については、T.3.2.dskprobe 参照。



Y.3.ハードディスク 1 台による回避手順

 250 GB のハードディスク 1 台に 2 つの Windows をインストールし、Service Pack 適用後に Partition Wizard を用いてパーティション サイズを大きくする。

Y.3.1.Windows XP

  1. 用意したハードディスクをセットし、Windows XP のインストーラを起動する。
  2. 未使用領域に 10 GB の新規パーティションを作成し、NTFS でフォーマットする。
     作成済みのパーティションがあった場合、新規パーティション作成前にすべて削除しておく。
  3. 新規パーティションに Windows XP をインストールする。
    ※ インストール後、[コンピュータの管理] - [ディスクの管理] を見ると [ディスク 0] は 128.00 GB と
       認識されている。
  4. Service Pack 2 を適用する。
    ※ SP 2 適用後、[コンピュータの管理] - [ディスクの管理] を見ると [ディスク 0] の認識サイズは
       233.76 GB に変化している。
  5. ついでに Service Pack 3 も適用する。
  6. Partition Wizard Home Edition をインストールする。
  7. dskprobe を導入 (コピー) する。
  8. MBR のパーティション テーブルを編集する。
    ( MBR 編集の詳細は、V.1.MBR の編集 その 1 参照 )
    1. dskprobe を起動し PhysicalDrive0 を READWRITE で open する。
    2. アクティブ フラグを 0x00、パーティション タイプを 0x83 に変更する。
    3. 変更データを MBR に書き戻す。
  9. シャットダウンまたは再起動する。
    ※ Windows XP の起動はできない。

Y.3.2.Windows 2000 server

  1. Windows 2000 server のインストーラを起動する。
  2. 未使用領域に 10 GB の新規パーティションを作成し、NTFS でフォーマットする。
  3. 新規パーティションに Windows 2000 server をインストールする。
    ※ インストール後、[コンピュータの管理] - [ディスクの管理] を見ると [ディスク 0] は 128.00 GB と
       認識されている。
  4. Service Pack 4 を適用する。
  5. レジストリを編集し、48 ビット LBA のサポートを有効にする。
    1. レジストリ エディタ (regedit) を起動する。
    2. 次のキーを開く。
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Atapi\Parameters
    3. レジストリの値を次の内容で追加する。
      値の名前EnableBigLba
      データ型DWORD 値
      値のデータ0x1
    4. レジストリ エディタ (regedit) を終了し、PC を再起動する。
      ※ SP-4 適用、レジストリの編集後、[コンピュータの管理] - [ディスクの管理] を見ると [ディスク 0]
         の認識サイズは 233.76 GB に変化している。
  6. dskprobe を導入 (コピー) する。
  7. MBR のパーティション テーブルを再編集する。
    ※ MBR 再編集の詳細は概ね W.1.MBR の編集 その 2 に準ずるが、アクティブ フラグの扱いが異なる。
    1. dskprobe を起動し PhysicalDrive0 を READWRITE で open する。
    2. パーティション 1 のアクティブ フラグを 0x80、パーティション タイプを 0x07 に戻す。
    3. パーティション 2 のアクティブ フラグを 0x00 に変更する。
    4. 変更データを MBR に書き戻す。
  8. シャットダウンまたは再起動する。

Y.3.3.パーティション サイズの拡大

 10 GB のサイズでインストールした 2 つの Windows を、それぞれ 120 GB と 70 GB に拡大する。  しかしパーティション 1 (XP) の直後にパーティション 2 (2000) が続いているので、このままではパーティション 1 を拡大する余地がない。

 パーティション 1 を拡大可能とするには、拡大する大きさの空き領域をパーティション 1 の後方に確保する必要がある。  そこでパーティション 2 を後方に移動 (同時に拡大) し、空けた領域を利用してパーティション 1 を拡大する。
  1. Windows XP を起動する。
  2. Partition Wizard を起動する。
  3. パーティション 2 (Windows 2000 server) を選択し、[Move/Resize] をクリック。
  4. 左端にあるパーティション 2 のイメージをドラッグ、または直接数値を入力して [Unallocate Space Before] 欄を 110000 (11GB) にする。
    ※ 10 GB サイズでインストールした XP (パーティション 1) の、目標サイズ (120 GB) との差 (110 GB) を
       パーティション 2 の前に空ける。
  5. [Partition Size] 欄に 70000 (70 GB) を入力して [OK] をクリック。
    ※ Windows 2000 server を目標サイズの 70 GB に拡大する。
  6. パーティション 1 と 2 の間に確保した空き領域と、パーティション 2 (2000) のサイズ拡大を確認して [Apply] をクリック。
    ※ [Undo] をクリックすれば、変更操作 (移動・拡大) はキャンセルされる。
  7. 確認入力 (下図) で [YES] をクリックするとパーティションの移動と拡大が始まる (右図)。
  8. 終了時のメッセージでは [OK] をクリックする。

  9. パーティション 1 (Windows XP) を選択し、[Move/Resize] をクリック。
  10. パーティション イメージの右枠を右端 ([Unallocate Space After] の値が 0 になる) までドラッグして [OK] をクリック。
    ※ Windows XP を目標サイズの 120 GB に拡大する。
  11. パーティション 1 のサイズ拡大と、パーティション 1, 2 間の空き領域が無くなったことを確認して [Apply] をクリック。
    ※ [Undo] をクリックすれば、変更操作 (拡大) はキャンセルされる。
  12. 確認入力 (下図) で [YES] をクリックするとパーティションの拡大が始まる (右図)。
  13. 終了時のメッセージでは [OK] をクリックする。

  14. Partition Wizard を終了する。

Y.3.4.Linux ES3

 前項までの作業で 2 つの Windows の boot.ini およびパーティション タイプは Linux ES3 をインストールできる状況まで終了している。

 引き続き W.2.Linux ES3 のインストール 以降を実施すればトリプル ブートは完成する。




≪ previous [[ GRUB によるトリプルブートの実験 ]] next ≫