PS3 Linux を外付け HDD から起動するまとめ

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 の読み込み位置を固定した方がいいのかも
しれません。