LiveCD の作成&テストの前準備として、PS3 用の Debian Live CD をメモリカード
から起動してみました。
ADDON CD の HowToEnableYourDistro.html の kboot の説明によると
1. /etc/kboot.conf がある CD/DVD
2. ボリュームラベルが BOOTMC のメモリカード
3. ラベルが / の HDD
の順で mount 対象になります。ここの検索で hit した場所から最初の kboot.conf
が読み込まれているようです。
今回はあまっている CF カードでテストしました。
●ボリュームラベルを BOOTMC に設定する
Windows 側のドライブのプロパティやフォーマット時にボリューム名を BOOTMC に
しても、コマンドラインの label コマンドを使っても、Linux 側からはどうも
# /sbin/findfs LABEL=BOOTMC
で見つかりません。なぜか書き換え前のラベル名が見えてしまいます。
いろいろ調べてみたところ、FAT のボリュームラベルは2種類あるようです。
(1) ブートセクタに書き込まれるボリュームラベル
(2) ルートディレクトリエントリに書き込まれるボリュームラベル
(1) についてはこちら http://triaez.kaisei.org/~s-zouda/pc/fat32.html
のページを参考にさせていただきました。Linux の dd コマンドで直接ダンプ
してみると確認できます。
(2) はルートディレクトリに属性 0x08 でファイル名の一種として書き込まれる
エントリです。
両方存在する場合 Windows 側では (2) が優先され、label コマンドの書き換えも
こちらに対して行われます。(2) が存在しない場合 dir コマンドでは空欄に
なりますが「ディスクの管理」画面では (2) の代わりに (1) が表示されます。
Linux 側の findfs では、(2) を識別することができずに常に (1) を参照して
いるようです。
Windows 上で (1) を編集する方法がわからなかったので、とりあえず
HowToEnableYourDistro.html の説明通りに Linux 上でフォーマットしてみました。
メモリカードが /dev/sde の場合
# /sbin/mkfs.vfat -n BOOTMC /dev/sde1
この方法で書き込んだラベルはきちんと (1) に書き込まれており Linux 上から
検索できました。逆に (2) には書き込まれないので Windows 上からはボリューム
ラベルがないように見えます。
●Live CD をコピーしてみる
ボリュームラベルを BOOTMC に設定したら、とりあえず Live CD の中身をコピー
してみます。
Debian Live CD を Windows 上で開いて、中のファイルを全部メモリカード上に
コピーします。220M ほどあります。
中はこんな感じ
DIR install
DIR isolinux
md5sum.txt
DIR casper
DIR etc
● etc/kboot.conf の書き換え
コピーしたメモリカード上の etc/kboot.conf の中身を書き換えます。
テキストエディタで開いて、root= の行を以下のように変更します。
root=/dev/sdc0
↓
root=LABEL=BOOTMC
●起動
これで LiveCD と同じ方法でメモリカードから起動できるようになります。
メモリカードを PS3 に挿入して起動します。(あらかじめ kboot 導入は必要)
kboot: プロンプトでは Live CD と同じように
こちら http://www.keshi.org/moin/moin.cgi/PS3/Debian/Live
のリストにある Label を入力することができます。
Debian Live CD については
こちら PS3 Linux Debianの Live CD が来た! も参考にしてください。