コンセプトに沿ったCDブートLinuxシステムを作成するため必要なものを揃えていこう。
ここまでに、PS3におけるLinuxのブート過程を説明してきた。その中でsquashFSという圧縮ファイルシステムが出てきたが、このファイルシステムは標準で配布されているPS3向けLinuxカーネルでは利用できない。そこで、LinuxカーネルソースにsquashFSを追加して自前でカーネルビルドする必要がある。
squashFSを利用しないならば必要ではないのだが、それではシステムのサイズが大きくなってしまうので、CDの容量的にいささかきついものになってしまうだろう。
他にもカーネルビルドを伴う改良は一緒にやってしまう方がよい。
今回、カーネルビルドで追加した要素は以下の通りだ。
- squashFSの追加と、そのモジュールの生成
- カーネル起動時のペンギンロゴ差し替え
- UnionFSの追加と、そのモジュールの生成
squashFSについては説明ずみとして、他の2つについて解説していく。
PS3のLinuxカーネルは起動時に大きなペンギンが2匹と小さなペンギンが6匹表示される。このペンギンの数はCPUの数を表しており、大きなペンギンはPPU(が実行できるスレッド数)を表し、小さなペンギンはSPUの数を表している。
CELLのSPUは8個であるが、生産時利用可能とされているのは7個までであり、Linux起動時1個はハイパーバイザー層で利用されるためLinuxから利用できるのは6個となっている。
このペンギンのロゴを次のような絵に差し替えてみよう。
カーネル起動時のペンギンロゴの代わりに利用するオリジナル画像 |
ペンギンロゴのうち、大きなペンギンは80×80ピクセルで、小さなペンギンは40×40ピクセルとなっている。まずはこれらと同じサイズの絵を用意する。
次に、用意した絵をカーネルに組み込むために、画像ファイルを規定のフォーマットにする必要がある。この画像フォーマットは「224色未満のPPM形式」と決められている。PPMフォーマットが耳慣れない人がいるかもしれないが、グラフィックツールの「GIMP」(*1)にてセーブできるので減色さえちゃんと行えば難しくはない。
これをカーネルソースの「./drivers/video/logo/
」にある画像と差し替える。「logo_linux_clut224.ppm」が大きい方のペンギンで、「logo_spu_clut224.ppm」が小さい方のペンギンとなっている。
*1 GIMP
GIMPは、GPLにて配布されている、オープンソースのグラフィックツール。UNIX環境向けの他、Windows版、Mac OS X版などがある。