コンセプトに沿った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版などがある。