Lilo を使って、あるディスクからカーネルイメージのマップを作成し、そして
そのカーネルイメージを別のディスクから取得するよう BIOS に指示する、とい
うことが可能です。例えば私がよくやることは Linux を hdc
に接続した
ディスク(IDE のセカンダリーコントローラーのマスター)にインストールして、
そのディスクを別なコンピュータのプライマリー IDE コントローラに接続し、
単独で動作するシステムとして起動させることです。インストール用フロッピー
を小さなパーティションにコピーしたので、他の作業をするために自分のシステ
ムを使いながら、chroot を仮想コンソールで実行してhdc
への
インストール作業を実行できます。
私が Lilo をインストールするために使用している lilo.conf ファイルはこのようになっています。
# このファイルを使うには /dev/hdc が存在するシステム上である必要があります。 boot = /dev/hdc # hdc の MBR を上書き disk = /dev/hdc # hdc がどのように見えるかを指定 bios = 0x80 # BIOS はこのドライブを 1 番目のドライブとして扱う delay = 0 vga = 0 image = /boot/vmlinux # これ(カーネルイメージ)は /dev/hdc1 上にありますが root = /dev/hda1 # ブート時に hda1 が root デバイスになります label = Linux read-only
この設定ファイルは /dev/hdc1 の Lilo コマンドで読みこむ必要があ
ります。Lilo は、ブートセクタ (/dev/hdc
) に書き込まれる Lilo の
マップ /boot
内のファイルを参照しなければなりません。それらのファ
イルはこのディスクがスタンドアローンシステムとしてブートされた時には hda
にあるものとしてアクセスされます。
私はこの設定ファイルを /mnt/etc/lilo.conf.hdc
という名前にして
います。/mnt
は hdc がインストール中にマウントされている場所で
す。Lilo をインストールする場合には ``cd /mnt; chroot . sbin/lilo -C
/etc/lilo.conf.hdc
'' を実行します。これが魔法のように見えるのであれ
ば、chroot の man page を参照してください。
lilo.conf
の ``bios=
'' パラメーターは Lilo に、BIOS
がデバイスとして何を使うのかを指定します。BIOS コールはフロッピーディス
クとハードディスクを番号で識別します。0x00 と 0x01 はフロッピードライブ
を、0x80 以降の番号(古い BIOS では2つのディスクのみアクセス可能)はハー
ドディスクとして認識します。つまり先のサンプルの ``bios =
0x80
'' は、``/dev/hdc
'' には ``BIOS コールの 0x80 を使用す
る''ということです。
この Lilo パラメーターは他の状況でも便利です。例えば BIOS が IDE ディス クの代わりに SCSI ディスクからブートできる場合です。IDE と SCSI デバイス の両方がある場合、Lilo は 0x80 がどちらを指しているかわからない(ユーザー が BIOS 設定メニュー内でどちらからブートするかを選択できるため)し、 Linux が動作している間には BIOS にアクセスする事はできません。
デフォルトでは Lilo は、BIOS によって IDE ドライブが始めにマップされると
仮定していますが、/etc/lilo.conf
に次のような指定をすることによっ
て変更することができます。
disk = /dev/sda bios = 0x80