ノート PC で SCSI カードを経由して外付け SCSI HDD 等に Plamo Linux をイン ストールした場合、起動時にルートファイルシステムを読みこむまでは外付け SCSI が使えず、ルートファイルシステムを読みこむためには外付け SCSI HDD を使わねばならず、という鷄と卵的な問題に陥いることがあります。
このようなジレンマを解消するために、Linux では起動時 ramdisk(initrd)と呼 ばれる仕組みが用意されており、起動時にいったん特別の ramdisk をルートファ イルシステムとして必要な処理をした後、実際のルートファイルシステムをマウ ントするような処理が可能になっています。
Plamo Linux では、このために Install/extroot.gz
と呼ばれる専用の
起動用 ramdisk を用意しています。extroot.gz
は pcmcia-cs を起動
するために用意した起動用 ramdisk で、カーネル 2.0.33 に対応した
pcmcia-cs 2.9.12 を組みこんだファイルシステムになっています。
extroot.gz
は DOS から loadlin.exe を使って起動するように想定し
ています(だって、外付け HDD にしか Linux をインストールできないからには、
内蔵の HDD には DOS があるんでしょ?)。その場合、loadlin.exe の引数に
起動用 ramdisk と実際のルートファイルシステム(例では一台目の SCSI HDD の
最初のパーティション(/dev/sda1))を指定して、
loadlin vmlinuz initrd=extroot.gz root=/dev/sda1
のように起動します。言うまでもありませんが、必要な loadlin.exe
や vmlinuz
、extroot.gz
はあらかじめ HDD 上の領域にコピー
しておいてください。また、ルートファイルシステムは、インストールの状況に
よっては /dev/sda
になったり /dev/sdb1
になったりしま
すので御注意ください。
initrd=extroot.gz
で起動されたカーネルは、いったんメモリ上にあ
る extroot.gz
を展開したファイルシステムをルートファイルシステ
ムとして起動し、その上にある /linuxrc
コマンドを実行します。
extroot.gz
に用意している /linuxrc
コマンドは、
pcmcia-cs を起動して、一定時間待機してから bash
を起動する、と
いう単純なものです。
#/bin/sh
/etc/rc.d/rc.pcmcia
sleep 10
exec bash
この linuxrc
は bash
を起動して、そこで停止しますので、
もし何か必要な作業があればその段階で実施してください。その後、
bash
を終了すれば("exit"か ctrl-D)、カーネルは起動
時に root=/dev/sda1
で指定したファイルシステムを実際のルートファ
イルシステムとしてマウントし、通常の起動処理を行います。
initrd
から実際のルートファイルシステムに移行する際には、動いて
いるプロセスはそのまま保持されます。そのため、pcmcia-cs が古い initrd 上
の情報に影響されて、正しくカードの抜き挿しを認識できないことがあります。
そのような場合、いったん pcmcia-cs を再起動してください。
# /etc/rc.d/rc.pcmcia restart
もちろん、外付け SCSI HDD 上にルートファイルシステムを置く場合、SCSI カー ドは抜くことができませんので、ノート PC の特徴の一つである可搬性はかなり 損なわれることになります。