# LILO README

v22 November, 2000
John
Coffman

    johninsd@san.rr.com

日本語訳
高安延匡

このドキュメントでは、ディスク構造とブートの基礎について紹介しています。続いて 一般的な起動テクニックの概要、さらにより詳細な LILO のインストール方法と 使い方の説明をしています。最後のトラブルシューティングセクションでは、診断 メッセージと過去に発見されたほとんどの問題の解決案を含んでいます。

## LILO - Linux 汎用ブートローダ

LILO - Linux 汎用ブートローダ ("LInux LOader") by Werner Almesberger

### バージョン 21-4 (リリース)

Version 21-4 (release) -- John Coffman <johninsd@san.rr.com>

Werner から、このリリースが彼の version 21 から派生したものであることを示す ための小規模な変更が提案されました。このため、VERSION を置き換えるものとして VERSION_MAJOR と VERSION_MINOR を追加しました。VERSION というファイルは '`version.h`' というファイルに置き換えられました。

`lba32` オプションが指定された場合にのみ、EDD パケットコールを 使うように、第 1、第 2 ステージローダが変更されました。`linear` オプションは常に BIOS にディスクのジオメトリを問い合わせた後、C:H:S アドレッシ ングモードを使います。

### バージョン 22 (ベータ)

Version 22 (beta) -- John Coffman <johninsd@san.rr.com>

このバージョンは拡張 BIOS コール（INT 0x13, AH=0x42）とパケットコールの インターフェースを使って、8.4Gb 以上のディスクからのブートを可能にするために 作られました。これらのコールは 1998 年以降のシステムにおいてや、EZ-DRIVE(tm) のような 拡張ソフトウェア BIOS を通じてサポートされます。

私が LILO にこれらの変更を施すにあたって、まず心がけたことは、従来のものは 何も変えないことです。それ故セクターの 32bit ダイレクトアドレスはファイル `lilo.conf` の新しいキーワード `lba32` に よってサポートされます。このキーワードはキーワード `linear` と 相互に排他です。コマンドラインではこれらのオプションは、それぞれ新しい `-L` スイッチと、以前からの `-l` スイッチに よって呼び出されます。

Werner Almesberger に対しては、直接連絡を取ることなく、これらの変更、追加を 行なったことをお詫び致します。しかし最新の `lilo.lsm` ファイルに 書かれた彼の e-mail アドレスでは、彼とコンタクトを取れませんでした。 私は LILO のバージョンを飛び越えるつもりはありません。

ディスクのセクターアドレスはマップインストーラ（実行ファイル `lilo` ）によって第 1, 第 2 両ステージのブートローダに以下の 5 バイト 構造体で与えられます。

         sector    [1..63] と、シリンダーの上位 2bit 分
         cylinder  [0..1023] このバイトは下位 8bit 分に割り当て
         device    [0..3]はフロッピー用に,[0x80..0x8F]は ハードディスク用
         head      [0..254] 最大値は 254 で、255 ではない
         count     [1...] 転送すべきセクター数

最初の 2 バイトは通常 CX レジスターにロードされ、次の 2 バイトは DX レジスター にロードされ、最後のバイトは AL レジスターにロードされます。これはオリジナルの IBM-BIOS の CHS アドレス機構のために使われる BIOS コールです。LILO はコール が 64kB DMA 境界を跨がないこと、及び count 値がディスクの 1 トラック当たりの セクター数を決して超えないことを検査します。

`linear` キーワードが指定された場合、24bit 長の 0 で始まる アドレス機構が採用され、下位 8bit は `sector` に、中間 8bit は `cylinder` に、そして上位 8bitは `head` に割り 当てられます。`linear` アドレスであることを示すため、フラグ が `device` バイトの bit 6（マスク 0x40）にセットされます。 `count` フィールドは 128 が最大値です。これより大きいと 64kB DMA 境界を跨ぐからです。トラック境界を跨がないかを検査するのは、ローダコード （第 2 ステージローダだけですが）の役割です。

`lba32` アドレスの場合は、もっと状況は複雑になります。`device` バイトに bit 5 にフラグがセットされます。32bit アドレスは、 下位バイトから上位バイトまで、`sector, cylinder, head, count` の各フィールドに渡ります。 このフル 32bit アドレスが明示的に指定されたときはいつでも、転送すべき現実の セクターは 1 であるとされます。この事実は `device` バイトの bit 4（マスク 0x10）がセットされることで示します。マルチセクター転送を行なう場合 は、上位 8bit は明示的に指定せず、以前の転送と同じであると推定し、転送すべき セクターの `count` は 2 から 127 の範囲となり、`device` バイトの bit 4（マスク 0x10）はクリアされます。

第 1 ステージローダはシングルセクター転送しか使わず、そのため単純なディスク リードルーチンを使い、常に転送セクターは 1 であると見なし、`device` バイトに `lba32` モードを見つけた時は常にフル 32bit アドレスであると見なします。しかし、第 2 ステージローダはマップ圧縮が利用され たとき（`-c` オプションが指定 されるか、`compact` グローバルオプションを指定）は、マルチセクター転送が可能となり、`initrd` やカーネルのイメージのロードにフル機能のリードルーチンを使い ます。

`linear`、`lba32` の両オプションはもし利用可能 なら、拡張 BIOS パケットコールを使います。そうでない場合、ディスクアドレスは int 0x13 AH=8 によって返されるディスクジオメトリを使って C:H:S アドレスに変換 されます。もしシリンダーが、例えば 1023 を越えて溢れた場合、エラーコード `9f` を発行します。

BIOS コールは「Enhanced Disk Drive Specification, version 3.0, rev 0.8, dated March 12, 1998」に準拠して大容量ディスク起動を実装しています。この文書は Phoenix Technologies Ltd., の Web サイトにある以下の URL からオンラインで 入手できます−

http://www.phoenix.com/products/specs.html

既知の問題− チェーンローダ `os2_d.b` は、まだ OS2 4.0 を私の``D:'' ドライブの第 2 パーティションから起動できません。ブートマネージャは可能なので、私は 引き続きこの問題に取り組んでいます。

### バージョン21

重要- ファイル INCOMPAT は LILO のこのリリースにおける重要な（非）互換性 情報について記述しています。まずこちらを読んでください。

ブートローダのインストールは元来危険なことです。あなたのハードディスクに LILO をインストールする場合、他のメディアからシステムを起動する手段があるか 確認してください。

```doc`''ディレクトリにはこのドキュメント の LaTeX バージョンもあります。純粋な ASCII コードよりは読みやすいでしょう。

### インストール

互換性については、ファイル INCOMPAT を参照してください。

インストール手順についてはセクション 標準初期インストールに記述され ています。全般的なことは ブートの基礎 を参照してください。

*** 簡易インストール ***

あなたがハードディスクに LILO をインストールしたいと思い、すべての機能 を使う必要がないのであれば、簡易インストールスクリプトを使えます。 詳細は 簡易インストール を参照 してください。

LILO は Linux のための多機能なブートローダです。特定のファイルシステムに 依存せず、フロッピーディスクやハードディスクディスクから Linux カーネルを 起動でき、他のオペレーティングシステムの``ブートマネージャ''としても機能 します。 PC/MS-DOS, DR DOS, OS/2, Windows 95, Windows NT, 386BSD, SCO UNIX, Unixware, ...

ブート時に 16 個までの異なったイメージを選択できます。ルートデバイスの ような様々なパラメータをそれぞれのカーネルに別々に指定できます。マスター ブートレコードとしても利用することができます。

このドキュメントでは、ディスク構造と起動の基礎について紹介しています。続いて 一般的な起動テクニックの概要、最後により詳細な LILO のインストール方法と 使い方の説明をしています。最後のトラブルシューティングセクションでは、診断 メッセージと過去に発見されたほとんどの問題の解決案を含んでいます。

すでに古いバージョンの LILO をお使いであっても、 インストール と 設定 のセクションだけは最低限読んでください。今回のマイナーバージョンアップ 版には、旧バージョンとの互換性のない部分について、詳しく説明した INCOMPAT と いうファイルが添付されています。

せっかちな人のために− 単純ですが実に有用なインストールができる簡易インストールスクリプトを用意して います。詳細は簡易インストールの セクションを参照してください。

しかし待ってください。今まで LILO について経験された殆どの問題を回避できる 簡単なルールがここに少しだけあります。

- 落ち着いてください。うまく動作しない時は、何が悪いのかを探しだし、貴方の 想定を確認してから、はじめて修正を試みてください。

- ドキュメントを読んでください。特にシステムの振る舞いが貴方の思ったものと 違う場合は特に。

- 緊急ブートディスクがあるか確認してください。そしてその使い方を貴方が知って いるのかということと、それが最新の状態に保たれているかも含めてです。

- カーネルまたは設定ファイルなどを含め LILO を構成物を変更した時はいつも、 /sbin/lilo を実行してください。変更したかどうか疑わしい時も実行しましょう。 それでも /sbin/lilo をそれ程多くは実行することはないでしょうから。

- もし破壊的アップグレードや Linux パーティションの削除を行う時で、LILO を MBR として使っている場合は、事前に LILO を削除してください。

- セットアップスクリプトを鵜呑みにしてはいけません。ブートの前に常にそれが 作り出す /etc/lilo.conf を常に確認してください。

- 大容量ディスクを使用する時は、不都合に備えましょう− LINEAR オプションを 使う必要が、たぶんあるでしょう。

### システム概観

LILO はいくつかのプログラムとその他ファイルの集合体です。

マップインストーラ

  マップインストーラは、Linux 上で使用するプログラムで、LILO に属する全ての ファイルを所定の場所に置き、ブート時に必要なデータの位置情報を記録します。 このプログラムは、通常、/sbin/lilo に置かれます。LILO に関係する部分で システム変更を行った場合、たとえば、新しいカーネルをインストールした場合 などには、常に、/sbin/lilo を実行してこの情報を更新する必要があります。

様々なファイル

  様々なファイルは ブートローダなどブート時に LILO が必要とするデータを含ん でいます。これらのファイルは通常 /boot にあります。最も重要なファイルは ブートローダ（後述）とマップファイル（/boot/map）--マップインストーラが カーネルの位置を記録するところ--です。 LILO はファイルシステムの読み方は知りません。そのかわりマップインストーラ はカーネルにカーネルイメージなどのファイルの物理的位置を訪ね、それを記録 します。このため LILO は Linux よってサポートされる殆どのファイルシステム に対し動作することができるのです。 もう一つの重要なファイルは、通常 /etc/lilo.conf と呼ばれる設定ファイルです。

ブートローダ

  ブートローダは BIOS によってロードされ、カーネルや他のオペレーティング システムをロードする LILO の一部です。それは対話的にブート項目を選択し、 ブートオプションを追加するためのシンプルなコマンドラインインターフェース を提供します。

LILO はまず、システムの以下の部分にアクセスします−

ルートファイルシステムパーティションは 2 つの理由から重要です。まず LILO は 時々カーネルにルートパーティションがどこであるかを教える必要があります。 次にそこは大抵、ブートセクター、/boot ディレクトリ、そしてカーネルのような LILO が使う多くのアイテムのためにも都合のいい場所です。

ブートセクタ

  ブートセクターは LILO のブートローダの最初の部分を含んでいます。それはより 大きな第2ステージローダをロードします。両ローダは通常は /boot/boot.b というファイルに格納されています。

カーネル

  カーネルはブートローダによってロードされ開始されます。カーネルは通常は ルートディレクトリか /boot に置かれます。

ブート時に LILO が必要とするファイルの多くは、BIOS を用いてアクセスしなけ ればならないことに注意してください。このことはある種の制限を生みます。 BIOS 制限のセクションを参照して ください。

## 序説

以下のセクションでは、PC は一般にどのようにブートするのか、また特に LILO を 用いて、Linux をブートする時に何を知らないといけないかを解説しています。

### ディスク構造

ブートコンセプトを設計する時、PC がディスクを如何に巧妙に構成しているかを 理解することは重要です。最も単純なケースはフロッピーディスクです。それは、 ブートセクターと（FAT やスーパーブロックなどの）いくつかの管理データとデータ 領域から構成されています。管理データは、ことブートに関する限りでは、あまり 関係はありませんから、話を簡単にするため、データ領域と一緒に扱います。

                +---------------------------+
                |ブートセクター|            |
                |--------------+            |
                |                           |
                |        データ領域         |
                |                           |
                |                           |
                +---------------------------+

Linux ではディスク全体は（/dev/fd0 のような）一つのデバイスとして表現します。

MS-DOS のブートセクターは以下のような構造をしています−

                        +--------------------------------+
                  0x000 |プログラムコードへのジャンプ命令|
                        |--------------------------------|
                  0x003 |                                |
                        |      ディスクパラメータ        |
                        |                                |
                        |--------------------------------|
            0x02C/0x03E |                                |
                        |       プログラムコード         |
                        |                                |
                        |                                |
                        |--------------------------------|
                  0x1FE |    マジックナンバー (0xAA55)   |
                        +--------------------------------+

LILO も殆ど同じブートセクターを使っていますが、ディスクパラメータの部分は 含んでいません。このことは Minix や Ext2 などその他類似のファイルシステム にとっては問題ありません。これらはブートセクターを見ないからです。しかし MS-DOS ファイルシステムに LILO のブートセクターを置くと、MS-DOS がアクセス 不能になってしまいます。

ハードディスクはフロッピーディスクよりも複雑に構成されています。そこには パーティションと呼ばれる、いくつかのデータ領域が含まれています。MS-DOS の ハードディスクには、基本パーティションと呼ばれるパーティションが最大 4 つ まで存在します。より多くのパーティションが必要な場合は、一つの基本 パーティションを、いくつかの論理パーティションを含む、拡張パーティション として使います。

ハードディスクの最初のセクターにはパーティションテーブルがあります。また 拡張パーティションと「それぞれの」論理パーティションにもパーティション テーブルが存在します。

            +--------------------------------------------+
            | パーティションテーブル           /dev/hda  |
            | +------------------------------------------|
            | | パーティション 1               /dev/hda1 |
            | |                                          |
            | |------------------------------------------|
            | | パーティション 2               /dev/hda2 |
            | |                                          |
            +--------------------------------------------+

ディスク全体には、/dev/hda、/dev/hdb、/dev/sda、などといった呼称でアクセス することができます。基本パーティションは、/dev/hda1 ... /dev/hda4 です。

            +--------------------------------------------+
            | パーティションテーブル           /dev/hda  |
            | +------------------------------------------|
            | | パーティション 1               /dev/hda1 |
            | |                                          |
            | |------------------------------------------|
            | | パーティション 2               /dev/hda2 |
            | |                                          |
            | |------------------------------------------|
            | | 拡張パーティション             /dev/hda3 |
            | | +----------------------------------------|
            | | | 拡張パーティションテーブル             |
            | | |----------------------------------------|
            | | | パーティション 3             /dev/hda5 |
            | | |                                        |
            | | |----------------------------------------|
            | | | 拡張パーティションテーブル             |
            | | |----------------------------------------|
            | | | パーティション 4             /dev/hda6 |
            | | |                                        |
            +--------------------------------------------+

このハードディスクには 2 つの基本パーティションと 2 つの論理パーティションを 含む拡張パーティションがあります。論理パーティションは、/dev/hda5 ... として アクセスできます。

論理パーティションのパーティションテーブルには、あるデバイスの先頭ブロックと してアクセスできないことに注意してください。ただし、メインのパーティション テーブル、全てのブートセクター、及び拡張パーティションのパーティションテーブル にはアクセスできます。

パーティションテーブルは、パーティションブートセクターに格納されます。通常、 ディスク全体のパーティションブートセクターだけは、一種のブートセクターとして 使います。それはまた、よくマスターブートレコード(MBR)を呼ばれ、以下のような 構造になっています−

                        +---------------------------+
                  0x000 |                           |
                        |     プログラムコード      |
                        |                           |
                        |                           |
                        |---------------------------|
                  0x1BE |   パーティションテーブル  |
                        |                           |
                        |---------------------------|
                  0x1FE | マジックナンバー (0xAA55) |
                        +---------------------------+

LILO のブートセクターは、パーティションブートセクターとして使用できるように 設計されています。（つまりパーティションテーブル用のスペースを確保してます） そのため、LILO ブートセクターは、以下のような場所に置くことができます。

- Linux フロッピーディスクのブートセクター。 (`/dev/fd0`, ...)

- 第1ハードディスクの MBR。(`/dev/hda, /dev/sda,` ...)

- 第1ハードディスクの Linux ファイルシステムの基本パーティションの ブートセクター。(`/dev/hda1`, ...)

- 第1ハードディスクの拡張パーティションのパーティションブートセクター。 (`/dev/hda1`, ...) 殆どの FDISK などのプログラムは拡張パーティションからブートされるとは 思っていないので、拡張パーティションをアクティブにすることを拒否します。 LILO は、この制限のない activate という小さなプログラムを同梱しています。 Linux fdisk もまた拡張パーティションのアクティブ化をサポートしています。

LILO は以下の場所には置くことはできません。

- Linux 以外のフロッピーディスクや基本パーティションのブートセクター。

- Linux のスワップパーティション。

- 拡張パーティション内の論理パーティションのブートセクター。 LILO を、-b オプションや、BOOT 変数を使って、このような場所に強制的に 置くことは可能です。しかし論理パーティションからのブートをサポートした マスターブートレコードに置くようなプログラムは殆どないでしょう。

