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
とタイプしたなら、lilo
は hda2
からブートセク
タをロードして、それが DOS をロードする。
これからしようとしていることは、hda2
のブートセクタがそれとは異なる
lilo
のブートセクタ(つまり QuickInst
がこれからインストール
しようとしているセクタ)になるということを除けば、上記と全く同じことである。
ディストリビューションに付属の lilo
が、構築したばかりの
lilo
をロードし、その lilo
が、先だって構築したカーネルを
ロードするということになる。再起動時には、lilo
プロンプトをふたつ
見るわけである。
要点だけを言うと、QuickInst
がブートセクタをどこに置くか聞いてきたら、
ターゲットシステム上のファイルシステムがあるデバイス名を答えるとよい。たとえ
ば、/dev/hda2
などである。
そして、ソースシステム上の lilo.conf
を修正する。そうすると、以下の
ような行が加わる。
other = /dev/hda2 label = target
ここで lilo
と打てば、これで初めて、ターゲットシステムが起動可能に
なったはずだ。