Large Diskで駄目


Large Diskを使用する場合に注意することは下の二つ。

たったこれだけだが、これだけのことに填ってしまった。填ったら恨みも込めて備忘録だっ。

ちなみに LBAがどうのこうのという話は他に譲ります。


BIOSが管理するHDD

BIOSを起動し、IDE Auto Detectionを使ってHDDのパラメータを見てみよう。大概の場合は Normal, LBA, Largeの三種類がリストアップされていると思う。Largeについては解らないが、どうやら(少なくとも私のシステムでは) Normal, LBAは

らしい。Head <= 16 というのは IDE側による制限だが、これに忠実だとCylinder数が増えてしまって
OSは、先頭から 1024 cylinder以内から起動しなければならない
というOS側の制限が厳しくなる。だから Head数をBIOS側で勝手に増やし Cylinder数を減らしているわけだ。


DOS/Windowsが管理する HDD

特に DOS/Windowsでは、先の起動云々の制限は

起動ドライブは先頭から1024cylinder以内に作らなければならない
と置き換えられる。Headが255ならこれは8.4GBに相当するが、Headが16なら528MBになる。

ではBIOSが Head=255 なパラメータを付けて起動出来なかった場合はどうか?実はWindowsはOS側で先ほどのような変換を行っているようだ。だから BIOSでのHDD設定が Normal になっていても Windowsだけ使っている分には余り問題ではない。

唯一問題になりそうなのは、BIOSとOSの両方に関わるモノ。例えば...パーティションを操作するツールは危ないと思われる(ハイ、一度死にました)。


Linuxが管理するHDD

Linuxのfdiskは C,H,Sのパラメータを自由に変更できる。またブート方法もたくさんあるので、1024cylinder問題も軽微である。だからLinuxだけ使っているぶんにもそう問題ない。liloが使えないくらいだが、個人的にはloadlinの方が便利なので。


相互運用

しかし、相互的に運用するとなるとこれが凄〜く問題になる。それぞれが勝手なアドレス付けしていたら...

私の例では、某西指の13GB HDDを使っていたのだが、マザーボードがATA66非対応であるのが災いし、BIOSの寄越したLBA的パラメータをHDDが無視しやがった。おかげで起動画面には LBA, UDMA2, 528MBと出る始末...

仕方がないので HDDの寄越したCHSパラメータをそのまま鵜呑みにして boot。よってWindowsとLinuxが 異なるアドレスで同じHDDを解釈してしまい、下に示す様々な問題が発生してしまった。

はっきり言って、かなり死ねました。LinuxはCHSパラメータを変更できるので、BIOSの認識した LBAパラメータを与えれば Windowsとの互換性もばっちりと思ったが、どうも気難しいWindows様のお気に召さなかったらしい。

結局 BIOSの提示したLBAパラメータを HDDが拒否して起動したのが問題だったため、HDDに当たりを付けて ATA66を無効化したら目出度くLBAモード13GBで起動した。これでBIOS/DOS/Linux間で共通のアドレスが持てるためハッピーである。

ATA66対応HDDを 非対応システムで使用するといろいろ問題がある(PIO mode4で動いたり...)ので、必ず無効化すべきである。各社のwebpageに急げ!

ちなみに、無理矢理8.4G超のHDDを認識させるソフトウェアも提供されているが、幸せになりたければそれらは使わない方が良い。やはり管理方法の違いがでると面倒なので。


主頁に戻る