2段 lilo

2000.03.05
http://www.ns.musashi-tech.ac.jp/~inoue/Pages/Linux/lilo.2.lilo.html
http://www.ns.musashi-tech.ac.jp/~inoue/Pages/Linux/
http://www.ns.musashi-tech.ac.jp/~inoue/Pages/
池田@東北大数学さんの考案した2段liloとは、

1. MBRに書き込んだliloから、
2. チェーンローダchain.bを経由して、
3. パーティションの先頭に別途インストールしたliloを起動して、
4. そのliloがlinuxを起動する

方式のことである。この方式の利点は、

1. MSDOSのブートローダでは起動できない論理パーティションからの起動が可能。
2. MBRのブートローダが書き換えられても、各パーティション先頭のliloが起動で
きればlinuxが立ち上がる。
3. MBRのliloをインストールする際に、カーネルの位置情報が不要。
4. 複数のディストリビューションを使い分ける際に、そのカーネルを起動するた
めの2段目のliloを他のディストリビューションと関係なく自由に扱える。

というところにある。
あとの3つはMSDOS等のブートローダを使う利点でもある。
2つ目はMBRにインストールしたliloとは別にパーティション先頭にもインストールしておけば済むともいえるが、その場合起動可能なカーネルを含んだすべてのパーティションをマウントしそれらすべての情報を書いたlilo.confを用意して置く必要があるので3つ目の利点が失われよう。

1段目のliloのインストールには次のようなlilo.conf.mbrを用意する。

boot=/dev/hda
map=/boot/map.mbr
prompt
timeout=50
other=/dev/hda2
    label=slackware
other=/dev/hda3
    label=redhat
other=/dev/hda5
    label=stampede
other=/dev/hda6
    label=turbo
other=/dev/hda7
    label=plamo
other=/dev/hda8
    label=vine
other=/dev/hda1
    label=dos
    table=/dev/hda

このlilo.conf.mbrを使って、

/sbin/lilo -C lilo.conf.mbr

を実行すると、それを実行したときの/boot/boot.bと/boot/chain.bを使い、
/boot/map.mbrに情報を書き込んでMBRにliloがインストールされる。

上記のother=に指定しているのは、各ディストリビューションをインストールする際に2段目のliloをインストールしたパーティション。
2段目のliloのつもりで MBR にインストールしてはいけない。
せっかくの1段目が消えてしまう。

電源を入れて起動するとまず1段目のliloのプロンプトが現れるので、ここで各 label に指定した単語を入力すると、指定されているパーティション先頭の2段目の lilo のプロンプトが現れる。
2段目のインストールの状態で異なるだろうが、

boot=/dev/hda2
prompt
timeout=10
image=/boot/vmlinuz
    label=linux
    root=/dev/hda2
    read-only
other=/dev/hda
    label=back

であれば、linuxと入力するか10秒経つと自動的に /dev/hda2 をルートパーティションとして /boot/vmlinuz が起動する。
上記のようにother=/dev/hdaを記述しておけばbackと入力してMBRにある1段目の
liloに戻ることもできるだろう。(試してはいない。)



戻る