PS3 Linux」カテゴリーアーカイブ

PS3 Linux のお勧めディストリビューション

Playstation3 に Linux を入れる場合さまざまなディストリビューションがあります。
PS3 上で特に開発はしないけど、クライアントとして Linux を使ってみたい。
そういう用途には今のところ Debian がお勧めです。
デスクトップ上で、アプリケーションの起動や動作が一番軽くて比較的軽快に
動作します。PS3 で FC5 で何か重いなあと思っていた方は試してもいいかもしれません。
DistributionsGeneralFAQs

●Debian
ほげめも Debian Live for PS3
ほげめも Debian-Installer for PLAYSTATION 3
PS3 やっぱり Debian 再インストールメモ

良い点
 ・軽い
 ・本来のインストーラを使ってインストールできる。
 ・インストーラはTV画面でも問題無く実行できる。
 ・インストーラは日本語で説明が表示される。
 ・Live CD で試すことができる。
 ・パッケージが豊富なので、いろいろインストールしてかなり楽しめる。

悪い点
 ・インストーラを使ったインストール直後は Window が正常に表示されないので、
  最初に xorg.conf を書き換える必要がある。
 ・インストール時にネットワーク接続が必要。
 ・Cell SDK 系が動作しない。(ライブラリバージョンが異なるため)

Cell を使った開発を行う場合は今のところ YDL か FC の2択でしょうか。

●Fedora Core 5
Fixstars PS3 Linuxのインストール

良い点
 ・PS3 で動くように構成されているので専用のコマンドも最初から入る。
 ・すぐに X(ウィンドウ) も起動できる。
 ・ネットワークが無くても DVD から install できる。
 ・Full install ではほぼ全部パッケージが入るので、後からインストールしなくてもさまざまなアプリケーションを使うことができる。
 ・Cell SDK 等の開発環境がそのまま入る。

悪い点
 ・ウィンドウはかなり重い。
 ・特殊なインストーラを使うので少々不親切。
 ・インストール時に Full か Minimum の選択しかできない。
 ・Full だと 9GB 必要。

YDL はあまり使い込んでいないので詳しく書けないのですが、FC5 よりは軽いです。
特にこだわりが無くて Cell SDK 中心で使う場合は YDL は良い選択だと思います。

●Yellow Dog Linux 5.0
Terra Soft Yellow Dog Linux v5.0
Terra Soft Yellow Dog Linux v5.0 (日本語版 Amulet)
Fixstars Yellow Dog Linux for PS3

・軽い
・PS3 専用なので安心。インストール後すぐ使えるし専用コマンドも入っている。
・市販パッケージにサポートあり。日本語版もある。
・インストーラは GUI でわかりやすいけど HD 対応モニタが必要。
・独特なデスクトップ環境。
・Cell SDK 等そのまま使える。

ちなみに Ubuntu は FC5 のカーネルをそのまま流用したためかどうかわかりませ
んが、挙動時の体感的な速度は FC5 とほぼ同じ印象でした。
カーネルの config と、使用されているライブラリやパッケージのバージョンによる
使用するメモリの消費量などが重さの差につながっているのでしょうか。
この辺は未検証で申し訳ないです。

PS3 Linux、Ubuntu をinstallしてみた

こちらのページを参考にして、Playstation3 に Ubuntu をインストールしてみました。
http://www.louiscandell.com/ps3/
http://ubuntuforums.org/showthread.php?t=316047
とりあえず別の OS からでもインストール先 HDD にアクセスできる状態になって
いれば、基本的に debootstrap してカーネルをコピーするだけのようです。

●やることの整理

・すでに本体 HDD (/dev/sda) に FC5 が install 済みの状態を前提にしています。
・USB の外付け HDD に Ubuntu を install します。

●install するパーティションの作成と準備

今回は外付け HDD のうち2つめのパーティションに install します。
なので以下 /dev/sdf2 として説明しています。
1つ目のパーティションなら /dev/sdf1 になるし、20GB モデルなら /dev/sdc1 と
なります。

 # fdisk /dev/sdf

