kernel-2.6.23-rc3の導入
Sonyが配布しているPS3 Linux用AddOnの最新版(8/17版)にて、kernelが2.6.23-rc3に更新されました。修正内容にshotdown/rebootが途中で停止する問題が対処されているとあったためインストールしてみました。
1. kernel-2.6.22以降のHDDドライバ変更とLVMの関連
ネットでも情報が流れていますが、kernel-2.6.22から、PS3 LinuxでLVM (Logical Volume Manager)を使用している場合、Linxuが起動できなくなってしまいました。Fedora 7インストーラーのデフォルトがLVMのため、私もLVMでHDDの領域設定を行っていましたが、yum updateでカーネルを2.6.22に更新したら起動できなくなりました。
起動時にカーネルはブートしていますが、LVMを使用している論理ボリュームをルートディレクトリにマウントする段階で「VolGroupが見つからない云々」のエラーを吐いて停止します。ネットで調べてみると、kernel-2.6.22からPS3のHDD driverが変更になり、デバイス名が/dev/sdaから/dev/ps3daになったことでPS3 HDD上のLVMボリュームを認識でなくなったことが原因のようです。
LVMはこれまでデフォルトインストールのままで使用していたのですが、こちらもネットで調べてみると、以下の機能であることが分かりました。
- HDDを数MB単位のブロック(PEと呼ぶ)に分割し、このPE単位に論理ボリューム(LV)に割り付けを行う
- LVは/homeや/varなどのファイルシステムにマウントする単位となる(これまでは物理ディスクのパーティション単位でマウントしていた)
- 同一物理ディスク配下のPEを異なるLVにマッピングできる。例えば、/homeと/verの容量を増やしたい場合、増設したHDDのPEを追加割り当てすることで容量の拡張ができる。LVMを使用していない場合は、パーティションの再設定など繁雑な作業が必要になる
考えてみるとLVMは大量のストレージを管理するエンタープライズサーバーに必要な機能であって、HDDの増設を行うことができない(外付けのUSB HDDなら増設できますが)PS3 Linuxではそもそも必要がない機能だったのですが、そいつに足を引っ張られてしまいました。
LVMの最新パッケージは対策を行っているという情報があったので、LVMのパッケージをアップデートしたり、2.6.22-rc3のソースを再コンパイルするなど色々とトライしたのですがどうしてもLVMを使用した状態で起動することはできませんでした。なんでHDDのデバイス名が変わるような設計変更をやったのでしょうか?
最後はあきらめて、HDDをext3で領域確保する形で(LVMを使用しない形で)Ferora 7を再インストールしました。インストール方法は、「PS3にFedora 7とCell SDK 2.1をインストール」を参照してください。
2. kernel-2.6.23-rc3のインストール
AddOnをダウンロードしてCD-ROMに焼いたら、CD-ROMをマウントして以下のrpmをインストールします。必要なファイルは/target配下にあります。
# rpm -ivh kernel-2.6.23-20070817.ppc64.rpm
# rpm -ivh kexec-tools-20070810-1.ppc64.rpm
# rpm -ivh ps3pf_utils-2.0-1.ppc.rpm
# rpm -Uvh glibc-kernheaders-2.6.23-20070817.ppc.rpm
# cp initrd.img-2.6.23 /boot
インストールが終わったら、/boot/etc/yaboot.confを編集して、2.6.23-rc3の設定を追加します。
(2007/9/11追記)
yaboot.confの編集内容を追記します(書こうと思っていたのですが、ついつい手抜きしてしまいました)。私のyaboot.confを以下に示します。
1: # yaboot.conf generated by anaconda
2:
3: boot=/dev/ps3da1
4: init-message=Welcome to Fedora!\nHit <TAB> for boot options
5:
6: partition=1
7: timeout=80
8: install=/usr/lib/yaboot/yaboot
9: delay=5
10: enablecdboot
11: enableofboot
12: enablenetboot
13: nonvram
14: mntpoint=/boot/yaboot
15: usemount
16:
17: default=2.6.23-rc3 ← デフォルトで起動するカーネルのラベル名を指定
18:
19: image=/vmlinuz-2.6.23-0.164.rc5.fc8
20: label=2.6.23-0.164.rc5
21: read-only
22: initrd=/initrd-2.6.23-0.164.rc5.fc8.img
23: append="video=720p root=LABEL=/"
24:
25: image=/vmlinux-2.6.23 ← 新たに追加したカーネル
26: label=2.6.23-rc3 ← ラベルを付与して起動時にカーネルを選択
27: read-only
28: initrd=/initrd.img-2.6.23
29: append="video=720p root=LABEL=/"
- 25~29行目を追加します(image=とinitrd=の後には、今回/bootに追加インストールしたファイル名を記載)
- 17行目のdefautlコマンドを追加
- その他の行は現状まま変更しません
- kboot:のプロンプトが表示された時点で、delayで指定した時間(例では5s)何も入力しない場合は、defaultで指定したカーネルが起動します
- kboot:のプロンプトが表示された時点で、TABキーを押す毎にyaboot.confで指定したlabelが交互に表示され、起動するカーネルを指定できます
- これまで起動実績があるカーネル指定部分(例では、19~23行)を残すことで、万が一新カーネルが起動しない場合も旧カーネルで起動できます(私は4項に示したFedora-developmentのカーネルを既にインストールしているため2.6.23になっていますが、インストール直後の場合、2.6.21のカーネル起動設定が存在します)
3. kernel-2.6.23での変更点
主要な変更点は以下です
- hddのデバイス名が/dev/sda → /dev/ps3daに変更となった
- usbメモリーは/dev/sdaとなる
- XMBに戻すコマンドがboot-game-os → ps3-boot-game-osに変更となった(boot-game-osは正常に動作しません)
- kbootも2.6.23-rc3ベースに変更となっているため再インストールがおすすめです(kbootのプロンプトからXMBに戻す際に、旧kbootのboot-game-osが動作しないため)
デバイスドライバー関連のソースコードはかなり変更が入っているようです。
Fedora 7のカーネルと異なり、addon版のカーネルパッケージではデバイスドライバーがPS3で必要なものしか入っていません。
問題のshutdown/reboot/poweroffコマンドはやっと正常に動作するようになりました。
4. Feroraのカーネルパッケージ
(2007/12/16追記)
最新のFerora 7はカーネルが2.6.23のリリース版に置き換わっています。そのため普通にyum updateを実行するとkernel-2.6.23がインストールされます。Add-on CDのカーネルは必要最小限のドライバのみが有効になっており、nfs/autofsなどが使えないため、私はFedora kernelに変更しています。ps3-boot-game-osの問題も解決しています。
| 固定リンク
「Linux」カテゴリの記事
- Fedora 11にCellクロス開発環境(SDK 3.1)をインストール(2009.09.18)
- Fedora 9でのサウンド設定(2008.12.23)
- Cell SDK 3.1のインストール(2008.11.23)
- Cell SDK 3.0のアップデート(2008.06.01)
- kernel-2.6.23-rc3の導入(2007.09.08)

コメント
はじめまして。mamiaと申します。
FC7のshotdown/rebootが途中で停止する問題の対処方法として
こちらのブログを参考にさせていただいております。
rpmのインストール終了後に/boot/etc/yaboot.confを編集・追加
となっていますが、その編集内容を教えていただけませんでしょうか?
「PS3用Fedora 7 kernelの再構築」の記事を見て自力で編集しよう
とはしたのですが、もし、起動しなくなったら・・・と考えてしまい、
足踏みしてしまいます。よろしくお願いいたします。
投稿: mamia | 2007年9月11日 (火) 04時48分
追記ありがとうございます!!
投稿: mamia | 2007年9月13日 (木) 00時45分