- 第 2 ハードディスク上。（現在の第1ハードディスクが外されたり、壊れた 場合のバックアップ用のインストールの場合はこの限りではありませんし、 他のブートローダを使って他のデバイスからブートすることは可能です。

LILO は無効な場所にブートセクターを何とか置くことを試みようとしますが、 決してそれを信じてはいけません。

### ブートの基礎

フロッピーディスクからブートする場合は、ディスクの先頭セクター、つまりブート セクターがロードされます。そのブートセクターには、各々のオペレーティング システムをロードする小さなプログラムを含んでいます。MS-DOS のブートセクターは ディスクやファイルシステムのパラメータ（クラスタサイズ、セクター数、ヘッド数 など）を格納したデータ領域なども含んでいます。

ハードディスクからブートする場合は、ディスクの最先頭セクター、つまりマスター ブートレコードがロードされます。このセクターにはローダプログラムとディスク のパーティションテーブルが含まれています。ローダプログラムは大抵、フロッピー からブートした時と同じようにブートセクターをロードします。

マスターブートレコードとブートセクターの両者には、特に機能的な違いがある訳で はないことに注意してください。ただし、マスターブートレコードはパー ティション 情報を持っている反面、特定のファイルシステムに特化した情報（例えば MS-DOS の ディスクパラメータ）は持っていない点は違います。

マスターブートレコードの先頭 446 (0x1BE) バイトはローダプログラムによって 使用されます。その後に 64 (0x40) バイトのパーティションテーブルが続きます。 最後の 2 バイトは、時折そのセクターが正しいブートセクターなのかを確認する ために使われるマジックナンバーとなっています。

考え得るブート構成は、非常にたくさんあります。最も普通の構成は以下の セクションで説明します。

#### MS-DOS のみ

       +-------------------------------------------------------------------+
       | マスターブートレコード  ブートセクター   オペレーティングシステム |
       |-------------------------------------------------------------------|
       | DOS-MBR --------------> MS-DOS --------> COMMAND.COM              |
       +-------------------------------------------------------------------+

これは MS-DOS をハードディスクからブートした時の通常のパターン− DOS-MBR は アクティブなパーティションを決定し、MS-DOS のブートセクターをロードします。 このブートセクターは、MS-DOS をロードし、最終的には COMMAND.COM に制御を渡し ます。（非常に単純です）

#### LOADLIN

       +-------------------------------------------------------------------+
       | マスターブートレコード  ブートセクター   オペレーティングシステム |
       |-------------------------------------------------------------------|
       | DOS-MBR --------------> MS-DOS --------> COMMAND.COM              |
       |                                     ---> LOADLIN -------> Linux   |
       +-------------------------------------------------------------------+

典型的な LOADLIN 設定− 殆どは MS-DOS の時と同じですが、CONFIG.SYS か AUTOEXEC.BAT で LOADLIN が呼び出されます。大抵は、BOOT.SYS のようなプログラム を使って CONFIG.SYS や AUTOEXEC.BAT の複数の構成セクションを選択します。 この方法は、ブートセクターを変更しなくて済むという、優れた特性を持っています。

#### DOS-MBR による LILO の起動

       +-------------------------------------------------------------------+
       | マスターブートレコード  ブートセクター   オペレーティングシステム |
       |-------------------------------------------------------------------|
       | DOS-MBR --------------> LILO ----------> Linux                    |
       |                    ---> 他の OS                                   |
       +-------------------------------------------------------------------+

これは``安全''な LILO の設定です− LILO は DOS-MBR によってロードされます。 決して他のブートセクターを触ることはありません。もし他の OS （もし複数の OS が使用されている場合は、そのうちの一つ）を LILO を使わないでブートしたいなら、 そのパーティションを、fdisk か activate を使ってアクティブにしなければなり ません。

インストール

  - Linux パーティションのブートセクターに、LILO をインストールします。

  - fdisk か activate を使ってそのパーティションをアクティブにします。

  - 再起動をします。

アンインストール

  - 他のパーティションをアクティブにします。

  - LILO か Linux の一方もしくは両方を、何らかのソフトウェアで上書き インストールします。

#### 複数の分岐処理

       +-------------------------------------------------------------------+
       | マスターブートレコード  ブートセクター   オペレーティングシステム |
       |-------------------------------------------------------------------|
       | DOS-MBR --------------> MS-DOS --------> COMMAND.COM              |
       |                                     ---> LOADLIN -------> Linux   |
       |                    ---> LILO ----------> Linux                    |
       |                                     ---> MS-DOS --- ...           |
       +-------------------------------------------------------------------+

上記のような拡張パターン− MBR は変更せず、双方の分岐はそれぞれ Linux と MS-DOS をブートできます。（LILO はまた別のオペレーティングシステムをブート することができます）

#### BOOTACTV 他にも、たぶんより有名な切り替え型ブートプログラムとして、例えば OS/2 のブートマネージャなども同様の動作をします。インストールの手続きは普通 違うでしょうが。 による LILO の起動

       +-------------------------------------------------------------------+
       | マスターブートレコード  ブートセクター   オペレーティングシステム |
       |-------------------------------------------------------------------|
       | BOOTACTV -------------> LILO ----------> Linux                    |
       |                    ---> 他の OS                                   |
       +-------------------------------------------------------------------+

ここでは、MBR が BOOTACTV（または他の対話型ブートパーティションセレクター） によって置き換えられ、ブート時に、Linux と他のオペレーティングシステムを 選択することができます。LILO が他のオペレーティングシステムを起動できない 場合などにこの方法を使うべきでしょう。 もし他のブートパーティションセレクターでは起動できて、LILO では起動 できなかった場合、作者に知らせてもらいたいと思います。

インストール

  - Linux をブートします。

  - 以下のようにして、MBR のバックアップをとります。

         dd if=/dev/hda of=/fd/MBR bs=512 count=1

  - Linux パーティションのブートセクターに、LILO をインストールします。

  - 以下のようにして、MBR に BOOTACTV をインストールします。

          dd if=bootactv.bin of=/dev/hda bs=446 count=1

  - 再起動します。

アンインストール

  - Linux をブートします。

  - 以下のようにして、元の MBR を復元します。

         dd if=/fd/MBR of=/dev/hda bs=446 count=1

    または、MS-DOS上で

         FDISK /MBR

もし MBR を書き換えるのがいやで、第 2 の Linux パーティション（たとえば /usr など、swap パーティションではだめ）があるなら、BOOTACTV は パーティション テーブルと合わせて、そのパーティションのブートセクターとして格納することが できます。そしてそのパーティションをアクティブにすることで、DOS-MBR から ブートさせることができます。

##### BOOTACTV を Linux の第二パーティションに格納する

    # dd if=/dev/hda of=/dev/hda3 bs=512 count=1
    # dd if=bootactv.bin of=/dev/hda3 bs=446 count=1

警告− ディスクのパーティションのきり直しをした時は、必ず``予備''の Linux パーティションのこの合併したブートセクターも更新してください。

#### LILO のみ

       +--------------------------------------------------+
       | マスターブートレコード  オペレーティングシステム |
       |--------------------------------------------------|
       | LILO -----------------> Linux                    |
       |                    ---> 他の OS                  |
       +--------------------------------------------------+

LILO はまた全ブート手続きを引き受けることもできます。MBR にインストールした 場合、LILO は Linux と他の OS のブートに関し、責任を持つことになります。 この方法にはデメリットもあります。元の MBR は上書きされるので、もしシステム から Linux を削除する場合、それは復元されなければなりません。（バックアップ コピーからか、最新のバージョンの MS-DOS 上で、FDISK /MBR を行うか、BOOTACTV のようなもので上書きするか）

この方法を試す前に、あなたの他のオペレーティングシステムを LILO がブート できるかを確認しておくべきでしょう。

インストール

  - Linux をブートします。

  - 以下のようにして、フロッピーディスクに MBR のバックアップをとります。

         dd if=/dev/hda of=/fd/MBR bs=512 count=1

  - MBR のブートセクターに、LILO をインストールします。

  - 再起動します。

アンインストール

  - Linux をブートします。

  - 以下のようにして、元の MBR を復元します。

         dd if=/fd/MBR of=/dev/hda bs=446 count=1

もしマスターブートレコードに LILO をインストールする場合は、（構成変数の BOOT=... などで）ブートセクターを明示的に指定しなければいけません。そうで ないと LILO は現在のルートパーティションのブートセクターを使おうとします。 これは一見うまく動作するように見えますが、実際はたぶんあなたのシステムは 依然ブートできないままでしょう。

#### 用例

以下の用例は、ブートセクターやオペレーティングシステムの構成物の説明に使った ものです。

- ``DOS-MBR'' はオリジナルの MS-DOS の MBR です。それはアクティブな パーティションをパーティションテーブルから探し、そのパーティションの ブートセクターをロードします。MS-DOS の FDISK のようなプログラム、Linux fdisk と activate（LILOに同梱）はパーティションテーブルのアクティブ属性を 変更することができます。

- ``MS-DOS'' は（IO.SYS その他の）システムの他の部分をロードする MS-DOSの ブートセクターを意味します。

- ``COMMAND.COM'' MS-DOS の標準のコマンドインタプリターです。

- ``LOADLIN'' は MS-DOS のパーティションから Linux カーネルイメージをメモリに ロードして実行するプログラムです。通常 CONFIG.SYS から呼び出され、BOOT.SYS のような CONFIG.SYS 構成切り替えプログラムと組み合わせて使われます。

  LOADLIN は以下の anonymous FTP サイトから利用できます。

  - ftp://tsx-11.mit.edu/pub/linux/dos_utils/lodlin-<n>.tar.gz

  - ftp://sunsite.unc.edu/pub/Linux/system/boot/dualboot/lodlin<n>.tgz

  BOOT.SYS は以下の anonymous FTP サイトから利用できます。

  - ftp://ftp.funet.fi/pub/Linux/tools/boot142.zip"

- ``LILO'' は Linux カーネルと他のオペレーティングシステムのブートセクターの 両方をロードすることができます。LILO は、他の場所から LILO の残りの部分を ロードする第 1 ステージブートセクターを持っています。

  LILO は以下の場所にあります。

  - ftp://tsx-11.mit.edu/pub/linux/packages/lilo-<n>.tar.gz

  - ftp://sunsite.unc.edu/pub/Linux/system/boot/lilo/lilo-<n>.tar.gz

  - ftp://lrcftp.epfl.ch/pub/linux/local/lilo/lilo-<n>.tar.gz

- ``BOOTACTV'' は、ブートセクターが読み込まれるべきパーティションを対話的に 選択することを可能にします。もし指定の時間、何もキーが押されなかった場合 アクティブなパーティションをブートします。BOOTACTV は pfdisk パッケージ に含まれています。PBOOT や OS-BS などのようないくつかの類似のプログラム も存在します。

  pfdisk は以下の anonymous FTP サイトから利用できます。

  - ftp://sunsite.unc.edu/pub/Linux/utils/disk-management/pfdisk.tar.Z

  - ftp://ftp.funet.fi/pub/Linux/tools/pfdisk.tar.Z

  PBOOT は以下の場所にあります。

  - ftp://ftp.funet.fi/pub/Linux/tools/pboot.zip

#### ``正しい''ブートコンセプトの選択

LILO はいろいろな方法でインストールできますが、その時のシステムのセットアップ 状態によって取り得る方法は限定されるので、この場合、既存のシステムにそのまま 適用できる設定の数は少ないと思います。 以下のセクションでは、様々な考えられるケースを説明しています。合わせて BIOS 制限セクションも参照して ください。

例として、以下のような設定ファイル「/etc/lilo.conf」があったとします。

    boot = /dev/hda2
    compact
    image = /vmlinuz
    image = /vmlinuz.old
    other = /dev/hda1
      table = /dev/hda
      label = msdos

この設定ファイルでは、Linux カーネル（/vmlinuz）、代わりの Linux カーネル （/vmlinuz.old）と /dev/hda1 から MS-DOS をブートするチェーンローダを インストールしています。2 行目の COMPACT オプションはマップインストーラに ロードを最適化するように指示します。

全ての例において、IDE タイプのハードディスクデバイスには（/dev/hda..）という ような名称を使います。他のタイプのハードディスク（例えばSCSI ハードディスクは /dev/sda...）でも同様です。

#### BIOS 制限

最近では、大容量ディスクや複数のディスクを装備したシステムが増えていますが、 標準の PC の BIOS のディスクインターフェースが設計された当時（約 16 年前）は、 そのような構成は、サポートに値することではないだろうと考えられていました。

LILO に影響する最も一般的な BIOS 制限は、2 台のハードディスクにしかアクセス できないこと、ディスク毎に 1024 シリンダーを越えた領域へのアクセスができない ことです。LILO は両方の条件を見つけることができますが、問題を回避するには、 手動による調整が必要です。

ドライブの制限は、全ての BIOS が持っている訳ではありません。いくつかの最新 のマザーボードやディスクコントローラなら、より多くの（大抵は 4 つですが） ディスクをサポートした BIOS を備えています。3 番目、4 番目のドライブに対し アクセスを試みた時、LILO は警告メッセージを表示しますが、処理は続行します。 BIOS が本当に複数ドライブをサポートしない限り、システムはその場合、ブートする ことはできません。

しかし、システムの``重要でない''部分だけが、そのような``後方の''ドライブ に配置されているのであれば、いくつかの機能は使えるでしょう。

シリンダーの制限は、IDE ディスクでは非常に一般的な問題です。もしディスク容量 が 504 MB を超えていたら、シリンダー数が既に 1024 を超えているでしょう。 多くの SCSI ドライバ BIOS は、1GB あたりでこの制限に引っかかるようなディスク ジオメトリを提供します。最近のディスクコントローラなら、この制限を約 8GB くらいまで、押し上げます。1024 以降の全てのシリンダーに BIOS はアクセスでき ません。LILO はこの問題を見つけると、インストールを中止します。（もしLINEAR オプションが使用されていなければですが。 グローバルオプションのセクション を参照してください）

一部分がその``禁止された領域''に及んでいるような大きなパーティションの場合、 最初は正しく動作しているように見えても、依然危険な状態であることに注意して ください。なぜなら、ファイルシステムはそのような制限を知らないので、カーネル のインストール時に 1024 シリンダー以降のディスク領域に配置してしまうかもしれ ないからです。それゆえ、LILO は警告メッセージを表示しますが、差し迫った危険が 存在しない限り、処理は続行します。

このような問題を解決する 4 つのアプローチがあります。