fdisk でよく使うコマンド
 ・p 現在の状態の確認
 ・d パーティション削除
 ・n 新規パーティション追加
 ・t パーティションのタイプ設定、デフォルトだと Linux 用になる
 ・q 中断終了。設定を反映しないで fdisk 実行前の状態に戻ります。
 ・w 書き込み終了。設定変更を書き込んで終了します。元に戻りません。

これで /dev/sdf2 を確保しました。
ext3 でフォーマットします。

 # /sbin/mkfs.ext3 /dev/sdf2

ボリュームラベルを /5 にしておきます。(本当は mkfs.ext3 -L で一緒に登録できる)

 # /sbin/e2label /dev/sdf2 /5

swap は sda の既存のものを流用するので今回は作成しませんが、もし作成するなら
こんな感じです。

 # /sbin/mkswap -L SWAP2 /dev/sdf?

●debootstrap コマンドの準備

ここは参考ページの手順そのままです。FC5 に debootstrap というコマンドを
インストールしています。

 # cd /tmp
 # wget http://louiscandell.com/ps3/debootstrap/debootstrap_0.3.3.0ubuntu7_all.deb
 # ar -xf debootstrap_0.3.30ubuntu7_all.deb
 # cd /
 # zcat < /tmp/data.tar.gz | tar xv
●debootstrap コマンドの実行

install 先を mount します。

 # mkdir /mnt/ubuntu
 # mount /dev/sdf2 /mnt/ubuntu

debootstrap を実行します。
内部で呼び出すコマンドのために、先に PATH の追加が必要です。

 # export PATH=”$PATH:/sbin:/usr/sbin”
 # debootstrap –arch powerpc edgy /mnt/ubuntu http://archive.ubuntulinux.org/ubuntu

しばらく待ちます。

●カーネルのコピー

FC5 のイメージをそのまま使います。

 # cd /mnt/ubuntu/boot
 # cp /boot/* .
 # cd /mnt/ubuntu/lib
 # cp -r /lib/modules .

●fstab の作成

これも FC5 の設定をそのまま流用します。

 # cp /etc/fstab /mnt/ubuntu/etc/
 # vi /mnt/ubuntu/etc/fstab

LABEL=/5 / ext3 defaults 1 1
/dev/devpts /dev/pts devpts gid=5,mode=620 0 0
/dev/shm /dev/shm tmpfs defaults 0 0
none /spu spufs defaults 0 0
/dev/proc /proc proc defaults 0 0
/dev/sys /sys sysfs defaults 0 0
LABEL=SWAP swap swap defaults 0 0
/dev/cdrom /mnt/cdrom auto noauto 0 0

1行目の「LABEL=/」を「LABEL=/5」に変更するだけです。FC5 用の swap 領域に
SWAP というラベルがついてるので swap はそのまま使います。

● hosts の作成

FC5 のものをコピーするだけです。

 # cp /etc/hosts /mnt/ubuntu/etc/

● kboot.conf の作成

今までの sda1 の kboot.conf に追加します。

 # vi /etc/kboot.conf

~省略、以下追加分だけ (PS3 Linux の現在の設定メモ)

# Ubuntu (sdf2) LABEL=/5
ubuntu=’/dev/sdf2:/boot/vmlinux-2.6.16 initrd=/dev/sdf2:/boot/initrd.img root=LABEL=/5′
ubuntu480i=”$ubuntu video=ps3fb:mode:1″
ubuntu480if=”$ubuntu video=ps3fb:mode:129″
ubuntu720p=”$ubuntu video=ps3fb:mode:3″
ubuntu720pf=”$ubuntu video=ps3fb:mode:131″
ubuntu1080i=”$ubuntu video=ps3fb:mode:4″
ubuntu1080p=”$ubuntu video=ps3fb:mode:5″
ubuntu1080pf=”$ubuntu video=ps3fb:mode:133″

これで起動時に kboot: で ubuntu と入力できるようになります。

●起動

再起動して kboot: のプロンプトが出たら ubuntu (または ubuntu720p 等) と
入力して起動してみます。(起動中になぜか console のフォントが変わる)

login: プロンプト と init メッセージが重なって起動失敗に見えることがあるので、
画面がとまったらとりあえず [Enter] 。
login: が出たら root で入ります。パスワードが無いので先に設定しておきます。

 # passwd

dhclient でネットにつないで apt-get のテストです。

 # ifconfig lo up
 # dhclient
 # apt-get update

