次のページ 前のページ 目次へ

5. Lilo

lilo には QuickInst と呼ばれる小さなスクリプトが付いている。 lilo のソースコードをターゲットシステムのソースディレクトリに (解凍・)展開し、ROOT=/mnt/target ./QuickInst とコマンドを打ち込ん で、このスクリプトを実行してほしい。スクリプトは、lilo をどういうふ うにインストールしたいのかと尋ねてくるだろう。

気を付けてほしいのは、ROOT 変数をターゲットシステムのパーティションに 設定しているので、ファイル名はそこを基準に伝えるということである。それゆえ、 どのカーネルをデフォルトでブートしたいのかと聞かれたら、/mnt/target/boot/ bzImage ではなく、/boot/bzImage と答えてほしい。わたしは、その スクリプトの中の小さなバグを見つけた。そのため、以下のように表示された。


    ./QuickInst: /boot/bzImage: no such file 

しかし、これを無視しても、何の問題もない。

QuickInst を使ってどこにブートセクタを置くべきだろうか?リブートの 際には、ソースシステムかターゲットシステム、あるいはマシン上の他のシステムか どれを起動するのかを選択できるようにしたい。それに、現在構築中の lilo が新しいシステムのカーネルを起動するところを実際に見てみたい。 このふたつを同時に実現するにはどうすればいいのか?少し脇道にそれて、デュアル ブートの Linux システムにおいて lilo が DOS をブートする方法を見てみ よう。そうしたシステムでの lilo.conf ファイルはおそらく下記のように なっているだろう。

 
prompt  
timeout = 50
default = linux

image = /boot/bzImage 
        label  = linux
        root   = /dev/hda1
        read-only

other = /dev/hda2
        label = dos

マシンが上記のように設定されているなら、bios によってマスターブートレコード が読み込まれてロードされ、次に(ロードされたプログラムが) lilo の ブートローダをロードし、それがプロンプトを表示する。もしそのプロンプト画面で dos とタイプしたなら、lilohda2 からブートセク タをロードして、それが DOS をロードする。

これからしようとしていることは、hda2 のブートセクタがそれとは異なる lilo のブートセクタ(つまり QuickInst がこれからインストール しようとしているセクタ)になるということを除けば、上記と全く同じことである。 ディストリビューションに付属の lilo が、構築したばかりの lilo をロードし、その lilo が、先だって構築したカーネルを ロードするということになる。再起動時には、lilo プロンプトをふたつ 見るわけである。

要点だけを言うと、QuickInst がブートセクタをどこに置くか聞いてきたら、 ターゲットシステム上のファイルシステムがあるデバイス名を答えるとよい。たとえ ば、/dev/hda2 などである。

そして、ソースシステム上の lilo.conf を修正する。そうすると、以下の ような行が加わる。

 
other = /dev/hda2
        label = target

ここで lilo と打てば、これで初めて、ターゲットシステムが起動可能に なったはずだ。


次のページ 前のページ 目次へ