4.4. ディスクジオメトリ

フロッピーやほとんどのハードディスクに対し、LILO はカーネルからディスクの ジオメトリ情報を得ることができます。不幸にも、これらの情報を提供しない、 または間違った情報を提供する、変わったディスクやアダプタが存在します。

もしジオメトリ情報を利用できない場合は、LILO は以下のような出力をします。

  geo_query_dev HDIO_GETGEO (dev 0x<number>) 
 または
  Device 0x<number>: Got bad geometry <sec>/<hd>/<cyl> 

誤った情報が返される場合、ブートはいくつかの形で失敗するでしょう。典型的 なのは、``LILO''というバナーメッセージが、一部しか表示されない場面です。 このドキュメントでは、この状態を``ジオメトリ不一致''と呼びます。

次の試みとして、構成変数 LBA32 または LINEAR、若しくはコマンドラインオプション に、-L または -l を指定することでしょう。これでも事態が好転しない場合は、全 ディスクのジオメトリを明示的に指定する必要があります。ただし LINEAR オプション はフロッピーディスクに対しては、必ずしも正しく動作する訳ではないことに注意する 必要があります。

もう一つのディスクセクションの一般的利用例として、(E)IDE と SCSI ドライブの 混在環境で、かつ BIOS で、SCSI ドライブを第 1 ドライブとして設定している場合 です。(通常は、(E)IDE ドライブが第 1 ドライブで、SCSI ドライブが第 2 ドライブ となっているはずです。)LILO は、BIOS の設定などは分からないので、このような 変更を明示的に、LILO に知らせてあげる必要があります。(下の 2 番目の例を参照 してください。)

4.4.1. ジオメトリ情報の取得

ディスクジオメトリパラメータは、MS-DOS で起動して、ドライブの 16 進数コード を引数として、DPARAM.COM というプログラムを実行する(例えば、最初のハード ディスクの場合、「dparam 0x80」と指定)ことで取得することができます。これは トラック毎のセクター数、シリンダー毎のヘッド数、及び全シリンダー数を表示して くれます。3 つの数値とも 1 から始まります。

別の方法として、ROM-BIOS の設定画面に表示される情報を読んだり、BIOS を通じて ディスクにアクセス可能なオペレーティングシステム上で、ディスクユーティリティ を使っても取得することができるしょう。

4.4.2. ジオメトリの指定

ディスクジオメトリパラメータは、設定ファイルのグローバルオプションセクション に指定します。おのおののディスクパラメータセクションは、ブートイメージの指定 方法と似ていて、DISK=<ディスクデバイス> という指定で始まります。できるだけ、 グローバルオプションセクションの最初か、最後に記述した方が、互いのディスク パラメータセクションがグループ化されている方が分かりやすいでしょう。

各ディスクに対して、以下のような変数が指定できます。

BIOS=<biosデバイスコード>

BIOS=<bios デバイスコード> は BIOS がそのデバイスを表現するのに用いる 数値 です。通常は、第 1 ハードディスクが 0x80 で、第 2 ハードディスクが 0x81 となります。16 進数は、必ず``0x''で始めなければいけないことに注意して ください。これが省略されると、LILO は数値を``推測''しようとします。

SECTORS=<セクター数> と HEADS=<ヘッド数>

SECTORS=<セクター数> と HEADS=<ヘッド数> は、トラック毎のセクター 数と、ヘッド数、言い換えれば、 シリンダー毎のヘッド数を指定します。両方のパラメータは、必ず両方を指定 するか、いずれも省略するかしないといけません。この値が省略されると、LILO はカーネルからジオメトリ情報を取得しようと試みます。

CYLINDERS=<シリンダー数>

CYLINDERS=<シリンダー数> は、シリンダーの数を指定します。この値は正当性の 検査のみに使用されます。この値が省略されると、他のパラメータを決定するの に必要な場合のみ、カーネルから得たジオメトリ情報を使います。そうでない 場合 * は、LILO はシリンダー数を 1024 であると想定します。これは BIOS に よって課せられたシリンダー数上限です。

INACCESSIBLE

INACCESIBLE は、 (BIOS のために)当該デバイスをアクセス不能なものとします。 これは、システム上のいくつかのディスクが、LILO は、きっと BIOS は読める だろうと``思う''かもしれないが、実際は BIOS からは読めない場合などに有効 です。たまたま、そのようなディスク上に、ブート時に必要なファイルを置いて しまった場合、マップインストーラはシステムがブート出来なくなる旨の警告を 発することができません。INACCESSIBLE の典型的な利用方法としては、上記の ような状態に一度陥るって、それが何度も繰り返されてしまうことを防ぐことに あります。INACCESSIBLE が設定されたデバイスは、他の変数は一切無効となり ます。

* 言い換えれば、BIOS デバイスコード、セクター数、ヘッド数、及びパーティ ションの開始点が指定されている場合です。もし CYLINDER が省略されて、 パーティション開始点のみ指定された場合、シリンダー数は違ってみえるかも しれないことに注意してください。

加えて、パーティションサブセクションとして PARTITION=<パーティションデバイス> を加えることができます。おのおのの パーティションセクションは以下の一つの変数のみ含めることができます。