うまくいったら後はパッケージを install したり環境設定などを行います。

●設定など

ssh を入れておきます。これで PC 経由で設定できるようになります。

 # apt-get install openssh-server

desktop 環境の install。かなり時間がかかります。

 # apt-get install ubuntu-desktop

なぜかエラー終了しました。それでも一応 xorg.conf を書き換えます。

 # vi /etc/X11/xorg.conf

最初から Driver は fbdev だったので、変更は2箇所だけでした。

・Sction “Screen” に追加

  DefaultFbBpp 32

・Section “Device” に追加

  Driver “fbdev”
  Option “ShadowFB” “false”

root だと gdm に怒られるので一般ユーザーを追加します。
(ここでは名前を wheel としています)

 # adduser wheel

sudoers にも追加します。「wheel ALL=(ALL) ALL」を追加

 # visudo

gdm を起動します。

 # /etc/init.d/gdm start

ログインできました。設定ツールなど起動できずにおかしなところがあるので、
まだまだ設定が必要なようです。
やっと何とか動いた、といった程度です。

PS3 Linux にどっぷり浸かってみて

非常に楽しめています。
個人的にここまで楽しめたゲーム機ハードは初めてです。
発売直後にもかかわらず間違いなく稼働率は一番です。

たいてい新ハード発売長後はソフトも少なくあんまりやることが無かったりします。
せめてプログラムを書いて動かせられればもっといろいろ触れるのにな、、と思いつつ
タイトルが徐々に充実してくるのは半年から1年後くらいでしょうか。
それが PS3 はできることがあまりに多くて試したいことも多くて、
全く暇が無い状態です。

Linux を動かすだけなら普通の PC でもいいんですが、
扱うときの ゲーム機だからという安心感 が結構大きいのかなと思います。
何度もインストールしなおしてみたり、設定を深いところまでいじってみたり、
起動しなくなってリセットしたり、全く反応が無くなって電源切ったり。

そういう少々手荒な使い方をしても、GAME-OS だけは問題なく起動するしゲームは
きちんと動いてくれます。ゲーム機というか家電に近いこれらの動作は、かなり
安心できる印象を与えてくれます。
PCだと、問題が起こって動かなくなって強制的に電源切ったりすると
なんとなく心が痛むんです。

価格も実験用のPCとしてみたら割と手ごろで、数年もしたら値段も下がって安価に
買えるようになると思えば気も楽です。

おかげでさんざん使い倒して非常に勉強になっています。
今までも UNIX 系 OS は使った経験がありますが、
ハード自体がものすごく高価だったり、開発機やサーバーで動かなくなると
困る状態だったりして、なかなかいじり倒す機会はありませんでした。

さまざまなディストリビューションを入れてみたり、設定を変えて問題が出て原因を
調べたり、起動時の挙動やインストール手段を追うことができたり、カーネルの
コードを調べたり、コードを書いてみたりと興味は尽きません。

また PCとして見れば比較的小さいので、場所もとらずに済むのもありがたいです。
HDD に LAN に USB にディスプレイ出力と最低限必要なものはそろってますし。

ゲーム機なので、数年もしたらきっと値下げして安くなるとは思います。
だけどその頃はおそらく一般的な PC のスペックもあがっており、どうしても
性能の格差は肥大しているでしょう。そう考えれば、使ってある程度満足できるのは
発売直後、早ければ早い方が良いことになります。おそらく今が旬です。

しばらく経って、使っていってもう性能的に厳しいかなと思ったら、
あとはゲーム専用機や BDプレイヤーとしての本来の道が残っています。
その頃はきっとこれらのタイトルもかなりそろっているのではないでしょうか。
PC だったら現役引退後の使い道はサーバーくらいしかないわけで。

ただし値段的にも PC 用途としての過度な期待は禁物です。ご注意を。

・Linux を使ってみたい、Linux を使うことそのものが目的。
 いろいろ調べたり問題解決したり、設定を覚えたり、とにかく使えるようになる
 ことが楽しい人。使えるまでの手間を楽しむ人。

・Cell をいじってみたい。SPE で動作するプログラムを書いてみたい人。
 大量の数値演算や並列プログラミングの実験用として使いたい人。
 PC 向けに 8個位のマルチコア CPU が出回るまでは良い題材かも。