- アクセス可能なディスクの 1024 シリンダー未満のパーティションを使う。 もし全ての上記基準を満たす DOS のパーティションがあれば、そこを関連の ファイルの格納のために使用することができます。( DOS パーティション上の /bootセクションを参照してください）

- パーティションとディスクを再編成する。これは通常、破壊的操作となるので、 十分に注意して、適切なバックアップをとる必要があるでしょう。

- システム上に、DOS または Windows95 があるなら、LILO の代わりに LOADLIN を使う。

- 全てが失敗した場合、より高機能な BIOS のインストール、別のコントローラ 別のディスク構成にする他ないでしょう。

LILO は以下の項目のロードに際し、BIOS に依存します。

- `/boot/boot.b`

- `/boot/map` (`/sbin/lilo` 実行時に 作成される)

- 全てのカーネル

- 全てのオペレーティングシステムのブートセクター

- 定義されているなら、起動メッセージ

通常、このことは Linux のルートファイルシステムは、その``安全な''領域に 存在すべきであると受け取れます。しかし全てのカーネルを `/boot` に置いて、 そこを``良き''パーティションにマウントするか、そのようなパーティションに `/boot` のシンボリックをはるだけで十分 です。

大容量ディスクの問題のより詳しい説明は、`/usr/src/linux/Documentation/ide.txt` (または古いカーネルでは、`/usr/src/linux/drivers/block/README.ide` )を参照して ください。

#### ディスクが 1 つで、基本パーティションに Linux がある

第 1 ディスクの少なくとも一つの基本パーティションが Linux ファイルシステム （`/`, `/usr` , その他、ただしスワップパーティションでない）として使用されている なら、LILO ブートセクターは、そのパーティションに配置し、オリジナルマスター ブートレコードか、BOOTACTV のようなプログラムでロードすべきです。

                +--------------------------+
                | MBR            /dev/hda  |
                | +------------------------|
                | | MS-DOS       /dev/hda1 |
                | |------------------------|
            --> | | Linux /      /dev/hda2 |
                +--------------------------+

この例の場合、ルートパーティションにブートセクターを置くので、BOOT 変数は 省略できます。

#### ディスクが 1 つで、論理パーティションに Linux がある

第 1 ディスクに Linux で使用できる基本パーティションはないが、少なくとも一つ の拡張パーティション内の論理パーティションに Linux があるなら、LILO ブート セクターは、拡張パーティションのパーティションセクターに配置し、オリジナル マスターブートレコードか、BOOTACTV のようなプログラムでロードすべきです。

                +--------------------------+
                | MBR            /dev/hda  |
                | +------------------------|
                | | MS-DOS       /dev/hda1 |
                | |------------------------|
            --> | | 拡張領域     /dev/hda2 |
                | | +----------------------|
                | | | Linux      /dev/hda5 |
                | | |----------------------|
                | | | ...        /dev/hda6 |
                +--------------------------+

多くのディスクパーティション操作プログラムは、拡張パーティション (上記例 では `/dev/hda2`) をアクティブにすることを拒否するので、 LILO の配布物に同梱 されている activate というプログラムを使う必要が あります。

OS/2 のブートマネージャは、LILO ブートセクターを論理パーティションからブート することができます。この場合は、拡張パーティションへのインストールの必要は ありません。

#### ディスクが 2 つだが、(少なくとも部分的には) 第 1 ディスクに Linux がある

この場合は、1 ディスクで、そこにシステムがある構成と同じです。Linux ブート セクターは、第 1 ディスクに置き、第 2 ディスクは、ブートプロセスの後の方で 使います。

BIOS 制限セクションで記述されている 制限は、ブートセクター構成物の配置 のみにかかります。その他のもの (`/boot/boot.b, /boot/map`, ルートファイル システム、スワップパーティション、その他の Linux ファイルシステムなどなど) は第 2 ハードディスク上のどこにあっても構いません。

#### ディスクが 2 つで、Linux は第 2 ディスクにあり、第 1 ディスクは論理 パーティションがある

第 1 ディスクには、Linux パーティションは無いが、拡張パーティションがあれば、 LILO ブートセクターは、拡張パーティションのパーティションセクターに配置し、 オリジナルマスターブートレコードか、BOOTACTV のようなプログラムでロード すべきです。

                     第 1 ディスク                  第 2 ディスク
            +--------------------------+    +--------------------------+
            | MBR            /dev/hda  |    | MBR            /dev/hdb  |
            | +------------------------|    | +------------------------|
            | | MS-DOS       /dev/hda1 |    | | Linux        /dev/hdb1 |
            | |------------------------|    | |------------------------|
        --> | | 拡張領域     /dev/hda2 |    | | ...          /dev/hdb2 |
            | | +----------------------|    | |                        |
            | | | ...        /dev/hda5 |    | |                        |
            | | |----------------------|    | |                        |
            | | | ...        /dev/hda6 |    | |                        |
            +--------------------------+    +--------------------------+

拡張パーティションをアクティブにするには、LILO に同梱されるプログラム activate を使うべきです。なぜなら MS-DOS の FDISK や古いバージョンの Linux `fdisk` では、 それができないからです。（一般的にはこれは正しい考えですが）

#### ディスクが 2 つで、Linux は第 2 ディスクにあり、第 1 ディスクは 論理パーティションがない

第 1 ディスクに、Linux パーティションも拡張パーティションもない場合、もはや LILO ブートセクターを置ける場所は、一箇所しかありません。− そこはマスター ブートレコードです。

この構成の場合、LILO が他のオペレーティングシステムのブートもすべて責任を もつことになります。

                     第 1 ディスク                   第 2 ディスク
            +--------------------------+    +--------------------------+
        --> | MBR            /dev/hda  |    | MBR            /dev/hdb  |
            | +------------------------|    | +------------------------|
            | | MS-DOS       /dev/hda1 |    | | Linux        /dev/hdb1 |
            | |------------------------|    | |------------------------|
            | | ...          /dev/hda2 |    | | ...          /dev/hdb2 |
            +--------------------------+    +--------------------------+

LILO をインストールする前に、MBR のバックアップは必ずとるべきです。またこの アプローチをとる前に、LILO が他のオペレーティングシステムをブートできるか 確認する必要があります。

この例では `/etc/lilo.conf` の

    boot = /dev/hda2
    という行を
    boot = /dev/hda
    に変更

する必要があります。

#### ディスクが 2 つ以上

システムに 2 つを越えるディスクがあっても、通常は最初の 2 つにしかアクセス できません。それゆえ、構成の選択肢としては、ディスク 2 つの場合と同じです。

その増設ディスクにアクセスしようとすると、LILO は( `Warning: BIOS drive 0x<number> may not be accessible` ) という警告メッセージを表示しますが、 処理を 中断することはしません。これは 2 ディスク以上を扱える極一部の BIOS（または コントローラ BIOS）がその特徴を利用できるように、そうしています。他の全ての 場合は、この警告は致命的なエラーと考えた方がいいでしょう。

2 ディスクの制限は、BIOS だけのことなので、一度ブートしてしまえば、Linux は 全てのディスクを利用するのに何の問題もありません。

#### DOS パーティション上の /boot

最新のカーネルは、LILO がマップファイルを MS-DOS（または UMSDOS）のファイル システム上に置くのに必要な機能を全てサポートしています。DOS パーティションは BIOS 制限 (BIOS 制限のセクションを 参照してください) に引っかからない ような場所に確実に配置される傾向があるので、BIOS 問題で、ネイティブな Linux ファイルシステムパーティションを利用できない場合は、`/boot` 用の場所として、 理想的な場所です。

これを可能にするため、DOS パーティションは、読み書き可能なようにマウントし、 （例えば `/dos/linux` のような）ディレク トリを作成し、そのディレクトリに `/boot` から、全てのファイルを移動し、`/boot` は そこにシンボリックリングを張ることで、 置き換え、カーネルもまたその新しいディレクトリに移し、これらの新しい場所を `/etc/lilo.conf` に記述して、最後に `/sbin/lilo` を実行します。

今後は、新しいカーネルは `/sbin/lilo` を実行する前に必ずその DOS パーティション 上のディレクトリにコピーする必要があります。例えばカーネルを再コンパイルした 時などは、標準の手続きは、

    # make zlilo

から

    # make zImage
    # mv /dos/linux/vmlinuz /dos/linux/vmlinuz.old
    # mv arch/i386/boot/zImage /dos/linux/vmlinuz
    # /sbin/lilo

に変更します。

警告− DOS パーティションのデフラグメントは、Linux やシステム全体をブート不能 にしてしまいます。それゆえ、DOS パーティションのデフラグメントをしないか、 Linux を実行するために Linux ブートディスクを用意して（テストもして）から、 デフラグメント後、/sbin/lilo を実行してください。 * 重要なファイル（例えば C:\LINUX の全てのファイル）には、DOS 上でシステム 属性を付与しておくと、再編成から守ることができるかもしれません。しかし その場合でも、なおブートフロッピーは用意すべきです。

## ブートプロンプト

### はじめに

LILO はロードされるとすぐに、以下のうち一つでも起きていないか検査します。

- [Shift], [Control] または [Alt]キーのいずれかが押されている。

- [CapsLock] または [ScrollLock] がセット されている。

この場合、LILO は「boot:」というプロンプトを表示し、ブートイメージ名（例えば カーネルや他のオペレーティングシステム）の入力を待ちます。入力がない場合は、 デフォルトイメージ デフォルトブートイメージとは、最初のブートイメージ、DEFAULT 変数で 指定されたイメージ、またはブートプロンプトで選択されたイメージです。 をブートします。またはもし「delay」が指定されていたら、 時間が経過するまで、上記リストの行為のいずれかを待ちます。

ブートプロンプトでは、ブートするイメージの名前を入力できます。タイプエラー は [BackSpace], [Delete], [Ctrl U] や [Ctrl X] キーで、修正できます。[?]、 または [Tab] キーで、既知のイメージのリストを得ることができます。

ファイル名の入力のないまま、[Enter] キーが押された場合は、デフォルトの イメージをブートします。

### ブートコマンドラインオプション

LILO はカーネルに、コマンドラインオプションも渡すことができます。コマンド ラインオプションとは、ブートイメージ名に続けて、スペース区切りで指定される 単語群のことです。

#### ブートオプション

    boot: linux single root=200

この文書では、ブートオプションについては概要しか説明しません。より詳細で、 最新の情報は、Paul Gortmaker の BootPrompt-HOWTO( 日本語訳) を調べてください。 以下のサイトから入手可能です。 ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/BootPrompt-HOWTO.gz または、 多くのミラーサイト。

#### 標準オプション

最新のカーネルは非常に多くのオプションを持っています。`debug , no387 , no-hlt ,ramdisk=<size> , reserve=<base>,<size>` ,... , `root=<device>, ro , rw` 。 全ての現在の初期化プログラムもまた、オプション `single` を知って います。 オプション `lock` や `vga` はブートローダ自身に よって処理されます。ブートコマンド ラインオプションは常に、大文字小文字を区別します。

`single`

  `single` はシステムをシングルユーザモードでブートします。 これはシステムの 殆どの初期処理を省き、コンソール上で、直接ルートシェルを開始します。普通は、 シングルユーザモードを抜けるか、再起動することによって、マルチユーザモードに 移行します。

`root=<device>`

  `root=<device>` はルートデバイスを変更します。これは ブートイメージが持つ 設定や、LILO コマンドラインでの指定を上書きします。`<device>` は、16 進数の デバイス番号か、`/dev/hda3` などのデバイスのフルパス名を 指定します。 デバイス名はカーネルにハードコードされています。それゆえ``標準的な'' 名称しか、サポートされません。あまり一般的でない名称は認識されないかも しれません。そのような場合は、デバイス番号を使ってください。

`reserve=<base>, <size>`

  `reserve=<base>,<size>`,... は IO ポート領域を 予約します。これは デバイス ドライバが、他のデバイスに割り当てられているアドレスを自動的に検知して競合 するのを防ぎます。

`ro, rw`

  `ro` はカーネルに対し、ルートファイルシステムを 「読み込みのみ」でマウント するように指示します。`rw` は「読み書き可」でマウントします。 もしいずれの指定 もない場合は、ブートイメージから取得した設定が使用されます。

`no-hlt`

  `no-hlt` はシステムアイドル時は HLT 命令の実行を避けます。HLT は通常消費電力 を劇的に減らします、そのため CPU の無駄を省きますが、いくつかのクローン CPU では正しく動作しないかもしれません。 `no387` は、ハードウェア FPU があったと しても無効にします。

`init=<name>, noinitrd`

  最近のカーネルはまた、`init=<name>` と `noinitrd` オプションを受け入れます。 `init` には、実行する初期プログラムの名前を指定します。 それゆえ、もし初期化 がうまく構成されないために、シングルモードに入れなかった場合も、`init=/bin/sh` という値を使って、`shell` に到達できます。 `noinitrd` は、初期 RAM ディスクの 自動ロードを無効にします。その代わり、その内容物は、`/dev/initrd` で利用する ことができます。

`vga=<mode>`

  `vga=<mode>` は起動時に VGA モードの設定を変更します。 値としては、 `normal, extended, ask` または、10進数があります。 (ファイルからのカーネルイメージ のブートセクションを参照してください）

`kbd=<code&gt`

  `kbd=<code>`,... はBIOS のキーボードバッファに、 キーストロークのシーケンスを プリロードします。キーストロークは、上位バイトがスキャンコードで、下位バイト が、ASCII コードの、16 bit の 16進数として指定します。スキャンコードはしばしば 省略されるので、多くのプログラムは、ASCII コードしか使わないことに注意して ください。スキャンコード表は、PC ハードウェアの多くの文書にあります。スキャン コードは、キーボードレイアウトに依存することも注意してください。

`lock`

  最後に、`lock` は現在のコマンドラインをデフォルトのコマンド ラインとして格納します。従って、LILO は次回のブート時に、同じイメージを、同じ オプション（`lock` オプションも含めて）でブートします。

#### デバイス特化オプション

デバイスのある特性（例えば IO やメモリのアドレス）を指定するオプションも 非常に沢山あります。一般的なものとして、`ether, floppy, hd, bmouse,` そして、`sound` など。これらのオプションは、 `<oprion>=<number>`,....と いう形で 利用します。詳細は、関連の FAQ 集や、HOWTO ものを調べてください。すべての 利用可能なオプションの概要は、カーネルソースの `init/main.c` を調べてください。

#### その他のオプション

標準オプションでも、デバイス特化オプションでもない、<変数>=<値> と いう形の オプションは、初期処理に渡される環境変数となります。変数名の大文字小文字の 区別は保たれます。つまり自動的に大文字に変換したりはしません。

初期処理に渡される環境変数は、通常はシステム初期化スクリプト (たとえば、 `/etc/rc.local` など) で利用されますが、ログインプログラム がユーザ環境からは、 これらの環境変数を取り除いてしまうので、通常のログインセッションでは見ること ができないことに注意してください。

#### オプションの繰り返し

コマンドラインオプションの繰り返しの効果は、オプションに依存します。 オプションはしばしば繰り返し指定されますが、その場合、APPEND や LITERAL を付けて定義した文字列を、ユーザがタイプするパラメータの前に置きます。また 設定ファイルで RAMDISK, READ-ONLY, READ-WRITE, および ROOT が指定された 場合、LILO は、それぞれ `ramdisk, ro, rw`, および `root` というオプションを 黙示的に付け加えます。（`lock` と `vga`は それらとは異なった内部メカニズムで 処理されます） 3 つの考えうる動作があります。

（出現回数に関係なく）その機能を有効にしたり、無効にしたりするオプションは 次のものです。`debug, lock, no-hlt`, と `no387` がこの部類に属します。

出現ごとにグローバル設定が変わり、最後のオプションやその引数の値だけが有効に なるオプションは次のものです。`ro` と `rw` など お互い相反するオプションは、この例 にあたります。また、`ramdisk, root`, や `vga` などもこれにあたります。

##### オプションの繰り返しの例

    ro rw

とある場合、ルートファイルシステムは「読み書き可」です。

最後に、`reserve` や多くのデバイス特化オプションが繰り返された 場合、それぞれが 独自の意味を持ちます。例えば、`hd=... hd=...` とある場合、2 つ のディスクが構成 されますし、

    reserve=0x300,8 reserve=0x5f0,16

は 0x300 から 0x307 と 0x5f0 から 0x5ff の範囲が予約されます。（この場合、`reserve=0x300,8,0x5f0,16` と記述した 場合と同じになります）

#### 暗黙のオプション

LILO は「BOOT_IMAGE=<名称>」という文字列を、<名称> がカーネルを一意 に特定 できるなら（例えば `label` オプションなどで）、常にカーネルに 渡します。この 変数は、カーネルごとに依存する、異なった行為を選択するために、`/etc/rc` で 利用されます。

たとえば人が介在しないで、自動的にブートした場合、`auto` という 単語がコマンド ラインに渡されます。この情報はブート段階で初期処理が対話のためのプロンプトを 抑止するのに利用されます。

### ブートイメージの選択

ブートイメージの選択の詳細は、いくらか複雑です。以下の表はそれを説明して います。まず PROMPT 変数も指定されず、シフトキーも押されなかった場合は 次のようになります。

#### PROMPT 変数が設定されず、シフトキーも押されなかった場合

外部から提供されるコマンドライン 外部から提供されるコマンドラインは、LILO のフロントエンドに加えるために 利用されていました。それらは、それぞれのコマンド文字列を LILO に渡し、 キーボード入力のようにそれを解釈しました。これは現在は利用されていません。 | マップファイル内コマンドライン このコマンドラインは、マップインストーラで -R オプションを用いるか ブートコマンドラインオプション `lock` を使うか、 `fallback` が (FALLBACK 変数と共に) 設定されている場合に、設定されます。 | 自動ブート 例えば、キーワード `auto` が加えられます。 | ブートされるイメージ
--- | --- | --- | ---
なし | なし | する | デフォルトイメージ
あり | - | する | 外部提供コマンドラインに指定されたイメージ
なし | あり | する | マップファイル内のコマンドラインに指定したイメージ

PROMPT 変数は設定されていないが、シフトキーが押された場合です。

#### PROMPT 変数は設定されていないが、シフトキーが押された場合

入力タイムアウト | 空のコマンドライン | 外部コマンドライン | マップ内コマンドライン | 自動ブート | ブートイメージ
--- | --- | --- | --- | --- | ---
未経過 | あり | - | - | しない | ユーザ指定イメージ
未経過 | なし | - | - | しない | デフォルトイメージ
経過 | 無効 | - | - | する | デフォルトイメージ

最後に、構成変数 PROMPT が設定されている場合です。

#### 構成変数 PROMPT が設定されている場合

入力タイムアウト | 空のコマンドライン | 外部コマンドライン | マップ内コマンドライン | 自動ブート | ブートイメージ
--- | --- | --- | --- | --- | ---
未経過 | なし | なし | なし | しない | ユーザ指定イメージ
未経過 | あり | なし | なし | しない | デフォルトイメージ
経過 | 無効 | なし | なし | する | デフォルトイメージ
無効 | 無効 | あり | - | する | 外部提供コマンドラインに指定されたイメージ
無効 | 無効 | なし | あり | する | マップファイル内のコマンドラインに指定したイメージ

LILO はデフォルトコマンドラインの最後で、DELAY 変数に指定された時間だけ、 停止することに注意してください。自動ブートは、変更キー（[Shift], [Ctrl] キーなど）を押すことによって中断します。

デフォルトイメージとは、マップファイル内の最初のイメージか、DEFAULT 変数に 指定したイメージです。しかしブートが成功しなかった後は、それぞれのイメージ がデフォルトイメージになります。

## マップインストーラ

マップインストーラプログラム `/sbin/lilo` はブートセクターを 更新し、マップ ファイルを作成します。マップインストーラはエラーを検出すると即座に終了し、 ブートセクターやマップファイルをいじったりはしません。

マップインストーラは、ブートセクターを更新するたびに、元のブートセクターを `/boot/boot.<number>` にコピーします。 `<number>` は、16 進数のデバイス 番号です。 そのようなファイルが既に存在する場合は、バックアップコピーは取られません。 同様に、LILO がパーティションテーブルを更新する場合は、`/boot/part.<number>` というファイルが作成されます。( イメージ毎の一般オプションの項を参照 してください。)

### コマンドラインオプション

LILO マップインストーラは、以下のような方法で呼び出されます。

#### 現在のインストール状態の表示

現在のマップファイルを表示します。`-v` オプションでたくさんの パラメータが表示されます。

      /sbin/lilo [ -C <設定ファイル> ] -q [ -m <マップファイル> ] [ -v ... ]

       -C <設定ファイル>
         マップインストーラによって使われる設定ファイルを指定します。(``設定(4.1)''
         のセクションを参照してください) もし -C オプションが省略された場合、
         /etc/lilo.conf が使用されます。

       -m <マップファイル>
         別のマップファイルを指定します。``構成変数に対応するオプション(4.1.7)''と
         ``グローバルオプション(4.2.2)''のセクションを参照してください。
       -q
         現在のマップファイルの内容を表示します。

       -v ...
         より多くの情報を表示します。``構成変数に対応するオプション(4.1.7)''と
         ``グローバルオプション(4.2.2)''のセクションを参照してください。

#### マップの作成、または更新

設定ファイル /etc/lilo.conf に記述されているイメージ用に新しいマップを作成し それをブートセクターに登録します。

      /sbin/lilo [ -C <設定ファイル> ] [ -b <ブートデバイス> ] [ -c ] [ -l ]
        [ -i <ブートセクター> ] [ -f <ディスクテーブル> ] [ -m <マップファイル> ]
        [ -d <遅延時間> ] [ -v ... ] [ -t ] [ -s <セーブファイル> | -S <セーブ
        ファイル> ] [ -P fix | -P ignore ]  [ -r <ルートディレクトリ> ]

       -b <ブートデバイス>
         ブートデバイスを指定します。``構成変数に対応するオプション(4.1.7)''と
        ``グローバルオプション(4.2.2)''のセクションも参照してください。

       -c
         マップファイルの圧縮を有効にします。``構成変数に対応するオプション
        (4.1.7)''と``グローバルオプション(4.2.2)''のセクションも参照してください。

       -C <設定ファイル>
         別の設定ファイルを指定します。``現在のインストール状態の表示(4.1.1)''の
        セクションを参照してください。

       -d <遅延時間>
         LILO がデフォルトイメージをブートするまでの遅延時間を設定します。遅延時間
        は、10 分の 1 秒単位で指定することに注意してください。``構成変数に対応する
        オプション(4.1.7)''と``グローバルオプション(4.2.2)''のセクションを参照して
        ください。

       -D <名称>
         デフォルトイメージを指定します。``構成変数に対応するオプション(4.1.7)''と
        ``グローバルオプション(4.2.2)''のセクションを参照してください。

       -f <ディスクテーブル>
         ディスクパラメータテーブルファイルを指定します。``構成変数に対応する
        オプション(4.1.7)''と``グローバルオプション(4.2.2)''のセクションも参照して
        ください。

       -i <ブートセクター>
         別のブートファイルを指定します。``構成変数に対応するオプション(4.1.7)''と
        ``グローバルオプション(4.2.2)''のセクションも参照してください。

       -L
         lba32 セクターアドレスを有効にします。``構成変数に対応するオプション
        (4.1.7)''と``グローバルオプション(4.2.2)''のセクションも参照してください。

       -l
         リニアセクターアドレスを有効にします。``構成変数に対応するオプション
        (4.1.7)''と``グローバルオプション(4.2.2)''のセクションも参照してください。

       -m <マップファイル>
         別のマップファイルを指定します。``構成変数に対応するオプション(4.1.7)''と
        ``グローバルオプション(4.2.2)''のセクションも参照してください。

       -P <モード>
         無効なパーティションテーブルエントリをどのように扱うべきかを指定します。
        ``構成変数に対応するオプション(4.1.7)''と``グローバルオプション(4.2.2)''の
        セクションも参照してください。

       -r <ルートディレクトリ>
         操作を行う前に、chroot で指定のディレクトリに、ルートディレクトリを変更
        します。これは、例えば、リカバリディスクでインストールの失敗を復旧をする
        時など、ルートファイルシステムが普段と違うところにマウントされている場合
        に便利です。もし環境変数 ROOT が指定されていた場合、その値でオプション
        -r が指定されたものとみなします。* カレントディレクトリが新しいルート
        ディレクトリに変わるので、使用中の相対パスは使えなくなるでしょう。

       -s <セーブファイル>
         別のブートセクターセーブファイルを指定します。``構成変数に対応する
        オプション(4.1.7)''と``グローバルオプション(4.2.2)''のセクションも参照して
        ください。

       -S <セーブファイル>
         -s と同じですが、セーブファイルが存在しても上書きします。

       -t
         テストのみ行います。これは、マップファイルの書き換え、ブートセクターの
        更新、及びパーティションテーブルの修復以外の前インストール手続きを実行
        します。-v オプションと合わせて使用することで、LILO が正しい値を使用するか
        を確認することができます。

       -v ...
         より多くの情報を表示します。``構成変数に対応するオプション(4.1.7)''と
        ``グローバルオプション(4.2.2)''のセクションも参照してください。

      *  例えば、もしあなたのシステムが /mnt にマウントされているような場合は、
        単に「ROOT=/mnt /mnt/sbin/lilo」と実行するだけでマップファイルを更新する
        ことができます。

#### デフォルトコマンドラインの変更

LILO のデフォルトコマンドラインを変更します。ブートイメージの選択の セクションも参照してください。

      /sbin/lilo [ -C <設定ファイル> ] [ -m <マップファイル> ] -R [ <単語> ... ]

       -C <設定ファイル>
         別の設定ファイルを指定します。``現在のインストール状態の表示(4.1.1)''の
        セクションを参照してください。

       -m <マップファイル>
         別のマップファイルを指定します。``構成変数に対応するオプション(4.1.7)''と
        ``グローバルオプション(4.2.2)''のセクションも参照してください。

       -R <単語> ...
         指定された単語群をマップファイルに格納します。ブートローダは、次回の
        ブート時に、これら単語群をデフォルトコマンドラインとして使用します。
        このコマンドラインは読み込まれると同時にそのセクターを上書きして、マップ
        ファイルから取り除きます。最初の単語は、ブートイメージ名でなければなり
        ません。もし -R の後、何の単語も指定されなかったら、現在のデフォルト
        コマンドラインを消去します。* もしコマンドラインが不正な場合、マップ
        インストーラは、エラーメッセージを表示して、0 以外の終了コードを返します。

      *   -R は再起動スクリプトで、よく使用されます。例えば以下のように。
         #!/bin/sh
         cd /
         /sbin/lilo -R "$*" && reboot

#### カーネル名からの変換

カーネルのパスを見つけます。

      /sbin/lilo [ -C <設定ファイル> ] -I <名称> [ <オプション> ]

       -C <設定ファイル>
         別の設定ファイルを指定します。``現在のインストール状態の表示(4.1.1)''の
        セクションを参照してください。

       -I <名称> [ <オプション> ]
         指定されたラベル名を、関連するカーネルイメージのパスに変換し、そのパスを
         標準出力に表示します。これは（たとえば ps データベースなどの）カーネル
         に依存するファイルを同期されるために使います。もし一致するラベル名が
         ない場合は、エラーメッセージを表示して、O 以外の終了コードを返します。
         オプション文字 v が追加された場合、イメージファイルが本当にあるかを確認
         します。

#### アンインストール

LILO をインストールする以前に使っていたブートセクターを復元します。これは LILO のディレクトリ（例えば /boot）が最初の LILO のインストールから全く 変更されて いない場合のみ、正しく動作します。 LILO のアンインストールのセクションも参照してください。

      /sbin/lilo [ -C <設定ファイル> ] [ -s <セーブファイル> ] -u | -U
        [ <ブートデバイス> ]

       -C <設定ファイル>
         別の設定ファイルを指定します。``現在のインストール状態の表示(4.1.1)''の
        セクションを参照してください。

       -s <セーブファイル>
         別のブートセクターセーブファイルを指定します。``構成変数に対応する
        オプション(4.1.7)''と``グローバルオプション(4.2.2)''のセクションも参照
        してください。

       -u [ <デバイス名> ]
         指定されたブートセクターのバックアップコピーを復元します。もしデバイスの
         指定がない場合、boot 変数がの値が使用されます。もしこの値も利用できない
         場合は、LILO は現在のルートデバイスを使います。バックアップコピーの名称は
         デバイス名から取得します。-s オプション、または backup 変数は、これを
         上書きするために使用されます。LILO はタイムスタンプを検査することによって
         バックアップコピーの正当性を確認します。

        -U [ <デバイス名> ]

        -u と同じですが、タイムスタンプの検査をしません。

#### バージョン番号の表示

     /sbin/lilo -V

       -V
         バージョン番号を表示して終了します。

#### 構成変数に対応するオプション

コマンドラインオプションの中には、構成変数に対応しているものもたくさん あります。説明は、グローバルオプション のセクションを参照してください。

##### 構成変数に対応するオプション

コマンドラインオプション | 構成変数
--- | ---
`-b`<ブートデバイス> | `boot=`<ブートデバイス>
`-c` | `compact`
`-d`<秒数> | `delay=`<秒数>
`-D`<名称> | `default=`<名称>
`-i`<ブートセクター> | `install=`<ブートセクター>
`-L` | `lba32`
`-l` | `linear`
`-m`<マップファイル> | `map=`<マップファイル>
`-P fix` | `fix-table`
`-P ignore` | `ignore-table`
`-s`<バックアップファイル> | `backup=`<バックアップファイル>
`-S`<バックアップファイル> | `force-backup=`<バックアップファイル>
`-v ...` | `verbose=`<レベル>

### 設定

設定情報は、ファイル /etc/lilo.conf に格納され、変数を指定するという形で 成り立っています。

#### 文法

以下のような文法を適用します。

- フラグ変数は、一つの単語で構成され、その後にホワイトスペースか、ファイル の終了コードが置かれます。

- 文字列変数は、変数名、任意のホワイトスペース、イコール記号、任意の ホワイトスペース、値、そしてそれに続くホワイトスペースかファイルの終了 コードから構成されます。

- ブランク、タブ、改行、コメントの空でないシーケンスは、ホワイトスペース としてカウントされます。

- 変数名は、大文字小文字を区別します。値は普通は、大文字小文字を区別しま しますが、一部例外もあります。（後述）

- タブと改行は、特別な文字で、変数名や値の一部とは成り得ません。他の コントロール文字や、非 ASCII 文字の利用は認められません。

- ブランクとイコール記号は、バックスラッシュでエスケープするか、ダブル クォートで囲まれている場合は、変数名や値と成り得ます。ただイコール記号は １文字だけでは変数名や値にはなり得ません。

- エスケープされたタブは、エスケープされたブランクに変換されます。エスケープ された改行は、入力行から取り除かれます。エスケープされたバックスラッシュ （つまり 2 つのバックスラッシュ）はバックスラッシュそのものになります。 引用文字列の中では、ダブルクォート、バックスラッシュ、ダラー記号、及び改行 のみがエスケープできます。

- 引用文字列は、途中の行の最後にバックスラッシュを記述することで、複数行に 跨ることができます。行末はその次の行の先頭にいくらスペースやタブがあろうが 無かろうが、一つのスペースに置き換えます。

- 環境変数は、$<名称> または ${<名称>} という形で指定することで、利用する ことができます。ダラー記号はエスケープされます。

- コメントは、ナンバー記号(#)で始まり、改行で終わります。全ての文字（バック スラッシュも含めて）は改行まで、無視されます。

##### `/etc/lilo.conf` の設定例

    boot = $FD
    install = $MNT/boot.b
    map = $MNT/map
    compact
    read-only
    append = "nfsroot=/home/linux-install/root \
      nfsaddrs=128.178.156.28:128.178.156.24::255.255.255.0:lrcinst"
    image = $MNT/zImage

#### グローバルオプション

/etc/lilo.conf はグローバルオプションのないものもあるかもしれません。多くの グローバルオプションは、コマンドラインからも指定できますが、恒常的なものは 設定ファイルに記述した方がより便利です。

BACKUP=<バックアップファイル>

  /boot/boot.<数値>の代わりに、元のブート セクターを<バックアップファイル>（/dev/null のようなデバイス名でも構わ ない）にコピーします。

BOOT=<ブートデバイス>

  ブートセクターを含むデバイス（例えばハードディスク のパーティションなど）を指定します。省略された場合、現在ルートとして マウントされているデバイスから、ブートセクターは読み込み（おそらく 書き込みも）を行います。

CHANGE-RULES

  パーティションタイプ番号を定義します。詳細は パーティションタイプの変更ルール のセクションを参照してください。

COMPACT

  隣接したいくつかのセクターをまとめて、一つの read リクエストで 読めるように試みます。これは、ロード時間を劇的に減少すると共に、マップ ファイルを小さくします。COMPACT 変数は、特にフロッピーディスクからブート する場合にお薦めです。COMPACT は、LINEAR と LBA32 と競合するかもしれない ので、その他の問題 のセクションを 参照してください。

DEFAULT=<名称>

  デバイスブートイメージとして、指定のイメージを使います。 省略された場合は、設定ファイル上で最初に記述されたイメージが使われます。

DELAY=<遅延時間>

  最初のイメージをブートする前に、LILO が待つべき時間を 10 分の 1 秒単位で指定します。これは、キーボードが有効になると即座に ハードディスクから起動してしまうようなシステムには便利です。DELAY 変数 が省略されたり、0 が指定された場合は、LILO は即座に実行されます。

DISK=<デバイス名>

  指定ディスクに対し、非標準的なパラメータを定義します。 詳細は、ディスクジオメトリ のセクションを参照してください。

FIX-TABLE

  LILO がパーティションテーブルの３次元アドレスを調整します。 パーティションエントリには、そのパーティションの先頭と最後のセクターの ３次元（セクター／ヘッド／シリンダー）アドレスと、32bit のリニアアドレス の２つがあります。もしあるパーティションがトラック単位で割り当てられていな い場合で、かつ他のオペレーティングシステム（例えば PC/MS-DOS や OS/2）が 同じディスクを使用している場合、それらの OS は、３次元アドレスの方を変更 してしまうかもしれません。LILO は双方のアドレスタイプが一致するパーティ ションにしか、そのブートセクターを置けません。FIX-TABLE 変数が設定されて いる場合、LILO はこの不正な３次元アドレスを再調整します。

  警告− このことは、その後、他のオペレーティングシステムがアドレスを元に 戻してしまわないことを保証するものではありません。またこの変更は、他の 予期せぬ効果をもたらす可能性があります。正しい修正方法は、トラック単位に パーティションを割り当てるようなプログラムを使ってパーティションの切り 直しをすることです。またいくつかのディスク（例えば、アドレス変換が有効な 大容量 EIDE のディスク）では、特定の状況下では、パーティションテーブル エントリの矛盾をさけることはできません。

FORCE-BACKUP=<バックアップファイル>

  BACKUP 変数と同じですが、古いバック アップコピーが存在しても上書きします。同じ設定ファイル内にこのオプション があった場合は、BACKUP オプションは無視されます。

IGNORE-TABLE

  LILO はパーティションテーブルがたとえ不正だったとしてもこれを 無視して、そこにブートセクターを置きます。

INSTALL=<ブートセクター>

  指定されたファイルを新しいブートセクターとして、 インストールします。省略された場合、/boot/boot.b がデフォルトとして使用 されます。

KEYTABLE=<テーブルファイル>

  指定ファイルの設定で、キーボードを再マップ します。詳細は、キーボード変換 のセクションを参照してください。

LBA32

  セクター／ヘッド／シリンダー・アドレスの代わりに、32-bit 論理 ブロックアドレスを生成します。もし BIOS がパケットアドレスをサポート しているなら、ディスクアクセスに、パケットコールを用います。これは 1024 シリンダーを越えたパーティションからのブートを可能にします。もし BIOS がパケットアドレスをサポートしていなかったら、LINEAR オプション のように、LBA32 アドレスは、C:H:S アドレスに変換されます。フロッピー ディスクは、依然 C:H:S アドレスを使っています。LBA32 は、1998 年以降 のシステムで、使用することをお薦めします。またLBA32 は COMPACT と両立 しません。その他の問題 のセクションを参照してください。

LINEAR

  セクター／ヘッド／シリンダー・アドレスの代わりに、リニアセクター アドレスを生成します。リニアアドレスは、実行に変換され、ディスクの ジオメトリに依存しません。LINEAR を使うとブートディスクはポータブルで なくなります。なぜならディスクジオメトリを決定する BIOS サービスは、 フロッピーディスクには、働かないからです。大容量ディスクで、LINEAR を 使うと、/sbin/lilo はアクセスできないディスク領域への参照を生成するで しょう（BIOS 制限 のセクションを参照してください）。なぜならブート前 は、3 次元 セクターアドレスは分からないからです。LINEAR は COMPACT を 競合します。その他の問題 のセクションを参照してください。

MAP=<マップファイル>

  マップファイルの場所を指定します。もし MAP 変数が 省略された場合、ファイル /boot/map が使用されます。

MESSAGE=<メッセージファイル>

  ブートプロンプトの前に表示するメッセージを 格納したファイルを指定します。``LILO ''と表示された後、更新キー（シフト キー、その他）を待っている間は、メッセージは表示されません。FF 文字 （[Ctrl L]）はローカルスクリーンをクリアします。メッセージファイルの サイズは、65535 バイトまでです。メッセージファイルが変わったり、移動した 場合は、マップファイルの再構築が必要です。

NOWARN

  将来予測される危険についての警告を無効にします。

PROMPT

  事前に何のキーも押されていなくても、強制的にブートプロンプトを表示 します。PROMPT が設定されていて、かつ TIMEOUT が設定されてない場合は、 無人リブートはできません。

SERIAL=<パラメータ>

  シリアルラインからの制御を有効にします。指定された シリアルポートは初期化され、LILO は、そのポートとキーボードの双方からの 入力を受け付けます。シリアルライン上に、break 信号を送ることは、LILO の 注意を引くために、コンソール上で、シフトキーを押すのと同じです。例えば シリアルラインがモデムに繋がっているなど、シリアルアクセスが、コンソール アクセスよりの安全でない場合、全てのブートイメージにパスワード保護を かけるべきでしょう。パラメータ文字列は、以下のような文法になります−

            <ポート>,<bit/秒><パリティ><bit数>

  コンポーネント<bit/秒>、<パリティ> と <bit数> は省略可能 です。もしこの うち一つでもコンポーネントが省略された場合、全ての他のコンポーネントも 省略されなければなりません。加えて、もしポートだけが指定された場合は、 カンマも省略しなければいけません。

  <ポート>

    0 ベースのシリアルポートの番号です。0 は /dev/ttyS0 その他 の別名である COM1 に対応します。（もし存在するなら）4 ポート全てを 利用することができます。

  <bit / 秒>

    シリアルポートのボーレートです。以下のボーレートを サポート します− 110, 300, 1200, 2400, 4800, 9600, 19200, 38400 bps。 デフォルトは、2400 bps です。

  <パリティ>

    シリアルラインで使われるパリティです。LILO は入力 パリティ を無視し、8 番目の bit を取り除きます。パリティを表現するのに、以下 のような（大文字または小文字の）文字を使います− n はパリティなし、 e は偶数パリティ、そして o は奇数パリティです。

  <ビット数>

    1 文字内のビット数です。7 ビットと 8 ビットのみが サポート されます。デフォルトは、パリティなしの場合、8 ビットで、奇数または 偶数パリティの場合、7 ビットです。

  SERIAL が設定されると、自動的に DELAY が 20 に上がります。

           例− serial=0,2400n8 はデフォルトパラメータで COM1 を初期化します。

TIMEOUT=<時間>

  キーボード入力に対するタイムアウト時間（10 分の 1 秒単位） を設定します。指定された時間、何もキー入力が無かった場合、自動的に最初 のイメージがブートされます。あまり長い間、パスワードの入力がない場合も 同様です。

VERBOSE=<レベル>

  より多くの進行情報を表示します。数値が高くなればなる程 出力も増加します。もしコマンドラインに -v が追加されると、それに応じて <レベル>が上昇します。出力情報レベルは以下です−

          0  以下  警告とエラーのみ表示
          0  追加、及びスキップしたイメージ毎に 1 行表示
          1  重要なファイルとデバイス名、及びなぜそれがアクセスされるかの
             理由が表示されます。また例外的ではあるが、特に有害ではないよ
             うな状況についての付加情報メッセージや、バージョン番号なども
             表示します。
          2  静的、および進行的な一時ファイルやデバイスを表示します。
          3  ディレクトリのジオメトリ情報や、パーティションテーブルの変更
             規則を表示します。
          4  マップファイルに記述したセクターマッピングを表示します。(圧縮
             後のものは BIOS に渡すのに適した形にフォーマットしたものを表示
             します)
          5  セクターのマッピング情報を表示します。(圧縮以前の生の状態を表示
             します)

  -q オプションが使われている場合は、レベルは多少違う意味になります−

          0  イメージ名のみ表示します。
          1  全てのグローバル、及びイメージ毎の設定も表示します。
          2  最初マップセクターのアドレスを表示します。

加えて、カーネル構成パラメータ APPEND, INITRD, RAMDISK, READ-ONLY, READ-WRITE, ROOT, VGA, と一般的イメージ毎のオプション FALLBACK, LOCK, OPTIONAL, PASSWORD, RESTRICTED, SINGLE-KEY はグローバルオプションのセクションに指定することができ ます。その場合、各イメージのセクションに同じ指定がない場合のデフォルトとして 使用されます。説明は以下を参照してください。

最初は、オプションの余りの多さにうんざりするかもしれません。しかし``普通の'' 構成なら、BOOT, COMPACT, DELAY, ROOT, VGA くらいしか使わないでしょう。

#### イメージ毎の一般オプション

以下のオプションは、全てのイメージに対し、その種類に関係なく指定することが できます。

ALIAS=<名称>

  そのエントリの第 2 名称を指定します。

FALLBACK=<コマンドライン>

  当該イメージがブートされたときの、デフォルトの コマンドラインとして格納する文字列を指定します。これは、システム起動に 達する前にクラッシュしてしまうかもしれない（実験中の）カーネルを検査する ような時に有効です。FALLBACK オプションを使うと、次のリブート（例えば、 手動によりリセットや、監視機能による）時に異なった（たぶん正しく動作する） カーネルがロードされるでしょう。fallback メカニズムによるコマンドライン は、-R オプションによるデフォルトコマンドラインの削除や変更によって、 クリアされます。 デフォルトコマンドラインの変更を参照してください。

LABEL=<名称>

  デフォルトでは、LILO はそれぞれのイメージを特定するための名称 として、メインファイル名（パスを除いた）を使います。LABEL 変数を使うこと によって、別の名称を使うことができます。

LOCK

  ブート時のコマンドラインを、次回のブート時のデフォルトコマンドライン として、自動的に記録します。この場合、LILO は手動で上書きされまで、lock し続けることになります。

OPTIONAL

  マップ作成時のそのメインファイルが利用できない場合、このイメージ を省略します。これはいつも存在する訳ではない、テスト用のカーネルを指定 するのに便利です。

PASSWORD=<パスワード>

  イメージをロードしようとする時にユーザにパスワード を尋ねます。設定ファイルは暗号化せずにこのオプションを記述しますので、 設定ファイルをスーパユーザしか読めないようにすべきです。パスワードは常に 大文字小文字を区別します。

RESTRICTED

  パスワード保護を緩めて、コマンドライン（たとえばシングルユーザ モード指定など）が指定された時のみ、パスワードを要求するようにします。 RESTRICTED 変数は、PASSWORD 変数と一緒に指定された時のみ有効です。

SINGLE-KEY

  一つのキーを押すだけでイメージの選択が可能になります。その後に [Enter] キーを押す必要がありません。SINGLE-KEY オプションは、イメージの label、または別名、（またはその両方）が１文字であることを要求します。 それゆえ、その文字で始まる他のラベルや別名があってはいけません。例えば、 「linux」というラベルと「l」という別名を指定することは、SINGLE-KEY 変数 を使う場合は許させません。またもし１文字の名称しか指定しないと、コマンド ラインパラメータを指定できなくなるので注意してください。

全ての一般のイメージ毎のオプションは、LABEL と ALIAS を除いて、全イメージの デフォルト値として、グローバルオプションセクションに記述することができます。

##### イメージごとのオプション

    password = Geheim
    single-key
    image = /vmlinuz
      label = linux
      alias = 1
      restricted
    other = /dev/hda1
      label = dos
      alias = 2

#### カーネルのためのイメージ毎のオプション

それぞれ（カーネルもカーネル以外も）のイメージの説明は、任意の変数が後に続く 特別な変数で始まります（ デバイスからのカーネルイメージのブートセクション をご覧ください）。以下の変数は、Linux カーネルを説明するために使用されます。

APPEND=<文字列>

  <文字列>に指定されたオプションをパラメータ行に付けて、 カーネルに渡します。これは完全に自動検出できないようなハードウェアの パラメータを指定するのによく利用します。例えば以下のような。

           append = "aha152x=0x140,11"

INITRD=<名称>

  ブート時に、初期 RAM ディスクとしてロードすべきファイルを 指定します。

LITERAL=<文字列>

  APPENDと似ていますが、こちらは他のオプションは削除して しまいます（例えばルートデバイスの設定など）。不用意な LITERAL オプション の使用は、必要不可欠のオプションを削除してしまうことになるので、この オプションはグローバルオプションセクションに指定することはできません。

RAMDISK=<サイズ>

  任意の RAM ディスクのサイズを指定します。0 を指定すると RAM ディスクは作成されません。省略した場合は、ブートイメージで使用され ているサイズが採用されます。

READ-ONLY

  ルートファイルシステムを読み取り専用でマウントすべき場合に指定 します。大抵は、システムのスタートアッププロシージャが後で（例えば、fsck を行った後など）ルートファイルシステムを読み書き可能で再マウントします。

READ-WRITE

  ルートファイルシステムを読み書き可能でマウントすべき場合に指定 します。

ROOT=<ルートデバイス>

  ルートとしてマウントすべきデバイスを指定します。 特殊名称 CURRENT が使用された場合は、現在ルートファイルシステムがマウント されているデバイスがルートデバイスとして設定されます。もし -r オプション によってルートが変更された場合は、それぞれのデバイスが使用されます。ROOT 変数が省略された場合、カーネルイメージに含まれているルートデバイスが使用 されます。これは、rdev プログラムで変更できます。

VGA=<モード>

  ブート時に選択されるべき、VGA テキストモードを指定します。 以下の値が許されます。（大文字小文字は区別しません）

  NORMAL

    通常の 80x25 テキストモードを選択します。

  EXTENDED

    80x50 テキストモードを選択します。EXTENDEDは、EXT と短縮して 記述することができます。

  ASK

    ブート時に停止して、ユーザに入力を求めます。 <数値> 対応するテキストモードを使用します。利用可能なモードのリ ストは vga=ask でブートして、[Enter]キーを押すことで表示できます。

  もしこの変数が省略された場合は、カーネルイメージに含まれる VGA テキスト モードが使用されます。rdev コマンドでカーネルイメージに設定されている VGA テキストモードを変更することができます。

LITERAL 以外の全てのカーネルのイメージ毎のオプションもまた、全てのカーネルに 対するデフォルトとして、グローバルオプションセクションに記述できます。

もし RAMDISK, READ-ONLY, READ-WRITE, ROOT, または VGA のうちいくつかが、構成 ファイル上では省略されて、更にカーネルイメージ内の対応変数が変更された場合は LILO またはカーネルは、その新しい値を使用するでしょう。

同じイメージに対し異なった設定を行うことも全く問題ありません。なぜなら LILO は、それらの設定を、イメージ自身ではなく、別のイメージディスクリプタに保存 するからです。

##### カーネルのためのオプションの例

    image = /vmlinuz
      label = lin-hd
      root = /dev/hda2
    image = /vmlinuz
      label = lin-fd
      root = /dev/fd0

### ブートイメージの種類

LILO は以下のような種類のイメージをブートできます。

- ファイル指定のカーネルイメージ。

- ブロックデバイス（例えばフロッピーディスクなど）指定のカーネルイメージ。

- 他のオペレーティングシステムのブートセクター。

イメージの種類は、構成セクションの最初の値の名称で決まります。

イメージファイルは、ブート時にアクセスできるなら、どんなメディア上に置くこと も可能です。ルートデバイスに置かねばならない訳ではありません。

#### ファイルからのカーネルイメージのブート

イメージは以下のように指定します− IMAGE=<名称>

##### カーネルイメージの指定

    image = /linux

カーネルイメージセクションに追加できるオプションについては、カーネルのためのイメージ毎のオプション セクションとブートイメージの種類の セクションをご覧ください。

#### デバイスからのカーネルイメージのブート

マップされるべきセクターの範囲を指定する必要があります。範囲（ <開始点>- <終点> ）か、開始点と長さ（ <開始点>+<数値> ）のいずれかで指 定します。 <開始点>と<終点>は、0ベースになります。開始点しか指定しない場合は、 １セクターのみ、マップされます。

イメージは以下のように指定します− IMAGE=<デバイス名> に加えて、RANGE 変数も 指定する必要があります。

##### カーネルイメージの指定方法

    image = /dev/fd0
      range = 1+512

全てのカーネルオプションが、デバイスからのカーネルのブートの場合でも利用する ことができます。

#### 他のオペレーティングシステムのブート

LILO は、例えば MS-DOS などの他のオペレーティングシステムをブートすることが できます。他のオペレーティングシステムをブートするため、ブートセクターを含む ローダプログラム、デバイス、またはファイルと、パーティションテーブルを含む デバイスを指定する必要があります。

ブートセクターはパーティションテーブルとマージされて、マップファイルに格納 されます。

現在、chain.b と os2_d.b というローダがあります。chain.b は単に指定された ブートセクターを起動するだけです。 ブートセクターは、LILO の第 2 ブートローダによって、chain.b のコードに 制御が移る前にロードされます。 os2_d.b は第 2 ハードディスクから OS/2 を起動できるように、chain.b を改造したものです。実際にドライブを摩り替える ためには、os2_d.b を使うほかに、MAP-DRIVE オプションを使う必要があります。

イメージは次のように指定します。

    OTHER=<デバイス名> または、OTHER=<ファイル名>

カーネルのためのイメージ毎のオプション セクションに記載されたオプションに加えて、以下のような変数が利用 できます。

CHANGE

  この CHANGE セクションに指定されたルールに従ってパーティション テーブルを変更します。このオプションは起動されたシステムが、パーティション テーブルを調べて、そこから自分のパーティションを見つけることができるように するために使用されます。 パーティションタイプの変更 も参照してください。

LOADER=<チェーンローダ>

  使用すべきチェーンローダを指定します。省略された 場合は、/boot/chain.b を使用します。

MAP-DRIVE=<BIOSデバイスコード>

  フロッピーやハードディスクドライブを再マップ する内蔵ドライバをインストールするように、chain.b に指示します。こうする ことにより、オペレーティングシステムがハードディスクのアクセスに BIOS のみ を使う限りにおいては、第 1 ハードディスク以外のハードディスクからでも、起動 することができます。PC/MS-DOS では動作することが確認されています。

  * もしオペレーティングシステムが、特定の構成やブートするディスクを使用 するためのドライバを要求したら、どうなるのだろうと疑問をもたれるかも しれません。ハードウェアの能力（たとえばノンブロッキングアクセスなど） を最大限に引き出すため、最適化されたドライバを使用する傾向があるので、 第 2 ハードディスクからシステムをブートすることは、益々難しくなって います。

  MAP-DRIVE には、変数 TO=<BIOSデバイスコード>が続きます。これは元のコード の代わりに、効果的にアクセスできるドライブコードを指定します。マップの リストは最初に一致するものが見つかるまで検索されます。それゆえ、ドライブを 「すりかえる」ことができます。下の 2 番目の例を参照してください。

TABLE=<デバイス>

  パーティションテーブルを含むデバイスを指定します。LILO は このオプションが省略された場合、オペレーティングシステムにパーティション の情報を渡しません。（いくつかのオペレーティングシステムは、自分がブート されたパーティションを知る別の手段を持っています。たとえば、MS-DOS は通常 自分のブートセクターにブートディスクやパーティションのジオメトリを格納し ます。） この変数に指定したパーティションテーブルが変更された場合は、 /sbin/lilo を実行しなおさなければいけないことに注意してください。

UNSAFE

  マップ作成時にブートセクターにアクセスしません。これによってパーティ ションテーブルの検査など、いくつかの正当性検査ができなくなります。 ブート セクターが固定フォーマットのフロッピー上にある場合、UNSAFE を使うとマップ インストーラの実行時にドライブに読み取り可能なディスクを挿入しなくても済み ます。UNSAFE と TABLE は同時に使うことはできません。

これらのオプションは、グローバルオプションセクションには指定できません。

##### 他の OS ブートのためのオプション指定

    other = /dev/hda2
      label = dos
      table = /dev/hda

    other = /dev/hdb2
      label = os2
      loader = /boot/os2_d.b
      map-drive = 0x80
        to = 0x81
      map-drive = 0x81
        to = 0x80

### ディスクジオメトリ

フロッピーやほとんどのハードディスクに対し、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 番目の例を参照 してください。）

#### ジオメトリ情報の取得

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

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

#### ジオメトリの指定

ディスクジオメトリパラメータは、設定ファイルのグローバルオプションセクション に指定します。おのおののディスクパラメータセクションは、ブートイメージの指定 方法と似ていて、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=<パーティションデバイス> を加えることができます。おのおのの パーティションセクションは以下の一つの変数のみ含めることができます。

START=<パーティションオフセット>

  0 で始まるパーティションの開始セクターを 指定します。ディスク全体は常に 0 のパーティションオフセットを持っています。 パーティションオフセットは、CD-ROM のようにカーネルがその情報を提供しない ようなデバイスを使う場合にのみ必要です。

##### ディスクジオメトリの指定の例

    disk = /dev/sda
      bios = 0x80
      sectors = 32
      heads = 64
      cylinders = 632
      partition = /dev/sda1
        start = 2048
      partition = /dev/sda2
        start = 204800
      partition = /dev/sda3
        start = 500000
      partition = /dev/sda4
        start = 900000

    disk = /dev/sda
      bios = 0x80
    disk = /dev/hda
      bios = 0x81

### パーティションの書き換え

いくつかの Linux 以外のオペレーティングシステムは、それらのパーティション の情報（たとえばそれらにとってのルートファイルシステムなど）をパーティション テーブルから取得します。もしそのようなオペレーティングシステムが一つの PC に 複数インストールされたら、それらがパーティションテーブルの内容の解釈に混乱を きたすかもしれません。これらの問題は、ブートされるオペレーティングシステムに 応じて、パーティションテーブルを変更することで避けることができます。

パーティションテーブルの変更内容は、各オペレーティングシステムのセクションの CHANGE セクションに指定します。CHANGE セクションは、ビルド時に REWRITE_TABLE オプションを指定した場合のみ有効になることに注意してください。

CHANGE セクションは、更新されるべきテーブルエントリに該当する、それぞれの パーティションのためのサブセクションを含みます。各パーティションは以下の ように設定します。

    PARTITION=<デバイス名>

変更は設定ファイル上に記述された順序で適用されます。以前の変更を繰り返したり、 後でその結果を変更するような、不要な変更を含んだ構成は無効で、マップインス トーラによって拒否されます。

内部的には、全ての変更は、場所（パーティションテーブル内にあるディスクと オフセット）、その場所が変更前に持っていた値、今度設定されるべき値を指定 する一種のルールとして表現されます。安全のため、以前の値が違っていたら、 このルールは無視されます。

#### パーティションのアクティブ化

このオプションは、パーティションテーブルのアクティブフラグを検査してブート パーティションを決定するようなシステムをブートするために用意されました。 フラグは、ACTIVATE によって有効になり、DEACTIVATE によって無効になります。 該当のパーティションにのみ有効であることに注意してください。LILO は自動的に 他のパーティションのアクティブフラグを変更したりはしません。ですから、複数 のパーティションが同時にアクティブになることもあり得ます。

##### パーティションのアクティブ化の例

    other = /dev/sda4
      label = sco
      change
        partition = /dev/sda4
          activate
        partition = /dev/sda3
          deactivate

#### パーティションタイプの変更ルール

パーティションタイプの変更とは、2 つの取りうる値の相互変換を指します。典型的な 慣習としては、``非表示''にするためにパーティションタイプの上位ニブルの最下位 ビットを立て（つまり 0x10）、``表示''にするために、同ビットをクリアすること です。LILO はこの変更をルールの設定に基づいて遂行します。それぞれのルールは パーティションタイプの名称、通常の値、及び非表示の場合の値を定義します。この ルールは設定ファイルのオプションセクションに定義します。それらを定義する セクションは、CHANGE-RULES で始まります。

RESET

  前に定義されているルールを全て削除します。これは予め定義されたルール を使いたくない場合に使用します。

TYPE=<名称>

  指定された名称のタイプをルールに加えます。タイプ名称は大文字 小文字を区別しません。値は、NORMAL=<値> と HIDDEN=<値> という形で定義を します。値は、10 進数、または、0x で始めることで 16 進数で指定することも 可能です。もしいずれかしか指定されていない場合、他の値は、同じ数値で、 もっともそれらしいビットを反転させたものであると想定します。

LILO は DOS パーティションの 3 つのパーティションタイプをあらかじめ定義して います。以下の例は、そのあらかじめ定義されたルールを削除して、再び定義した ものです。

##### パーティションタイプの再定義

    change-rules
      reset
      type = DOS12
        normal = 0x01
        hidden = 0x11
      type = DOS16_small
        normal = 4 # hidden is 0x14
      type = DOS16_big
        hidden = 0x16

#### パーティションタイプの変更

パーティションタイプの変更は、パーティションセクションに、SET=<名称>_< 状態>という形で指定します。<名称> はパーティションタイプの名称で、< 状態> はその状態、つまり NORMAL か HIDDEN です。

##### パーティションタイプの変更

    other = /dev/sda3
      label = dos
      change
        partition = /dev/sda2
          set = dos16_big_normal
        partition = /dev/sda3
          activate
          set = DOS16_big_normal

SET 変数は、パーティションセクションにつき一つしか指定できません。あまりない とは思いますが、もし一つ以上の SET 変数を使いたい場合は、パーティションセク ションを増やしてください。

### キーボード変換

PC のキーボードは所謂スキャンコードを発行します。これは元来キー番号です。BIOS はこれらのスキャンコードをキートップに印刷された文字の文字コードに変換します。 デフォルトでは、BIOS は通常、キーボードが US レイアウトであると推測します。 一度オペレーティングシステムが起動してしまえば、オペレーティングシステムが、 異なった割り当てを使うことも可能です。

ブート時は、LILO は BIOS が提供する基本的なサービスしか使うことができません。 ですから、US キーボード用の文字コードを受け取ります。そこで LILO は実際の レイアウトに合った文字コードに再マップする簡単なメカニズムを提供します。 現在のメカニズムは完璧ではありません。なぜなら、BIOS では、スキャンコード を最初に文字コードに変換してしまうからです。このことは、US キーボードには、 無い文字のスキャンコードの組み合わせは、(BIOSが変換しないので) LILOに無視 されることを意味します。

#### キーボード変換テーブルのコンパイル

LILO は Linux がテキストコンソールのために使うキーボード変換テーブルから、 レイアウト情報を取得します。それは通常、/usr/lib/kbd/keytables に格納されて います。LILO には、それらのテーブルを読んで、マップインストーラが利用するのに 適したテーブルを生成するプログラム keytab-lilo.pl が含まれています。 keytab-lilo.pl はプログラム loadkeys を実行して、構文解析が容易なフォーマット にしてテーブルに出力します。 いくつかのシステムでは、loadkeys はルート権限がないと実行できません。 つまり、keytab-lilo.pl もルート権限で実行する必要があります。

keytab-lilo.pl は以下のように使います−

      keytab-lilo.pl [ -p <元のコード>=<新しいコード> ] ...
        [<パス>]<デフォルトレイアウト>[.<拡張子>] ]
         [<パス>]<キーボードレイアウト>[.<拡張子>] ]

      -p <元のコード>=<新しいコード>
         変換テーブルファイルから得た割り当てを(``パッチ'')で訂正します。例えば
        もし大文字のAが押された時に、アットマークにしたかった場合、-p 65=64 と
        します。-p オプションは何度も繰り返すことができます。コードは 0x や 0 を
        先頭につければ、それぞれ 16 進数や 8 進数で指定することもできます。

      <パス>  ファイルのあるディレクトリを指定します。デフォルトパスは
        /usr/lib/kbd/keytables です。

      <拡張子>  通常は、.map が続きます。もしファイル名にドットがない場合は、
          自動的に付加されます。

      <デフォルトレイアウト>  BIOS による変換を指定するレイアウトです。
         省略すると US が使用されます。

      <キーボードレイアウト>  キーボードの現実のレイアウトです。

keytab-lilo.pl は変換結果を標準出力にバイナリ文字列として出力します。従って テーブルは、どんな場所でも、またどんな名称でも格納できます。しかし、習慣的に /boot/<kbd>.ktl("Keyboard Table for Lilo")あたりがいいでしょう。 <kbd>には、キーボードレイアウトの名称が入ります。

##### キーボード変換テーブルのコンパイル

    keytab-lilo.pl de >/boot/de.ktl

#### キーボード変換テーブルの利用

キーボード変換テーブルファイルは、グローバル構成オプション

    keytable=<テーブルファイル名>

で指定します。完全なファイル名を指定する必要があります。

##### キーボード変換テーブルの利用

    keytable = /boot/de.klt

## インストールと更新

### インストール

このセクションでは、LILO のインストールについて説明します。LILO のアンインス トールについては、セクション LILO のアンインストール を参照して下さい。

#### 互換性

カーネルのヘッダーファイルは、/usr/include/linux になければいけませんし、 通常は、カーネルは、LILO をコンパイルする前に、make config を実行して、 作成されていなければいけません。

/bin/sh は本当のボーンシェルでなければいけません。bash は完全に互換性があり ますが、いくつかの ksh では問題が起こるかもしれません。

配布物に、INCOMPAT というファイルがあります。そこには LILO の古いバージョン との互換性について述べてあり、その他の互換性についての記述もあります。

#### 簡易インストール

もしあなたが自分のハードディスクに LILO をインストールしたいが、別に全ての 機能を使いたい訳ではないなら、簡易インストールスクリプトを使うといいかも しれません。詳細は、QuickInst（というファイル）を読んで下さい。

Quickinst は一番最初のインストールか、既存の状態を完全にリプレースする場合 にしか、利用できません。LILO の既存のインストール状態の更新には使えません。 他の LILO のインストールファイルが全くないディレクトリに、LILO を解凍して いるか確認してください。

#### ファイル

lilo-21.tar.gz にはいくつかのファイルが含まれています−

`lilo/README`

  このドキュメントはプレーンな ASCII フォーマットです。複雑な表を含む、 いくつかのセクションは、doc/user.tex にある LaTex バージョンにのみ 含まれています。

`lilo/INCOMPAT`

  LILO の古いバージョンとの互換性のリストです。

`lilo/CHANGES`

  更新履歴です。

`lilo/VERSION`

  それぞれのリリースのバージョン番号です。

`lilo/QuickInst`

  簡易インストールスクリプトです。

`lilo/lilo-<version>.lsm`

  それぞれの LILO のリリースの LSM ("Linux Software Map") エントリです。

`lilo/Makefile`

  他の全てを作成する Makefile です。

`lilo/*.c, lilo/*.h`

  LILO のマップインストーラの C ソース及び共通ヘッダーファイルです。

`lilo/*.S`

  LILO ブートローダのアッセンブラソースです。

`lilo/activate.c`

  簡易なブートパッケージ設定ツールの C ソースです。

`lilo/dparam.s`

  ディスクパラメータダンプツールのアッセンブラソースです。

`lilo/mkdist`

  現在の LILO の配布物を作成するために使うシェルスクリプトです。

`lilo/keytab-lilo.pl`

  キーボード変換テーブルを作成する Perl スクリプトです。

`lilo/doc/README`

  ドキュメントを生成する方法に対する記述です。

`lilo/doc/Makefile`

  LaTex ソースを DVI 出力やプレーンな ASCII README に変換するために使う Makefile です。

`lilo/doc/user.tex`

  LILO のユーザーズガイドの LaTeX ソースです。 (このドキュメント).

`lilo/doc/tech.tex`

  LILO の技術概要の LaTeX ソースです。

`lilo/doc/*.fig`

  技術概要で使う、いくつかの xfig フォーマットの画像です。

`lilo/doc/fullpage.sty`

  数平方マイルの森林を救うためのスタイルファイル

`lilo/doc/rlatex`

  全ての参照がなくなるまで、繰り返し LaTeX を出力するシェルスクリプトです。

`lilo/doc/t2a.pl`

  ユーザーズガイドの LaTeX ソースをプレーンな ASCII テキストに変換する Perl スクリプトです。

lilo ディレクトリ下（その周辺も）の make をした後に作成されるファイル−

`lilo/boot.b`

  ブートセクターを合わせたものです。make install によって、このファイルは /boot ディレクトリに置かれます。

`lilo/chain.b`

  一般的なチェーンローダです。make install によって、このファイルは /boot ディレクトリに置かれます。

`lilo/os2_d.b`

  OS/2 を第 2 ハードディスクから起動するためのチェーンローダです。 make install によって、このファイルは /boot ディレクトリに置かれます。

`lilo/lilo`

  LILO の（マップ）インストーラです。 make install によって、このファイルは /sbin ディレクトリに置かれます。

`lilo/activate`

  簡易ブートパラメータ設定ツールです。

`lilo/dparam.com`

  ディスクパラメータをダンプする MS-DOS 実行ファイルです。

#### 標準初期インストール

まず、LILO ファイルをインストールしなければいけません。

- 新しいディレクトリ 例えば /usr/src/lilo など に、lilo-<version>.tar.gz からすべてをファイル を抽出します。

- Makefile を設定します。（ ビルド時の設定セクションを参照してください）

- make を実行して、全ての構成物をコンパイルします。

- make install を実行して、全ての LILO のファイルをそのインストールすべき 場所にコピーします。ファイル lilo は /sbin に置かれ、keytab-lilo.pl は /usr/sbin に置かれ、boot.b, chain.b, os2_d.b は /boot に置かれるはずです。

もし非標準的なディスクで、LILO を使う場合は、ディスクのパラメータを決定し、 それを設定ファイル内に指定しなければなりません。詳細は``ディスクジオメトリ'' のセクションを参照してください。非標準的なディスクを使う場合は、次に LILO の ブートセクターをフロッピーディスクに置いてテストすべきです。

- /dev/fd0 にブランク（但しロウレベルフォーマットはしてあるもの）フロッピー ディスクを挿入します。

- 以下のコマンドを実行します。

  `echo image=< カーネルイメージ > | /sbin/lilo -C - -b /dev/fd0 -v -v -v`

  もし既にシステムに LILO がインストールされているなら、元のマップファイル を上書きしたくないでしょう。その時は、-m オプションを使って、別のマップ ファイル名を指定してください。

- 再起動します。LILO はフロッピーディスクからブートローダをロードして、 その後、ハードディスクからカーネルのロードするでしょう。

ここで、あなたは使用するブートコンセプトを決定する必要があります。/dev/hda2 に Linux のパーティションがあるとしましょう。あなたは、LILO をそこにインス トールしたいでしょう。DOS-MBR が LILO のブートセクターをロードします。

- 作業用のブートディスク、たとえばインストールまたはリカバリディスクなどを 用意します。これら準備したもので起動ができて、Linux のパーティションが マウントできることを確認してください。

- もし LILO を上書きしようとしているブートセクターに、ある値（たとえば、 MBRまたは LILO で問題が起きた時に使おうと思っているの別のブートローダ） があるなら、ブートディスクをマウントして、フロッピー上のファイルにその ブートセクターのバックアップコピーを、次のようにして、作成しておいた方 がいいでしょう。

      dd if=/dev/hda of=/fd/boot_sector bs=512 count=1

- 設定ファイル /etc/lilo.conf を作成します。

           <グローバル設定>
           <イメージ指定>
             <イメージ毎のオプション>
           ...

  全てのファイルに対して、絶対パスが使用されているかを確認してください。 相対パスは -r オプションを使用した時に、予期せぬ動作の原因になります。

- さて、以下のコマンドで、もしハードディスクに LILO をインストールしたら、 どうなるかを確認しましょう。

  `/sbin/lilo -v -v -v -t`

- もし追加で他のブートユーティリティが必要な場合は、この時点でインストール をしておきます。

- /sbin/lilo を実行してハードディスクに LILO をインストールします。

- アクティブパーティションを変更する必要がある場合は、fdisk や activate を 使います。

- 再起動します。

#### ビルド時の設定

ビルド時に、いくつかのパラメータを設定することができます。Makefile の上の方に 書くか、/etc/lilo.defines というファイルに書きます。このファイルが存在する場合 Makefile の設定は無視されます。

以下の項目が設定できます。

BEEP

  ``LILO''と表示された後にビープ音を鳴らすようにします。これはシリアル コンソール越しに起動したり稼働している時に、正しい時間にビープ音が鳴らない マシンの場合、便利です。このオプションはデフォルトでは無効です。

IGNORECASE

  イメージ名の照合時に大文字小文字を区別しません。例えば``linux'' と ``Linux'' は同一として扱います。このオプションはデフォルトで有効です。 パスワードの照合は、大文字小文字を常に区別することに注意してください。

LARGE_EBDA

  EBDA (拡張 BIOS データ領域) のためのスペースをより多く確保する ために、LILO を下位アドレスにロードします。これは最近の MP システムで必要 です。LARGE_EBDA を有効にすると、``小さな'' イメージ（たとえば、``Image'' や ``zImage''など）の最大サイズが小さくなることに注意してください。

NO1STDIAG

  第 1 ステージブートローダにおいて、読み込みエラーが起きても、 診断情報を生成しません。これによって、ディスクコントローラが一時的に読み 込みエラーを起こしただけで、冗長なエラーコードを表示してしまうのを防ぎます。 このオプションはデフォルトでは無効です。

NODRAIN

  いくつかのシステムではキーボードバッファにゴミがあるので、起動時に この領域を空にします。NODRAIN を設定することで、キーボードバッファの掃除を 無効にします。このオプションはデフォルトでは無効です。

NOINSTDEF

  INSTALL オプションが省略された場合、新しいブートセクターをインス トールせず、古いブートセクターを更新しようとします。このオプションはデフォ ルトでは無効です。

ONE_SHOT

  もし何かのキーが押されていたら、コマンドラインタイムアウト（構成 変数 TIMEOUT）を無効にします。こうすると、非常に短いタイムアウトが、PROMPT 変数が設定されている場合に利用されます。ONE_SHOT はデフォルトでは無効です。

READONLY

  マップファイル内のデフォルトコマンドラインのセクターの上書きを 禁止します。こうすることにより、-R で指定したコマンドラインが、明示的に 解除されるまで、有効になります。READONLY は LOCK, FALLBACK 及びすべての REWRITE_TABLE によって有効になる全てのオプションを無効にします。デフォルト ではこのオプションは無効です。

REWRITE_TABLE

  ブート時のパーティションテーブルの書き換えを有効にします。 これはシステムパーティションにアクティブフラグがセットされていることが 必要な、またパーティションタイプを変更する必要のあるシステムを起動する 時に必要になるでしょう。``パーティションテーブルの書き換え''セクションも 参照してください。このオプションは危険なので、デフォルトでは無効です。

USE_TMPDIR

  一時的なデバイスファイルを作成するときに TMPDIR 環境変数に指定 されたディレクトリを使用します。もし TMPDIR が設定されていなかったり、

USE_TMPDIR

  なしで、LILO がコンパイルされた場合、一時的なデバイスファイル は、/tmp に作成されます。 TMPDIR を尊重するのは``正しい''ことですが、LILO が一時的なデバイスファイル をつくるということは、動作環境が完全には設定されていないのかもしれません。 そのような場合には、TMPDIR は正しい場所を指していないかもしれません。

  このオプションはデフォルトでは無効です。

VARSETUP

  可変サイズのセットアップセグメントの利用を有効にします。このオプ ションは、デフォルトで有効で、旧式のカーネルを使う時に稀に起こるであろう 不具合時のみ、固定サイズのセットアップセグメントに移行するようにします。 XL_SECS=<セクター数> 特別に大きい（非標準の）フロッピーディスクをサポート します。セクター数は、BIOS のディスクパラメータテーブルに特殊な値として 設定されます。この手法は、システムによっては不適当な動作を引き起こすかも しれないことに注意してください。このオプションはデフォルトでは無効です。

/etc/lilo.defines は恒常的な変更がある場合に使うといいでしょう。通常のインス トール手続きでは、このファイルには触れません。

##### lilo.defines を使わない際のコンパイルオプション

    -DIGNORECASE -DONE_SHOT

ビルド時の設定を変更したあとは、LILO 以下のようなコマンドで、再コンパイル しないといけません。

    make spotless
    make

#### フロッピーディスクインストール

いくつかの場合 例えば、BIOS を通じてハードディスクにアクセスできない場合など。 、ハードディスクのアクセスせずにカーネルを起動できるように、 フロッピーディスクに LILO をインストールすることが望ましいです。

基本的な手続きは、全く単純です（BIOS 制限 セクションも参照してください）

- ファイルシステムは、そのファイルシステム上で作成されなければいけません。

- カーネルと boot.b はフロッピーディスクにコピーしなければいけません。

- マップファイルの作成は、/sbin/lilo を使わなければいけません。

これは以下のように簡単にできます

    /sbin/mke2fs /dev/fd0 [ -d /fd ] || mkdir /fd
    mount /dev/fd0 /fd
    cp /boot/boot.b /fd
    cp /zImage /fd
    echo image=/fd/zImage label=linux |
      /sbin/lilo -C - -b /dev/fd0 -i /fd/boot.b -c -m /fd/map
    umount /fd

/sbin/lilo のコマンドラインはちょっとトリッキーです。-C - は設定情報を標準入力 から取得し（通常はファイルに書かれてますが）、-b /dev/fd0 はブートセクターを フロッピーディスクに書くことを指定し、-i /fd/boot.b は第 1、及び第 2 ステージ ローダをフロッピーから取得することを指定し、-c はロード手続きをスピードアップ して、-m /fd/map はマップファイルもフロッピーに置くことを指定します。

### 更新

LILO はカーネル、全てのシステム、そして若干ですが LILO 自身の更新の影響を 受けます。大抵は、そのような更新の後、/sbin/lilo を実行するだけで、（少なく とも LILO に関するものは）すべて更新されます。

#### LILO の更新

LILO を新しいバージョンに更新する前に、少なくとも以前のリリース物との互換性 について記述したファイル、INCOMPAT だけは読んでおく必要があります。

その後、最初にやることは、初期インストール時に行ったことと同じです。− 全てのファイルを解凍し、Makefike を作成して、make で実行ファイルを作成し、 make install でファイルをインストールします。

boot.b, chain.b などの古いバージョンは、自動的に、boot.old, chain.old などに リネームされます。これは、たとえインストール手続きが完了しなかった場合でも、 起動ができることを保証するために行います。boot.old, chain.old などはマップ ファイルが再作成された後、削除されます。

boot.b, chain.b などはその場所が変わりますし、マップファイルのフォーマットも 変わるかもしれないので、ブートセクターとマップファイルは必ず更新しなければ いけません。そのためには、/sbin/lilo を実行してください。

#### カーネルの更新

LILO がアクセスするカーネルファイルが移動したり、上書きされた場合は、必ず マップの再作成を行う必要があります。 いつも使っているカーネルを変更した後にマップの更新を忘れても、起動が できるように、別の、正しく動作するカーネルイメージを残しておくことを お薦めします。 そのためには、/sbin/lilo を実行して ください。

カーネルは、``zlilo'' というカーネルを /vmlinuz にコピーして、/sbin/lilo を 実行する make ターゲットを持っています。

#### システムのアップグレード

通常、システムのアップグレード（例えば、インストール、パッケージの削除、インス トールされたバイナリファイルの大きな配置換えなど）は、LILO には影響しません。 勿論、もしその過程で、新しいカーネルがインストールされた場合は、通常のカーネル の更新手続きを、引き続き実行する必要があります（ カーネルの更新セクションを 参照してください）。またもしカーネルが削除されたり、追加された場合、たぶん設定 ファイルの更新も必要になるでしょう。

もしこのシステムのアップグレードによって、LILO が更新された場合は、必ずこの システムの起動の前に、/sbin/lilo を実行する必要があります。この重要な手続きを 自動的に遂行するために、そのアップグレード手順に頼ることは、一般的にはあまり いい手段とは言えないでしょう。

しかし、パーティション全体（たとえば /, /usr など）の削除や再作成を引き起こす ようなシステムのアップグレードの場合は、話が別です。まずは、このようなことは 極力避けるべきでしょう。なぜならそれは重要なファイル、たとえば先週１週間かけて いじくった /etc/XF86Config などを失う危険性が非常に高いからです。もしそんな アップグレードを無理矢理にでも行うなら、それは LILO の完全な削除と同じなので、 新たなインストールが必要です。それゆえ、 LILO のアンインストール セクション と LILO の更新 セクションで説明している手順 を実行する必要があります。もし この破壊的アップグレードを行う前に /etc/lilo.conf のバックアップを取り忘れた 場合、標準初期インストール のセクションからまた始める必要があるでしょう。

### LILO のアンインストール

システム起動時に、LILO が動作することを止めるには、そのブートセクションを削除 するか無効にする必要があります。ブートセクターを削除したら、他のすべての LILO に関係するファイルを削除しても構いません。 ブートセクターを削除する時に、元のブートセクターのバックアップが必要に なるかもしれません。それらは、/boot に格納されています。

更に、Linux を削除する時は、LILO のファイル（/boot にあるものなど）を削除する 前に必ず LILO をアンインストールしなければいけません。もし LILO を MBR に インストールした場合は、特に重要です。

LILO バージョン 14（とそれ以降）は、lilo -u でアンインストールすることができ ます。LILO のバージョン 14 以降が現在はインストールされているが、最初にイン ストールしたものはもっと以前のものであった場合、lilo -U の方がいいでしょう。 -U を使う場合、このセクションの最後の方で説明する警告が適用されます。

もし LILO のブートセクターを基本領域にインストールしていて、標準の MBR か、 何かのパーティション切り替えプログラムで起動している場合、違うパーティション をアクティブにすることで、LILO のブートセクターを無効にすることができます。 MS-DOS の FDISK や、Linux の fdisk、または、LILO の activate でそれを行う ことができます。

もし LILO のブートセクターがディスクのマスターブートレコードにある場合、別の MBR、典型的なのは、MS-DOS の標準 MBR に置き換えることで LILO のブートセクター を無効にできます。MS-DOS 5.0 以降を利用している場合は、FDISK /MBR で、MS-DOS の MBR に戻すことができます。これは、パーティションテーブルではなく、単に ブートローダコードのみを置き換えます。

LILO はブートセクターを上書きする時に、自動的にバックアップを取ります。それら は、/boot/boot.<nnnn> といったように <nnnn> の部分にデバイス番号をつけたもの です。デバイス番号は、たとえば /dev/hda では 0300、/dev/sda では 0800 などと なります。これらのバックアップは、消去の手段が利用できない場合に使います。 そのコマンドは、それぞれ以下のようになります。

      dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1  または
      dd if=/boot/boot.0800 of=/dev/sda bs=446 count=1

警告− いくつかの Linux のディストリビューションは、それが作成したシステム から、boot.<nnnn> をインストールします。これらのファイルを使うと予期せぬ 結果を招く恐れがあります。それゆえ、ファイルの作成日付は、注意深く確認する 必要があります。

### 他のオペレーティングシステムのインストール

いくつかの他のオペレーティングシステム（たとえば MS-DOS 6.0）は、それらの インストール手続きの中で、MBR を更新してしまうようです。それゆえ、そのような インストールの後、LILO が動作しなくなる可能性があるので、Linux はフロッピー ディスクから起動しなければなりません。/sbin/lilo を再実行する（LILO が MBR にインストールされていた場合）か、LILO のパーティションをアクティブにする （LILO が基本領域にインストールされていた場合）ことで、元の状態に復帰させる ことができます。

他のオペレーティングシステムをインストールした後に、LILO をインストールする 方が、一般的にはいいでしょう。たとえば OS/2 は、それをインストールしようと する時に既存の Linux システムに対して、障害を与えると言われています。（しかし フロッピーからの起動と /sbin/lilo の実行は、殆どの障害を克服してくれるに違い ありません）

通常は、新しいオペレーティングシステムは、それを起動するために、LILO の設定に 追加され（そして /sbin/lilo が再実行され）なければなりません。

いくつかの他のオペレーティングシステムにおける既知の問題については、その他の問題 セクションも参照してください。

## トラブルシューティング

LILO の全ての部品は、障害の診断のために利用するいくつかのメッセージを出力 します。

### マップインストーラの警告とエラー

マップインストーラ（/sbin/lilo）が出力するメッセージの殆どは、自己弁明的な ものです。共通のエラーであることを指し示すいくつかのメッセージを以下に記載 します。それらは、致命的なエラーと警告（致命的でないエラー）に分類されます。

#### 致命的なエラー

-        Boot sector of <デバイス名> doesn't have a boot signature
         Boot sector of <デバイス名> doesn't have a LILO signature

  LILO がアンインストールされるべきセクターが、LILO のブートセクターでは ないようです。

-        Can't put the boot sector on logical partition <数値>

  論理領域にあるルートファイルシステムパーティションに、LILO のブート セクターを置こうとしています。これは通常は、期待するような結果が得られ ません。なぜなら一般の MBR は基本領域しか起動できないからです。この検査 は、-b オプションか、BOOT 変数を設定して、明示的にブートパーティションを 指定することによって、回避することができます。

-        Checksum error

  マップファイルのディスクリプターテーブルに無効なチェックサムがあります。 直ちに、マップファイルを更新してください。

-        Device 0x<数値>: Configured as inaccessible.

  BIOS からアクセスできないデバイスを指している DISK セクションのエントリ があります。起動時に LILO がアクセスしようとするすべてのファイルが正しい デバイス上に存在するか、注意深くチェックするべきです。

-        Device 0x<数値>: Got bad geometry <セクター>/<ヘッド>/<シリンダー>

  SCSI コントローラのデバイスドライバがジオメトリの探知をサポートしていま せん。ジオメトリを明示的に指定する必要があります（ディスクジオメトリ セクションを参照してください）。

-        Device 0x<数値>: Invalid partition table, entry <数値>

  指定されたパーティションの最初のセクターの３次元アドレスとリニアアドレス が一致しません。これは大抵、パーティションの作成の際、パーティションを トラック毎に割り当てないようなプログラムを使用した後で、そのディスク上で、 PC/MS-DOS や OS/2 を使うと起こります。LILO はこの問題の修復を試みること ができます。 一般のイメージ毎のオプション セクションを参照してください。

-        Device 0x<数値>: Partition type 0x<数値> does not seem suitable for
         a LILO boot sector

  LILO のブートセクターが置かれるべき場所が適当でないようです。（ディスク構成セクションも参照してください） 現実の利用を反映したパーティション タイプに調整するか、別のパーティションにブートセクターを置く必要があり ます。もし IGNORE-TABLE オプションが指定されていた場合、この整合性検査は 警告を発するだけで、LILO の動作は継続します。

-        <デバイス名> is not a valid partition device

  指定されたデバイスは、そもそもデバイスでないか、ディスク全体を指している か、そのエントリに指定されたものとは違うディスクのパーティションを指して いるかのいずれかです。

-        <デバイス名> is not a whole disk device

  ディスク全体のジオメトリ (例えば /dev/hda, /dev/sdb, など)だけが、DISK セクションに再定義されています。

-        DISKTAB and DISK are mutually exclusive

  ディスクタブファイルとディスクジオメトリ定義は、同時に同一の設定ファイル で使うことはできません。/etc/disktab は下位互換性のためにデフォルトで有効 になっているので、たまたま使用してしまったのでしょう。DISK セクションに 変換定義を正しく記述したら、/etc/disktab は削除したほうがいいでしょう。

-        Duplicate entry in partition table

  あるパーティションテーブルエントリが重複して定義されています。fdisk を 使って、パーティションテーブルを修正すべきです。

-        Duplicate geometry definition for <デバイス名>

  設定ファイル内で、同じデバイスに対して、重複してディスク、またはパーティ ションのジオメトリの定義がされています。ディスク全体に対して、決してパー ティションセクションを記述してはいけないことに注意してください。その先頭 セクターは、常にディスクの最初のセクターだからです。

-        First sector of <デバイス> doesn't have a valid boot signature

  指定されたデバイスの先頭セクターは有効なブートセクターではないようです。 指定デバイス名を間違えていると思われます。 異なったパーティションプログラムは、異なった順序でパーティションを表示 しますから、あなたが先頭のパーティションだと思っているパーティションは、 /dev/hda1 などではない可能性があります。パーティションの中身を確認する 最もいい方法は、そのパーティションをマウントしてみることです。

-        geo_comp_addr: Cylinder <数値> beyond end of media (<数値>)

  ファイルブロックが最後のシリンダーを越えた位置にあるようです。それは ディスクジオメトリの記述に誤りがあるか（ ディスクジオメトリセクション を参照してください）、ファイルシステムが壊れていることを意味します。

-        geo_comp_addr: Cylinder number is too big (<数値> > 1023)

  あるファイルのブロックが、ハードディスクの 1024 シリンダーを超えた位置 にあります。BIOS がシリンダー数の範囲を、0 から 1023 の範囲に制限している ので、LILO はそのようなファイルにアクセスできせまん。それらのファイルを 別の場所、もしできれば、全体がディスクの先頭から 1024 以内にあるような パーティションに移動してみてください。

-        Hole found in map file (<場所>)

  マップインストーラがディスクの構成において混乱しています。このエラーに ついては、作者に連絡してください。

-        <項目> doesn't have a valid LILO signature

  指定された項目は存在はしていますが、LILO の一部ではありません。

-        <項目> has an invalid stage code (<数値>)

  指定された項目は、たぶん壊れています。LILO を再作成してください。

-        <項目> is version <数値>. Expecting version <数値>.

  指定されたものが、古過ぎるか、新らし過ぎます。LILO の全ての構成物（マップ インストーラ、ブートローダ、及びチェーンローダ）が同じ配布物のものか確認 してください。 ファイルのバージョン番号は、ファイルのフォーマットが変わったときにしか 変わらないので、期待したバージョンと、LILO のパッケージのバージョンとが 異なっている場合があります。

-        Kernel <名称> is too big

  カーネルイメージ（セットアップコード以外の）が、512 kbytes（LARGE_EDBA でビルドされていた場合、448 kbytes）より大きいです。LILO はそのような カーネルをロードする時、自分自身を上書きします。この制限は、0x1000 以下 にロードされる古いカーネル（たとえば``Image''や``zImage''）の場合のみ 適用されます。``bzImage''でカーネルをビルドしてください。もしそれをしたく ない場合は、使っていないドライバを削除して、カーネルをコンパイルしてくだ さい。またカーネルが壊れていたり、たとえば完全なブートフロッピーをハード ディスクにコピーしたためにカーネルがごみを含んでいるような場合にもこの エラーが起こることがあります。

-        LOCK and FALLBACK are mutually exclusive

  LOCK と FALLBACK は共にデフォルトコマンドラインを変更するので、当然共に 用いることはできません。

-        Map <パス> is not a regular file.

  このエラーが出るのは、たぶん -m /dev/null などと指定して、マップファイル の書き込みを省略したためです。これを行うには、-t オプションを指定するべき です。

-        Must specify SECTORS and HEADS together

  ``変な''セクター数を持ったディスクは、同時に``変な''ヘッド数を持っている ものです。それゆえ、両方指定するか、いずれも指定しないかしか許されません。

-        No geometry variables allowed if INACCESSIBLE

  あるデバイスが、INACCESSIBLE（ジオメトリの指定 セクションを参照して ください）として指定されているのに、DISK セクションにジオメトリ関連の変数 がありません。

-        No image <イメージ> is defined

  -R オプションや FALLBACK 変数に指定されたコマンドラインに有効なイメージ の名称がありません。マップファイル内に含まれていない任意のイメージは、 有効なものと見なされないので、注意してください。

-        Partition entry not found

  他のオペレーティングシステムが起動されるべきパーティションが、指定された パーティションテーブルにありません。これは誤ったパーティションテーブルを 指定したか、論理パーティションから起動しようとしています。後者は通常は、 動作しません。このチェックを避けるには、パーティションテーブルの指定を 省略してください（つまり TABLE 変数を省略する）。

-        Single-key clash: "<名称>" vs. "<名称>"

  指定したイメージのラベルとエイリアスが、それらのいずれかが１文字で、 SINGLE-KEY オプションが指定されていて、かつ他にその文字で始まるものが 存在しているため、衝突しています。

-        Sorry, don't know how to handle device <数値>

  LILO がディスクジオメトリを容易に決定できないようなデバイス上のファイル を使っています。そのようなデバイスは明示的に指定されなければいけません。 ディスクジオメトリ セクションを参照 してください。

-        This LILO is compiled READONLY and doesn't support ...

  LILO が起動時のディスクへの書き込みを許されていない場合（ビルド時の設定 セクションを参照）、 LOCK や FALLBACK のようなオプションは利用でき ません。

-        This LILO is compiled without REWRITE_TABLE and doesn't support ...

  LILO が起動時にパーティションテーブルの書き換えを許されていない場合は （ パーティションテーブルの書き換えセクションを参照）、ACTIVATE や SET（CHANGE セクション内）オプションは利用できません。READONLY を有効に して、LILO をコンパイルした時もこのエラーが表示されることがあります。

-        Timestamp in boot sector of <デバイス> differs from date of <ファイル>

  ブートセクターのバックアップが、現在のブートセクターのバックアップでは ないようです。もしブートセクターが絶対正しいと確信が持てるなら、-u の 変わりに、-U を使うことで、このチェックを回避することができます。

-        Trying to map files from unnamed device 0x<数値> (NFS ?)

  これはたぶん、下記のものと同じ問題で、ただルートファイルシステムが、NFS 上にあるという違いだけでしょう。

-        Trying to map files from your RAM disk. Please check -r option or ROOT
        environment variable.

  あなたか、インストールスクリプトが、RAM ディスク上のファイルをアクセス しなければならないような方法で、LILO を作成しようとしています。もし違う ルートディレクトリに対して LILO を作成するなら、ROOT 環境変数は、有効な ルートデバイスのマウントポイントが設定されていなければなりません。 マップの作成、または更新 と 初期インストール の セクションも参照してください。

-        VGA mode presetting is not supported by your kernel.

  カーネルソースが非常に古い（93年？）ようです。VGA オプションを削除すれば 動作するかもしれません。 write <項目>: <エラー理由> ディスクが一杯か、書き込み不可でマウントされています。

#### 警告

``Warning''というラベルの付いたメッセージは、NOWARN オプションを用いることで 表示しないようにすることができます。

-        FIGETBSZ <ファイル名>: <エラー理由>

  マップインストーラは、ファイルシステムのブロックサイズを決定することが できません。2 セクター（1kB）だと仮定します。

-        Ignoring entry '<変数名>'

  指定された変数と同じものがコマンドラインで指定されましたので、設定 ファイルのエントリは無視されます。

-        Setting DELAY to 20 (2 seconds)

  ローカルのディスプレイから実行されないシステム上で、もし誤ったカーネルや 他のオペレーティングシステムが起動されると、非常に面倒なことになるので、 もし SERIAL 変数が設定されいる場合は、DELAY を、2 秒に設定します。

-        (temp) <項目>: <エラー理由>

  表示された理由により、一時ファイルの削除に失敗しました。

-        Warning: BIOS drive 0x<数値> may not be accessible

  殆どのバージョンの BIOS は、2 つのフロッピーと 2 つのハードディスクしか サポートしないので、増設ディスクに置いたファイルはアクセスできません。 この警告は、いくつかのカーネル、いや全システムさえ起動不能になるかもしれ ないことを示しています。

-        Warning: COMPACT may conflict with LINEAR on some systems

  その他の問題セクションのこの問題 についての説明を参照してください。

-        Warning: <設定ファイル> should be owned by root

  一般ユーザによるシステムの破壊を防ぐために、設定ファイルはルートオナー にして、他のすべてのユーザが書き込めないようにすべきです。

-        Warning: <設定ファイル> should be readable only for root if using
        PASSWORD

  PASSWORD オプションを利用しているときは、一般ユーザには設定ファイルの 読み込み権限も与えるべきではありません。なぜならパスワードは暗号化され ないからです。

-        Warning: <設定ファイル> should be writable only for root

  Warning: <設定ファイル> should be owned by root を参照してください。

-        Warning: device 0x<数値> exceeds 1024 cylinder limit

  ディスク、またはパーティションが、BIOS による 1024 シリンダーの制限を 越えています。これは現在のインストールの実行や後のインストールの実行の 致命的なエラーの原因になります。詳細は、`geo_comp_addr: Cylinder number is too big (<数値> > 1023)` を参照してください。

-        Warning: <デバイス> is not on the first disk

  指定されたパーティションが第 1 ディスクにないようです。特別なブート マネージャを使わない限り、LILO のブートセクターは、第 1 ディスクからしか 起動することはできません。

-        WARNING: The system is unbootable !

  以前のインストール手順の一つが失敗しました。この警告は通常は、この問題 を説明する致命的エラーが後に続きます。

### ブートローダメッセージ

ブートローダは、3 つのタイプのメッセージを生成します−それがロードされる間の 進行状態とエラーメッセージ、ディスクアクセスエラーを示すメッセージ、そして 誤ったコマンドラインに対するメッセージです。最後のタイプのメッセージは、通常 自己弁明なので、他の２つの種類しか説明しません。

#### LILO 開始メッセージ

LILO は自分自身をロードする時に、``LILO''という単語を表示します。それぞれの 文字は、特定の動作が遂行される前か後に表示されます。もし LILO がある時点で、 失敗をすると、文字はそれ以上表示されないので、問題の特定に役立ちます。これに ついてのより詳細な内容は、テクニカル概要で説明されています。

もし一時的なディスクの問題が起きた場合、最初の``L''の後に、16 進数の数値が 表示されることあることに注意してください。そこで LILO が止まらない限り、 エラーコードが無限に表示され続けますが、この 16 進数は決して深刻な問題を 示している訳ではありません。

-       (<何もなし>)

  LILO のどの部分もロードされていません。LILO がインストール されていないか、ブートセクターのあるパーティションがアクティブでないと 考えられます。

-        L <エラーコード> ...

  第 1 ステージブートローダがロードされ、実行開始され ましたが、第 2 ステージブートローダをロードすることができていません。2 桁 の数値のエラーコードは問題の種類を示しています。(ディスクエラーコード セクションを参照してください) この状態は通常、メディアの故障か、ジオメトリ の不一致 (例えば誤ったディスクパラメータなど。 ディスクジオメトリセク ションを参照してください。) です。

-        LI

  第 1 ステージブートローダは、第 2 ステージブートローダをロードすること ができましたが、それを実行するのに失敗しました。この原因は、ジオメトリの 不一致か、/boot/boot.b を動かしたにも関わらず、マップインストーラを実行し なかったかのいずれかです。

-        LIL

  第 2 ステージブートローダが実行開始されましたが、マップファイルから、 ディスクリプターテーブルをロードできませんでした。この原因は、通常メディア の故障か、ジオメトリの不一致です。

-        LIL?

  第 2 ステージブートローダが、誤った場所にロードされました。この原因 は、通常、僅かなジオメトリの不一致か、/boot/boot.b を動かしたにも関わらず、 マップインストーラを実行しなかったかのいずれかでしょう。

-        LIL-

  ディスクリプターテーブルが壊れています。この原因は、ジオメトリの 不一致か、/boot/map を動かしたにも関わらず、マップインストーラを実行しな かったかのいずれかです。

-        LILO

  LILO のすべての部品が正常にロードされました。

#### ディスクエラーコード

LILO がブートイメージをロードしようとした時に、BIOS がエラーを知らせてきた 場合、それぞれのエラーコードが表示されます。以下に既知の BIOS エラーコード を示します。

-        0x00   "Internal error".  (内部エラー)

  このコードは、LILO ブートローダのセクターリード ルーチンが内部の矛盾を見つけたときに生成します。これはファイルが破壊 されたときなどによく起こります。マップファイルを再作成してください。 他の原因としては、LINEAR オプションを使用して、1024 シリンダー以降に アクセスしようとした時です。詳細と問題の解決方法は、BIOS 制限の セクションを参照してください。

-        0x01   "Illegal command".  (誤ったコマンド)

  このエラーは起こらないはずですが、もし起きた のなら、たぶん BIOS でサポートしていないディスクにアクセスしようとした のでしょう。警告 セクションの `Warning: BIOS drive 0x<数値> may not be accessible` を参照してください。

-        0x02   "Address mark not found".  (アドレスマークが見つかりません)

  このエラーは通常はメディアの 問題を示しています。何度か起動を繰り返してみてください。

-        0x03   "Write-protected disk".  (ディスクが書き込み保護されています)

  これは書き込み操作の時に のみ起こるでしょう。

-        0x04   "Sector not found".  (セクターが見つかりません)

  これは大抵ジオメトリの不一致を示して います。生で書かれたディスクイメージを起動する場合、あなたが使っている ディスクと同じジオメトリでそのイメージが作成されているか確認してください。 もし SCSI ディスクや大容量の IDE ディスクから起動する場合は、カーネルから LILO が正しいジオメトリデータを得ているか、本当のディスクジオメトリに対応 したジオメトリ定義かどうかを検査すべきです。（ディスクジオメトリ の セクションを参照してください）COMPACT オプションの削除も何かの解決になる かもしれません。また LBA32 または LINEAR の追加も同じです。

-        0x06   "Change line active".  (ラインアクティブ変更)

  これは一時的なエラーのはずです。もう一度 起動してみてください。

-        0x07   "Invalid initialization".  (初期化失敗)

  BIOS が正しくディスクコントローラを初期化できません でした。BIOS のセットアップパラメータを調整する必要があります。ウォーム ブート（暖まっている状態での起動）も何かの解決になるかもしれません。

-        0x08   "DMA overrun".  (DMA オーバーラン)

  これは起こりえません。再起動してください。

-        0x09   "DMA attempt across 64k boundary".
                 (DMA が 64k 境界と跨いでいます)

  これも起こりえないはずですが、 ディスクジオメトリの不一致が起きているかもしれません。COMPACT オプション を省いてみてください。ディスクジオメトリを自分で指定する必要があるかも しれません。

-        0x0C   "Invalid media".  (メディア異常)

  これも起こりえないはずですが、メディアに異常が あるかもしれません。再起動をしてみてください。

-        0x10   "CRC error".  (CRC エラー)

  メディアの異常が見つかりました。何度か起動を試みて もう一度マップインストーラを実行（マップファイルを他の物理的な場所に置くか 悪い部分を正しいデータで上書きするため）し、悪いセクターやトラックはマップ されないようにしてください。すべてがうまくいかないようなら、メディアの交換 をしてください。

-        0x11   "ECC correction successful".  (ECC 訂正成功)

  読み込みエラーが起きましたが、訂正されました。 LILO はこのことを認めず、起動処理を中止します。もう一度起動を試みれば、 成功するはずです。

-        0x20   "Controller error".  (コントローラエラー)

  これは起こりえないことです。

-        0x40   "Seek failure".  (シーク失敗)

  これはメディアの問題です。再起動してみてください。

-        0x80   "Disk timeout".  (ディスクタイムアウト)

  ディスクまたはドライブが準備できていま せん。メディアの不良か、ディスクが回っていません。フロッピーから起動しよう としているなら、ドライブの蓋を閉めてないだけかもしれません。そうでないなら 起動し直せば、解決するかもしれません。

-        0xBB   "BIOS error".  (BIOS エラー)

  これは起こりえないはずです。もう一度起動をしてみて ください。もし問題が治まらないなら、COMPACT オプションを削除するか、LINEAR オプションや LBA32 オプションを追加／削除をすれば、解決するかもしれません。

書き込み操作の途中で、エラーが起きた場合、エラーコード（2 桁の 16 進数）の前に ``W''が付きます。書き込みエラーは、起動プロセスに影響はないのですが、大抵は、 LILO が誤った場所に書き込もうとしていると考えられるので、深刻な問題を引き起こ す可能性があります。もしシステム上で原因不明の書き込みエラーが起こるようなら、 LILO を読み込み専用に設定するのもいいかもしれません。（ビルド時の設定セク ションを参照してください）

一般に無効なジオメトリや最新の BIOS を使用しないで 2 つ以上のディスクを使用 しようとすると、紛らわしいエラーコードを吐くことがあります。/sbin/lilo が何も 警告を出していない時は、注意深くチェックしてください。それから LINEAR または LBA32 オプションを使ってください。（ グローバルオプションセクションを参照 してください。

### その他の問題

このセクションは実際に起きたあまり一般的でない問題について纏めています。LILO を他のオペレーティングシステムと共に利用している場合の一般的な問題については、 他のオペレーティングシステムのインストールセクションも参照してください。 問題のいくつかは、まだ明瞭になっていないので、調査中です。

- LILO のファイルを消しても、LILO が無くならない場合、Linux のパーティション その他をフォーマットしてください。あなたは MBR に LILO をインストールした のに、そのファイルを消す前に LILO をアンインストールするのを忘れたので しょう。今あなたができることを得るには、LILO のアンインストールのセク ションを参照してください。

- 未だ理由が分からないのですが、BIOS 設定の``Hard Disk Type 47 RAM area''が ``DOS 1k''ではなく、``0:300''に設定されいる場合、AMI BIOS であるシステム で不都合があります。

- いくつかのディスクコントローラ BIOS は、Linux から見た（つまり BIOS を 通じてではない）デバイスのジオメトリの見え方とは、互換性のないディスクの ジオメトリ／アドレス変換を行います。特に大容量 IDE ディスクやいくつかの PCI SCSI コントローラでこの問題が見られます。このような場合、変換された ジオメトリを DISK セクションに指定するか、LINEAR オプションを使用して、 セクターアドレス変換を行うようにする必要があります。起動時にフロッピーを 通常は使わないセットアップ時などは、LINEAR オプションを使う方が、誤った 数値を指定する危険がないので、好ましいはずです。

- OS/2 は、LILO を MBR にインストールして、第 1 ブートセレクターとして利用 すると、論理領域から起動できると言われています。この場合、OS/2 のブート マネージャは、アクティブな基本領域に置かれ、LILO がブートマネージャを起動 します。代わりに LILO を拡張領域に置くと、この筋書きでは、OS/2 の FDISK を破壊すると言われています。

  ブートマネージャから LILO を起動する（つまりブートマネージャが第 1 ブート セレクター）ことや（ブートマネージャを使わないで）基本領域から OS/2 を直に 起動することがも、一般的には可能です。 他のオペレーティングシステムのインストールのセクションも参照して ください。

- Windows NT は、LILO を MBR に置き、Windows NT のブートローダは DOS 領域に 置くことで、LILO と共存して起動ができると報告されています。しかし NT の ディスクマネージャは、パーティションテーブルを編集しようとする時に、MBR の LILO について何らか警告を発するようです。

- いくつかの PC UNIX システム（SCO と Unixware はこの問題があると報告されて います）では、そのパーティションがアクティブである必要があります。これを 可能にするには、 パーティションテーブルの書き換えセクションを参照してくだ さい。

- Future Domain 社の SCSI アダプター TMC-1680 の BIOS バージョン 3.4 と 3.5 は誤った順序で BIOS デバイス番号を割り当てます。たとえば、ディスクが 2 つ のシステムでは、/dev/sda が 0x81 となり、/dev/sdb が 0x80 になります。 これについては、以下のように DISK セクションを指定することで回避できます。 disk=/dev/sda bios=0x81 disk=/dev/sdb bios=0x80 ただこの指定は、ディスクが 2 つの場合のみ有効であることに注意してください。 ディスクが 3 つのシステムでは、/dev/sdc が 0x80 になったりします。また、 単一ディスクの場合は、この問題は起きません（そして``修正''もこの問題を解決 してくれるでしょう）

- いくつかの BIOS は異常なパーティションテーブル（たとえばアクティブ領域が ない）をもったディスクを認めず、そこからのブートを拒否します。この問題は 第 2 ハードディスクの場合も同じですが、この場合は、特定の方法（たとえば コールドブートの直後など）で起動した場合にしか起こらないでしょう。

- いくつかのシステムでは、LINEAR と COMPACT、または、LBA32 と COMPACT を 一緒に指定すると起動に失敗します。正確な再現状況はまだ分かっていません。

- マルチプロセッサーシステムの起動で、カーネルがクラッシュした場合、LILO が BIOS によって設定されたデータ構造を上書きすることがあります。このような 場合は、LARGE_EBDA オプションを使用してください。

## 日本語訳について

### 日本語訳について

翻訳: | 高安 延匡 |
| Nobumasa Takayasu | `nobumasa@fhe.freeserve.ne.jp`
|  | http://www.tkcity.net/~nobusan/
校正: | 佐野さん
| Taketoshi Sano | `kgh12351@nifty.ne.jp`
| 山森さん
| Hiroyuki YAMAMORI | `h-yamamo@db3.so-net.ne.jp`
| 四亭さん
| 4T | `isao@m05.htmnet.ne.jp`
| 川崎さん
| 'Takahiko Kawasaki' | `KawasakiT@soj.sega.co.jp`
| 川嶋さん
| Tsutomu Kawashima | `kawawa@mail.interq.or.jp`
| 堀江さん
| Toshimi Horie | `je2uff@mxa.mesh.ne.jp`
| 武井さん
| TAKEI Nobumitsu | `takei@webmasters.gr.jp`
| 千旦さん
| Yuji Senda | `ysenda@pop01.odn.ne.jp`
| 中野さん
| NAKANO Takeo | `nakano@apm.seikei.ac.jp`
| 境さん
| Shintarou Sakai | `s_sakai@mxn.mesh.ne.jp`
| 岡本さん
|  | `kokamoto@itg.hitachi.co.jp`