PS3 Live CD をメモリカードから起動する

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 が来た! も参考にしてください。