こんな方にはお勧めです。

PS3 Linux の現在の設定メモ

●PS3 60GB
 内蔵HDD
  ・47GB GAME-OS
  ・10GB 他のシステム (Fedora Core 5)
 USB外付けHDD
  ・60GB Debian
  ・60GB YDL

●PS3 20GB
 内蔵HDD
  ・10GB GAME-OS
  ・6.6GB 他のシステム (未使用、空)
 USB外付けHDD
  ・30GB Fedora Core 5

●60GB 側の設定メモ

・ボリュームラベル
 内蔵 HDD
  /dev/sda1 LABEL=/  (FC5の/)
  /dev/sda2 LABEL=SWAP
 USB外付けHDD
  /dev/sdf1 LABEL=/4  (Debianの/)
  /dev/sdf2 LABEL=SWAP2
  /dev/sdf3 LABEL=/1  (YDLの/)

・ブートローダー (kboot / otheros.bld)
 ADDON CD 20061208 版 (FC5版) の otheros.bld をベースに起動時の画面モードを
 720p にしたもの。(PS3 Linux カスタム kboot を作る)
 LABEL=/ のパーティションの kboot.conf だけ読み込むタイプ。

・kboot.conf
 /dev/sda1 (LABEL=/) の /etc に置く。

#default=fc5720pf
default=debian720pf
timeout=40
root=LABEL=/

# FC5 (sda1) LABEL=/
fc5=’/dev/sda1:/boot/vmlinux-2.6.16-net2 initrd=/dev/sda1:/boot/initrd-2.6.16-net2.img root=LABEL=/’
fc5480i=”$fc5 video=ps3fb:mode:1″
fc5480if=”$fc5 video=ps3fb:mode:129″
fc5720p=”$fc5 video=ps3fb:mode:3″
fc5720pf=”$fc5 video=ps3fb:mode:131″
fc51080i=”$fc5 video=ps3fb:mode:4″
fc51080p=”$fc5 video=ps3fb:mode:5″
fc51080pf=”$fc5 video=ps3fb:mode:133″

# Debian (sdf1) LABEL=/4
debian=’/dev/sdf1:/boot/vmlinux initrd=/dev/sdf1:/boot/initrd.img root=LABEL=/4′
debian480i=”$debian video=ps3fb:mode:1″
debian480if=”$debian video=ps3fb:mode:129″
debian720p=”$debian video=ps3fb:mode:3″
debian720pf=”$debian video=ps3fb:mode:131″
debian1080i=”$debian video=ps3fb:mode:4″
debian1080p=”$debian video=ps3fb:mode:5″
debian1080pf=”$debian video=ps3fb:mode:133″

# YDL (sdf3) LABEL=/1
ydl=’/dev/sdf3:/boot/vmlinux-2.6.16-20061110.ydl.2ps3 initrd=/dev/sda1:/boot/initrd.img root=LABEL=/1 init=/sbin/init ‘
ydl480i=”$ydl video=ps3fb:mode:1 rhgb”
ydl480if=”$ydl video=ps3fb:mode:129 rhgb”
ydl720p=”$ydl video=ps3fb:mode:3 rhgb”
ydl720pf=”$ydl video=ps3fb:mode:131 rhgb”
ydl1080i=”$ydl video=ps3fb:mode:4 rhgb”
ydl1080p=”$ydl video=ps3fb:mode:5 rhgb”
ydl1080pf=”$ydl video=ps3fb:mode:133 rhgb”
ydltext=”$ydl 3″

PS3 Linux カーネルのコンパイル

PS3 の Debian 版インストーラでインストールされるカーネルの config を見ると
いろいろ手が入っていて、ADDON CD (FC5) のバイナリよりもさまざまなオプション
が有効になっているようです。
試しに手持ちの USB 器機、 corega FEther USB-TX をつないでみたら
あっさり認識してしまいました。
USB1.1 用の LANアダプタ なので今ではあんまり使い道が無いのですが。
USB 無線LAN とか他のアダプタはドライバ無くてだめでした。

Fedora Core 5 でもこのアダプタが使えるようにカーネルをコンパイルしてみました。

