LILOの導入と基礎

2000/11/05
目次
  1. LILOのインストール
  2. 設定ファイルの全体構造
  3. デバイス
  4. グローバルセクション
  5. イメージセクション

LILOのインストール

 LILOは通常Linuxl起動には必須なので、インストーラで必ずLILOを導入するフェーズがある。ここでLILOがあまり気にしないうちにインストールされてしまうので、LILOのインストールについてはよく知らない人が多いかもしれない。LILOは後でも各種設定を変更などして、インストールし直すことができる。

 それを行うコマンドが/sbin/liloコマンドだ。通称マップインストーラとか、マップクリエータとか呼ばれるコマンドである。これは各種設定を記録するマップファイルの作成が、このコマンドの最も重要な作業の一つだからだ。Linuxのインストーラでも実際はこのコマンドによってLILOがインストールされている。ここではこのコマンドをマップインストーラと呼ぶ。設定ファイルの記述に従って、マップファイルなどを作成しLILOをインストールするのが、マップインストーラの基本的な動作である。

 マップインストーラはman liloで確認して頂くと分かるが、非常に沢山のオプションパラメータを持っている。ただし多くは後述する設定ファイル/etc/lilo.confの内容と重複し、それを変更するためのものなので、それ程重要ではない。設定ファイルとは関係ない、テスト実行のための-tオプション、実行内容を表示する-vオプション、設定ファイルをデフォルトの/etc/lilo.confとは違うものを読むようにする-Cオプションなど以外は殆ど必要ない。興味のある人はオンラインマニュアルで確認してほしい。

 基本的に設定したい内容はすべて設定ファイルに記述し、どうしても一時的にちょっと変更したいという場合に、マップインストーラのオプションを使うといった運用になると思う。

 結局LILOのインストール方法としては設定ファイルに記述をして、マップインストーラを実行するだけだ。オプションを指定する必要も殆どない。
 
 root> /sbin/lilo

 因みにこのコマンドはroot権限がないと実行できない。また通常は/sbinの下にあるので、パスが通ってない場合があると思うから気をつけてほしい。基本的には上記のようにフルパスで実行である。

 今後、LILOの説明は結局、殆ど設定ファイル/etc/lilo.confの書き方の説明になっていくことになる。

 因みに、初心者がよく勘違いするのが/etc/lilo.confを書き換えればブートローダたるLILOに即反映されると思っていることだ。このファイルはあくまでマップインストーラの実行を制御するものであり、ブートローダの動作を動的に制御しない。/etc/lilo.confを書き換えた場合、必ずマップインストーラを実行してほしい。

 もっともこの誤解はUNIXのパワーユーザにも多いかもしれない。UNIXのコンフィギュレーションファイルはファイルの書き換えだけで有効になるものが非常に多いからである。/etc/lilo.confは違うということを思えておいてほしい。

 


設定ファイルの全体構造

 設定ファイルは何度か述べているように、デフォルトでは/etc/lilo.conf というファイルだ。単なるプレーンなテキストファイルだから、viなどの好みのエディタで編集できる。マップインストーラのオプションで-Cオプションを使うと/etc/lilo.conf以外のファイルを設定ファイルとして使うこともできる。あまりそうする必要なないと思うが。

 まず文法としては

 オプション = 値

 という形が基本になる。オプションだけの記述で有効な(つまり「=」以降がいらない)オプションもある。

 構造としては大きくグローバルセクションイメージセクションに分かれる。イメージセクションが切り替えてブートする各カーネルやOSの記述になり、グローバルセクションは全カーネルやOSに共通することや、全体的な設定を行うセクションである。設定ファイルの最初のほうにグローバルセクションを記述し、その後にイメージセクションを随時追加するという書き方になる。

 またイメージセクションはLinuxカーネルを指定する場合、「IMAGE」というオプションで始まり、その他のOSの場合、「OTHER」というオプションで始まる。値としてはカーネルファイル名デバイス名(後述)になる。以下に簡単な例を示す。各イメージセクションはその後をいくつかのサブオプションが続く。

[設定ファイル/etc/lilo.confの構造]
boot = /dev/hda
prompt
timeout = 100
lba32

image = /boot/vmlinuz
  label = linux
  root = /dev/hda4

other = /dev/hda1
  label = win95
  table = /dev/hda

 青色の部分が、グローバルセクション赤色の部分がLinuxカーネルを指定するイメージセクションの部分が他のOSを指定するイメージセクションである。イメージセクションは16まで記述できる。つまり16種類のOSやカーネルを起動できることになる。

 


