大容量 IDE DISKについての勉強

会社ではSun、自宅ではMacを使用ということもあり、今回 MicroPCで遊ぶにあたって、いろいろと謎の部分が出てまいりました。いや、私とてベアボーン組み立て経験はこれで2台目。PC UNIX経験もそれなりにあるのだから、当然知っていてもよい話題なのですが・・。なんとなく知ったかぶりだった「大容量 IDE DISK」について勉強をしましたので以下にまとめておきます。「8GBあたりに制限がある」と噂にはいろいろききますが、 果たして適当に買ってしまった私のIBM Travelstar 20GBのHDは使えるのか(^_^;

制限の原因は「HDのアドレッシングについてIDEの規格とBIOSの規格が異なる」ことに端を発していたようです。現在のIDEの規格は28bit、その当時BIOSは24bitで表現されていました。上記定義をシリンダ数・ヘッド数・セクタ数で表わすと下記の通り。

  Cylinder Head Sector  
IDE(28bit) 16bit 4bit 8bit 127.5GB
BIOS(24bit) 10bit 8bit 6bit 7.8GB

単純に考えた場合、IDEとBIOSの制限によりその最大公約数(10x4x6=20bit)の504MBまでしか利用できません。定義当時は十分な大きさだったかもしれませんが、現在ではまったく足りません。現在のIDEの規格の最大容量127.5GBをどのように使っていけるのでしょうか。大容量DISKを利用するためには「アドレス表現の拡張」と「BIOSの拡張」が必要でした。

アドレス表現の拡張
CHS方式 20bit (C10xH4xS6) 504MB
CHS変換方式 24bit (C14xH4xS6) 7.8GB
CHS変換方式(LARGE) 26bit (C16xH4xS6) 31.4GB
LBA方式 28bit (28) 127.5GB

BIOSコール(Diskアクセス)の拡張
INT13 7.8GB
拡張INT13 127.5GB

大容量HDが使えるかどうかは「HD」「BIOS」「OS」等が上記の制限をクリアしているかどうかになります。以下にチェックポイントをまとめます。

  • HDがどのアクセス方式をサポートしているか?
  • BIOSが拡張INT13をサポートしているか?
  • OSのデバイスドライバがどのdiskアクセス方式をサポートしているか?
  • 他にOS毎の制限やブートローダ/セレクタなどの制限はないか?

ちなみにMicroPCのBIOSは拡張INT13をサポートしていますし、IBM Travelstar 20GBは LBAをサポートしていますので、あとはOS次第。最近のFreeBSDはLBA方式のデバイスドライバがありますので、ブートセレクタなどを使わなければ、問題なく利用できそうです。