ADDON CD 20061208 の \src からカーネルソースを適当なフォルダに持ってきます。
   linux-20061208.tar.bz2

展開します

 $ tar -jxvf linux-20061208.tar.bz2

とりあえず標準の config でコンパイルしてみます。
手順は ADDON CD の LinuxKernelOverview.html に書かれているとおりです。

 $ cd linux-20061208
 $ make ps3pf_defconfig
 $ make

ここで指定した make ps3pf_defconfig は、arch/powerpc/config/ps3pf_defconfig
を参照しているようです。
コンパイルがうまくいったので、今度は Debian のカーネル config でコンパイル
してみます。

Debian を install したドライブの /boot/config-2.6.16-ps3pf をコピーしてきます。
/mnt/usbhdd にマウントしてあると仮定してこんな感じ。

 $ cp /mnt/usbhdd/boot/config-2.6.16-1-ps3pf ./.config

module install 時に既存のシステムを上書きしないようにバージョン番号を変えて
おきます。

 $ make menuconfig

  General setup
    → Local version – append to kernel release

  ここに文字列を追加します。”-net2″ にしてみました。
  必要ならここで他の設定も変更します。

 $ make clean
 $ make

念のために、既存の module やカーネルをバックアップしておきます。
(命名を間違えて上書きしてしまわないように)

 # cd /boot
 # cp vmlinux-2.6.16 vmlinux-2.6.16.org
 # cp initrd.img initrd.img.org
 # cp config-2.6.16 config-2.6.16.org
 # cp System.map-2.6.16 System.map-2.6.16.org

 # cd /lib/modules
 # cp -r 2.6.16 2.6.16.org

元のカーネルのソースフォルダに戻って module を install します。

 # make modules_install

これで /lib/modules/2.6.16-net2 というフォルダに新しいモジュールファイルが
格納されます。

新しいカーネルを /boot にコピーします。

 # cp vmlinux /boot/vmlinux-2.6.16-net2
 # cp .config /boot/config-2.6.16-net2
 # cp System.map /boot/System.map-2.6.16-net2

新しいカーネル用の initrd.img を作ります。

 # cd /boot
 # /sbin/mkinitrd –with-usb initrd.img-2.6.16-net2 2.6.16-net2

ここで注意点。USB の外付け HDD から起動している場合上記の –with-usb が
必要です。

またこのままだと、生成される initrd.img の中の init ファイルに例の 15秒待ち
が無いので、以前苦労したように認識が遅いドライブだと起動しなくなってしまいます。
毎回生成された init を書き換えるのも大変なので、mkinitrd 自体を書き換えて
しまいました。

バックアップ

 # cd /sbin
 # mv mkinitrd mkinitrd.org
 # cp mkinitrd.org mkinitrd

書き換え

 # vi mkinitrd

「emit “mkblkdevs” 」という行が2つのあるので、2つ目の直前に「emit “sleep 15″」
を追加してしまいます。

 :
emit “sleep 15”
emit “mkblkdevs”
 :

これでもう一度 initrd.img を作ります。

 # cd /boot
 # rm initrd.img-2.6.16-net2
 # /sbin/mkinitrd –with-usb initrd.img-2.6.16-net2 2.6.16-net2

あとは kboot.conf でこれらの新しいカーネルを指定して起動するオプションを
加えるだけです。

 # vi /etc/kboot.conf

default=linux
timeout=30
root=LABEL=/

linux=’/boot/vmlinux-2.6.16 initrd=/boot/initrd.img ‘
net2=’/boot/vmlinux-2.6.16-net2 initrd=/boot/initrd.img-2.6.16-net2 ‘

net2= の行を追加しました。この場合、起動時の kboot: 画面で net2 と入力すると
新しいカーネルで起動します。
実際に reboot して net2 で起動してみます。

設定ミスがあると起動しなくなってしまうので注意してください。

うまく起動したら FEther USB-TX をつないでみます。
ウィンドウを起動して、
 「管理」→「ネットワーク」→「ハードウエア」のタブで eth1 が追加されており
 ハードウエア名の確認ができます。
デバイスのタブで「新規」ボタンを押して、eth1 を追加していくとネットに接続
できました。ルータにでもしましょうか。