« Arduino RSSリーダー | トップページ | STM32 Primer2 »

Fedora 11にCellクロス開発環境(SDK 3.1)をインストール

超久々にLinux & Cellの記事を書きます。記事数的には、Cell/LinuxよりArduinoの記事数が多くなっているのですが依然としてベスト3はCell系の記事です。PS3 Linux, Arduinoともニッチな世界だと思うのですが、PS3 Linuxの方がユーザー数が多いのでしょうか。

少し古い数字ですが、2008/12時点でPS3の総出荷台数は2130万台です(日本経済新聞出版の「任天堂”驚き"を生む方程式」より)。国内向けの出荷台数は266万台です。その中で、Linuxをインストールする方は1%以下だと思いますので、国内のPS3 Linuxユーザーは1万人以下といったことろでしょうか。

一方、Arduinoの出荷台数は、2008/12時点で6万ユニットとあります。クローン込みの総出荷台数が10万ユニット、日本のユーザー比率が8%とすると(PS3の日本向け比率と同じと仮定)、日本向けの出荷が8千、ユーザー数で4~6千程度と思われます(一人当たり複数台所有と仮定)。

Fedora 11のインストール

前置きが長くなってしまいました。これまで、Fedora 9を使っていたのですが、PC LinuxをFedora 11に更新しました。Linux上でARMの開発環境を試してみたいと思っており、Linux自体を最新化しようと思ったのがことの始まりです。最終的にはWindowsベースになりそうな気もしますが、GNU/gccやmake toolなどはLinuxの方が親和性が高いように思うためです。

Fedora 11のインストールはいろんなところに解説がありますので説明するまでもないと思います。ただ、1点だけハマった箇所がありました。Nvidia proprietary driverのインストールです。

Fedora 11ではオープンソースのnouveauドライバがデフォルトになっています。別にゲームをするわけではないのですが、nvidia proprietaryドライバに比べるとウインドウの移動など通常の操作でももたついてしまうことがありました。そのため、nvidia proprietaryドライバのインストールをいつもの手順で実行しました。 RPM Fusion のリポジトリを設定して、
# yum install akmod-nvidia
で必要なパッケージをインストールして再起動すると、立ち上がりません、、、
(Ferora 9の時代はkmod-nvidiaを使っていましたが、最近はakmod-nvidiaの方がよいことを今回知りました)

ログを見ると,カーネルは起動しており、X Windowのドライバ初期化のところで止まっています。lsmodすると、nouveauとnvidiaドライバの両方がロードされており、後からロードされたnvidiaドライバがGPUを初期化できずにX Windowが立ち上がらない模様。さらに調べると、以下の設定を追加することでnouveauドライバのロードを抑止できるとあります。

1) /etc/modprobe.confに以下を追加
alias nouveau off

2) /etc/modprobe.d/blacklist.confに以下を追加
   blacklist nouveau

上記の設定を加えても、nouveauがロードされnvidiaドライバと競合してしまいます。他の方のインストール例ではこの設定で動作しているため、最新のドライバ or カーネルで何か変更があったのか? 諦めかけたのですが、initrdを再構築すると問題が解消するというforum discussionを見つけ、こちらを試したところ、ビンゴでした。以下の手順でinitrdを再構築します。

# cd /boot
# mv initrd-2.6.30.5-43.fc11.i586.img  initrd-2.6.30.5-43.fc11.i586.img.bak
# mkinitrd /boot/initrd-2.6.30.5-43.fc11.i586.img 2.6.30.5-43.fc11.i586

initrd-2.6.30.5-43では、initrdの起動イメージの中でnouveauを組み込んでしまうため、blacklist.confを書いても意味がなかったということのようです。1)2)の修正を行ってmkinitrdを行うと、再構築したinitrdからはnouveauが削除され問題が解決します。

2009/11/2追記:
kernelを2.6.30.9-90にアップデートしました。この版数では、nvidiaドライバとnouveauドライバの競合は発生しませんでした。最新版では、問題が解消しているようです。

Cell SDK 3.1のインストール

こちらは、「Cell SDK 3.1のインストール」に示した手順通りで問題なくインストールができました。

Fedoraのリポジトリから以下のspu-binutilsが配信されています。(執筆時点)
spu-binutils          i586          2.19.50.0.1-3.fc11

yum updateで上記パッケージに更新を行うとspeプログラムのコンパイルができなくなりました。そのため、以下の設定を追加して、自動更新を抑止しています。
/etc/yum.conf に以下を追加
exclude=spu-*

EclipseのCell SDK IDEが動くかが懸念点でした。Eclipse/CDTはFedora 11収録パッケージのEclipse 3.4.2とCDT 5.0.2をyumでインストール。JREも同時にインストールされるOpen JDK 1.6を使用。SDK 3.1指定のFerora 9ではCDT4.0を使用しているため互換性の問題が考えられしたが、こちらもOKです。以前最新のCDTを使った際に、新規プロジェクト作成画面にCellプロジェクトが現れない現象があったように記憶しているのですが、下のキャプチャー画面にあるようにOthersの中に隠れていました。

Eclipsecell31

ビルドを行う際に以下のワーニングが出ますが問題なくビルドができています。
****  WARNING: The "ppu-gnu32-debug" Configuration may not build  ****
****  because it uses the "PPU GNU 32 bit Debug Tool Chain"  ****
****  tool-chain that is unsupported on this system.  ****

****  Attempting to build...  ****

「使用するtool-chainが未サポートである」云々を言っていますが、プラットフォームがFedora 9であることをチェックしているだけなのかもしれません。今のところ動作に問題はありません。

Cellプログラムのデバッグ」に示したPS3実機を使ったリモートデバッグも動作しています。

おわりに

Cell SDKはFedora 11であっけなく動作しました。

Nvidiaドライバのトラブルに関しては、Ubuntuのように、nvidia GPUを検出した場合は、積極的にnvidiaドライバをインストールしてくれた方が私にはメリットが高いです。UbuntuだとSunのJava VMもaptパッケージとしてインストールができ便利です。Fedoraはオープンソースしか収録しないというポリシーにこだわりすぎているのではと思うのですが。

実は、Fedora 11をインストールする前に、一度Ubuntu 9.04をインストールしています。Cell SDKもrpmパッケージをdebパッケージに変換することでインストールが出来、サンプルソースのコンパイルやEclipse IDEでのコンパイルは通っていました。唯一PS3を使ったリモートデバッグが動作せず、Fedora 11をインストールした次第です。今思うにPS3側がFedora 9であったためリモートデバッグができなかった可能性があります。短時間の使用でしたがUbuntuの方が使い勝手に好感が持てたため、PS3側とセットで再度Ubuntuに更新してみようかと思っています。

« Arduino RSSリーダー | トップページ | STM32 Primer2 »

Linux」カテゴリの記事

コメント

この記事へのコメントは終了しました。

2018年10月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
無料ブログはココログ