ASUS P2BにおけるHDD容量の壁 - Big Drive非対応BIOS
3TBのHDD (WD30EZRZ) が余ったので、Win98機で使っているASUS P2BにIDE/SATA変換基板を通して接続してみたんだけど、当然そのままでは使えなかった。
使用マザーボードはASUS P2B。BIOSのバージョンはRevision 1013 Beta 007、Award Modular BIOS v4.51PG。v4.51の有名なバグである「32GBの壁」は修正済みのバージョン。Int 13h Extensionで8GBの壁を突破しているなら、137GBの壁は心配しなくてもいいだろうと思ったら、そうでもなかった。
まず、3TBのHDDを設定そのまま繋いでみる。POST画面を見ていると容量が8455MBと、バグって認識されていることが分かる。
Windows 98の起動ディスクからFDSKを実行してみても、やはり容量は約8GB (8063MB) と表示される。
最初は単なるオーバーフローかと思って、MHDDを使ってHDDの容量制限を色々試していた。
MHDDに/enableprimaryスイッチを付けて実行する。スイッチを付けずに実行すると、プライマリマスターのドライブは認識されないので注意。
処理対象とするHDDの番号を入力し、コマンド「HPA」を実行。1 (Persistent) を入力して、新しい最大LBAアドレス(アドレスは0から始まるので、LBAセクタ数 - 1)を入力する。MHDD上で設定を完了しても、反映させるには再起動ではなく電源を入れ直す必要があるので注意。
マザーボードが48bit LBAに対応していないとみて、28bit LBAの最大値である268,435,456 - 1 (約137.4GB, 128.0GiB)の値を指定してみたが、それでもダメ。
色々探っていった結果、267,386,880 - 1 (136.9GB, 127.5GiB)が壁であることが判明した。この値はCHSパラメーターの最大の組み合わせ 65536 × 16 × 255の値だ。どうも、BIOS内部でLBAをCHSに変換する処理があるのか、これより大きいサイズのディスクは正しく認識できなくなる。なお、POST画面では136901MBと表示されているが、ここに表示されるサイズがどういう計算で出ている数字なのか不明。
Win98起動ディスク上のFDSKでもサイズが正常に認識された。
Win98はシステム上BIOSを利用するので、P2BのオンボードIDEを通してWin98をインストールするなら、HDDのサイズを136GB以下に制限する必要がある。
サイズを元に戻してWindows 2000 SP4のセットアップを起動したところ、131070MBとして認識された。Windows 2000はSP3以降でBig Driveに対応しているが、インストール後にレジストリを操作する必要があるので、対応は限定的と言える。
Windows XPでは、HDDのサイズを2TBに制限しないと使用可能な容量が逆に小さくなるバグがある。2TB制限後にWindows XP SP1のセットアップを起動したところ、1907343MBとして認識された。セットアップの時点でBig Driveに対応しているようだ。
ただし、136GBを超えるサイズでパーティションを作成してインストールすると、最初の再起動後に「A disk read error occurred」と表示されて進まなくなる。BIOSがBig Driveに対応していないため、ブートできないのだろう。
120GBのパーティションを作ってインストールが終わったところ。ちゃんと2TBのディスクとして認識されている。
137GBを超える位置に大容量パーティションを作成してみたが、正常に行われた。
以上から分かったことは、P2Bで使用するハードディスクは136GB以下に容量制限をかけた方がいい。Windows XPで使用するなら、システムドライブを136GB以下にすれば余った分はデータドライブとして使えそう。