デバイス名

 これは別にLILOに限らず、Linux全体に関わる決まりだが、これを知らないとLILOの設定ファイルは到底記述できないのでここで説明しておこう。

 ハードディスクドライブやフロッピーディスクドライブなどのデバイスは/devで始まる通称デバイススペシャルファイルというもので指定する。以下にLILOに関係の深いデバイスの表を示す。

[デバイススペシャルファイル名]

DeviceSpecialFile デバイス
/dev/fd0 第1フロッピーディスク
/dev/fd1 第2フロッピーディスク
/dev/hda プライマリマスターIDEデバイス
/dev/hdb プライマリスレーブIDEデバイス
/dev/hdc セカンダリマスターIDEデバイス
/dev/hdd セカンダリスレーブIDEデバイス
/dev/sda 第1SCSIデバイス
/dev/sdb 第2SCSIデバイス
/dev/sdc 第3SCSIデバイス

 Ultra-66/100/133カードに接続したIDEハードディスクなどはBIOSからはSCSIデバイスの一種として扱われるが、LinuxではちゃんとIDEデバイスとして、/dev/hde以降が割り当てられる。因みにデバイスがハードディスクドライブなのか、CD-ROMドライブなのかなどのデバイスの種類はデバイススペシャルファイル名からは分からない。まあLILOの場合、フロッピーとハードディスク以外は関係ないことだが。

 またハードディスクの場合、後ろに数字をつけて、パーティションを表現することになっている。以下にその例を示す。/dev/hdaでの例だが、他のハードディスクでも全く同じである。

[デバイススペシャルファイル名]

DeviceSpecialFile パーティション
/dev/hda1 第1基本領域
/dev/hda2 第2基本領域
/dev/hda3 第3基本領域
/dev/hda4 第4基本領域
/dev/hda5 第1論理領域
/dev/hda6 第2論理領域
/dev/hda7 第3論理領域

 設定ファイルでは様々な場所で、このデバイスを指定するから、これはよく覚えておいてほしい。

 


グローバルセクション

 ここでは基礎の説明ということで、勿論全てのグローバルオプションを説明する気はない。また基礎的でもman lilo.confでも十分分かるものも説明はしない。man lilo.confの説明では分かりにくく、極めて重要で、基礎的なオプションの説明をする。

 グローバルセクションは前述したように、LILO全体に関わること、または各イメージの設定のデフォルト値になるものが指定できる。後者はつまり各イメージで共通に指定するオプションを記述しておくと、各イメージセクションで記述する必要がなくなるということだ。勿論オプションによってはグローバルセクションでしか使えないもの、イメージセクションでしか使えないもの、さらにはイメージセクションでもLinuxカーネル指定の場合しか使えないものなど様々である。間違った場所に指定するれば、マップインストーラ実行時にエラーになるので気が付くとは思う。

 まずはBOOT」オプションだ。これはLILOの1st Boot Loaderのインストール先の設定になる。値にデバイスを指定する。LILOのスタート地点を決めるオプションだから極めて重要である。よって大抵は設定ファイルの先頭に記述されている。

 フロッピーにインストールしたい場合は「/dev/fd0」マスターブートレコードにインストールしたい場合はそのハードディスク自身である、「/dev/hda」などと指定する。ルートパーティションにインストールする場合は「/dev/hda6」などとそのパーティションのデバイス名を指定する。

 このうちのどこに指定すべきかはあなたのブートコンセプトの問題になるので、ここで簡単に説明することはできない。マルチブートのページ全体を読みこなして決めていくものである。ただとりあえずフロッピーにしておくと無難であるということだけはアドバイスしておく。

 次にLBA32」オプションだ。LILOのバージョン21-3以降からのサポートなので古いバージョンLILOでは使えない。もし8GB以上のハードディスクを使う場合は指定した方が無難である。またブートファイルを8GB以降に置く場合は必須になる。は必要ない。「lba32」とグローバルセクションに記述するだけ有効になる。またこのオプションは「Linear」オプションと「compac」オプションと排他なので、それらと同時に指定してはいけない。「lba32」オプションが指定するなら、他の2つは指定する必要はない。

 尚、バージョン22以降は「LBA32」オプションが無くても8GBを扱うことができる。つまりデフォルトで「LBA32」オプションが有効になっているということである。

 後はいくつか使い勝手などに有効なオプションが指定できるが、これらは「LILOの使い勝手の向上」でも説明しているので参照してほしい。

 


イメージセクション

 イメージセクションではman lilo.confの説明では分かりにくく、かつ基礎的で極めて重要なものはないと思う。やはり、使い勝手向上のためのオプションがあるがこれについては「LILOの使い勝手の向上」を参照してほしい。

 


目次へ