Debian(Etch)、Fedora Core 5、Yellow Dog Linux と、3種類ほど
外付けドライブにインストールしてみました。
で、はまった点とか書いてみます。
内蔵HDD (sda) へのインストールだと特に問題がなくても、外付け HDD に
install すると不具合が出ることがあります。
●外付けドライブにインストールはできるが起動できない
OSインストールはできるけど、起動時に root を mount できずに boot が
途中で止まってしまうことがあります。
これは root になるべきドライブが認識される前に mount しようとするのが
原因のようです。FC5 では問題が起こらないので、これをお手本にして initrd
の init スクリプトに手を加えるとなんとかなります。
(http://www.devdrv.co.jp/linux/cpio-initrd-format.htm を参考にしました)
・/boot の initrd*.img をコピー (ファイル名は環境依存)
# cp /boot/initrd*.img .
# mkdir image
# cd image
# zcat ../initrd*.img | cpio -i -c
・init の修正
mkblkdevs と mkblkdevs の間にドライバ読み込みと認識待ちの sleep を追加。
追加する内容は FC5 の init を参考にする。
さらにこの中で読み込んでいる module を lib フォルダに入れておく。
・新しい initrd の作成
# find . | cpio –quiet -c -o | gzip -c > ../initrd-new.img
kboot.conf の指定で新しい initrd-new.img を読み込むように手直しします。
initrd.img の修正が手間な場合は、実は FC5 の initrd.img をそのまま使っても
たいていうまくいきます。FC5 の initrd.img は ADDON CD の \target に入って
いるので、これを HDD にコピーして使えます。
●kboot.conf がどこから読み込まれるか
基本的に内蔵 HDD sda でラベル ‘/’ がついたパーティションがあるとそこから
読み込まれます。なので、外付け HDD にインストールした場合でもそのカーネル
呼び出しの設定を sda 側の /etc/kboot.conf に追加する必要があります。
この辺の挙動はまだ完全に把握していないのですが、ごくまれに違うドライブの
kboot.conf も読み込まれていることがあります。
ADDON CD の HowToEnableYourDistro.html に書いてある通りにも必ずしもなら
ないことがあるし。もしかしたら認識順も影響するのかもしれません。
メモリカードとか使って kboot.conf の読み込み位置を固定した方がいいのかも
しれません。