【PS3】 ubuntu 8.10/9.04 on PLAYSTATION3

ubuntu 9.04をPLAYSTATIN3にインストールしてみた。
最初、ubuntu 8.10をインストールしたのやけど、アップデートマネージャで9.04に上げました。メモリ不足もあって、ちょっともたつくけど、とりあえず特に問題なし。CentOSやFedoraなんかよりも起動が早くて良い感じ。これで、SPUのプログラミングもubuntuでできるね。実際には、メインPCでクロス開発する事になると思うけど…。

ちなみに、ubuntu on PLAYSTATION3のインストール方法は以下の通り。
僕は8.10から入れたけど、今は9.04のイメージもあるので、それを使っても同じかと思いまする。メインマシンにはなり得ないけど、とりあえずCellの開発サーバにするつもりやったので、サーバエディションで良いかもしれない。(とは言え、一応デスクトップエディション入れましたダ[E:happy02])

  1. パッケージのダウンロード
  2. CDに焼いて…
  3. インストール

で、終わり。
いや、ホンマの話、めっちゃ楽なんすわ。ただし、ちょっとハマりポイントがあるので以下に覚書しときまする。Bluetooth機器とかPS3のコントローラーとか使うためにはもうちょっと手間がかかるみたいやけど、インストールできて、ネットワークつながりゃ良いねんって場合には上記でOK。

パッケージは以下にあります。

ubuntu 8.10
http://cdimage.ubuntu.com/ports/releases/8.10/release/

ubuntu 9.04
http://cdimage.ubuntu.com/ports/releases/9.04/release/

まず、Server Installとするか、Alternate Installするかを決めて、必要なパッケージをダウンロードする。PS3で何か操作するんやなかったら、Server Installで良い気がする。個人的には、PS3はデスクトップではなくてSSH経由で操作するリモート開発マシン(orトランスコーダ)なのでデスクトップは必要なかってんけど、まぁ勢いでAlternate Installを使いました。

次、CDに焼く。
ubuntuならめっちゃ楽。
空のCD(650MB以上必要)をドライブにセットして、上でダウンロードした .iso ファイルを右クリック、CDに書き込む。
しばらくするとホカホカのインストールCDができまする。(我が家のPCでCDを焼くと文字通りホカホカになる…[E:coldsweats02] 回転速度のせいか、環境のせいか熱を持つのだよ。)

PS3でその他のOSのパーティションを作っておく。この辺は色々と解説あるんで、そっちをgoogle先生に教えてもらってくださいな。わたしゃ実はPS3の開○者なんで、その辺はちょっとすっ飛ばします….[E:bleah] ちなみに内部データのバックアップをしっかり取っておかないと、後悔しますぜ。というか、バックアップ対象にならないデータもあるから、ホンマは購入直後のPS3で別OS用のパーティションを確保しておいた方が良いね。

ホカホカのCDをPS3にセットして、「本体設定」から「その他のシステムのインストール」を選択。これで、ブートローダーが書き換わる。ちなみに、ここがハマりポイントで、ブートローダーとKernelのバージョンに依存性があるので注意が必要。途中でブート仕様が変わってるんでね。古いブートローダを使って、ubuntu 9.04みたいな新しいkernelを起動しようとすると kboot: でenterを押しても何度も kboot: が表示される(つまり起動しない)問題が発生する。この場合も、一旦XMBに戻ってubuntuのインストールディスクをセットし、「本体設定」から「その他のシステムのインストール」を行えば大丈夫。

さてさて、無事インストーラが起動したら後はメッセージにしたがって入力すれば良し。途中でSATAのRAIDコントローラー使うか?みたいなの聞いてくるけど、そもそもRAIDにする意味ないんで無しの方が良いと思うです。あとキーボードの自動設定は時間がかかる割にハズレが多いみたいやから、手動で設定した方が確実やね。

そんなこんなで、PS3上のubuntu 9.04ですが、一応1分程度で起動するLinuxとなりました。
でも、アプリの起動はめっちゃ重いですなぁ。理由は色々あるのやけど…

理由その1

メインメモリが256MBしかない。
しかもHypervisorに一部をリザーブされる。
PS3にはグラフィック用のメモリ256MBもあるのやけど、これはLinuxでは使用する事ができない。

理由その2

グラフィックのアクセラレーションが利用できない。
その1のグラフィックメモリが使えない件とも被るのやけど、PS3ではLinux向けにグラフィックチップのドライバを公開していない。

理由その3

全てのデバイス操作はHypervisorコールを経由する。
PS3ではHypervisorの上にLinux Kernelが載っているため、基本的に全てのデバイス操作はHypervisorコールを利用しなければならない。つまりシステムコールの先にHypervisorコールがいるため、その分オーバーヘッドが大きい。特にストレージ関係は遅いんちゃうかな?

理由その4

CellのPPUはインオーダーのスーパースカラ型なので、通常のPCのようなアウトオブオーダー型の投機実行ができない。よってパイプラインのストール頻度が高くなる傾向にある。

理由その他

他にも色々あるけど、さすがにここには書けないなぁ。細かい話ではあるけど。とりあえずCell BEのドキュメントを読むと、PS3のプロセッサがなぜそれほど早くないのか良く分かると思う。普通のCore2とかと比べてはイカンのだよ。どちらかというとAtomと比べるべきかな。

ただ〜し、SPUを使うと話は変わってくる。SPUは強力なSIMD型ストリームプロセッサで、これを利用する事で見かけの性能を大幅にアップする事ができる。つまりPS3は汎用コンピュータではなく、やはりあくまで組み込み機器なんですなぁ。かなりプログラマブルではあるけど。

PS3での開発の詳細は、また今度にしよう。

Author: kan
初めてプログラムらしきものを作ったのは幼稚園の時。それから約40年経ち、現在はデジタル回路設計から信号処理、機械学習まで幅広い経験を活かしてシステムアーキテクトとして活動中。超並列処理、デジタル回路とソフトウェアのバランス設計が得意分野。 Linux/Mac/Windows使い。 C/C++を主要言語として、Unity、Qtなどのフレームワーク興味あり。UI/UXデザイン、STL拡張など。 音声処理、画像処理、技術コンサルは仕事でも請け負います。 一般ソフトウェア開発プロセス、医療機器ソフトウェア開発プロセス作成も進行中。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください