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 と、使用されているライブラリやパッケージのバージョンによる
使用するメモリの消費量などが重さの差につながっているのでしょうか。
この辺は未検証で申し訳ないです。

ポラール m62 電池交換

ポラールの心拍計 m62 の電池交換をしてみました。
本当はメーカーに送って交換してもらわなければいけないのだけど。
参考にしたのはこちらのページです。
ポラール心拍計バラバラ写真

裏蓋は小さいプラスのねじなのでドライバーで簡単に開けられます。
開けてみたら使われていたのは普通の CR2032。
全く同じ電池が手持ちのストックにあったのでそのまま交換してみました。

裏蓋は開いてもそこからすぐ電池交換できるわけではなく、
さらに内部のモジュールを取り出して分解する必要がありました。
これがはめ込みの構造がわかるまではなかなか取れません。
非常に細かい作業で外れやすい小さいパーツもあるので注意です。
最初は写真を撮りつつ作業をした方が良いかもしれません。
圧電ブザー用の接点金具と、
フロントボタンのスイッチ部分の基板のかみ合わせに注意です。

何とか元に戻って動き出しましたが、構造がわかるまでは結構苦労したし時間も
かかりました。一度経験したら2度目以降はたぶん大丈夫です。
でもやっぱりメーカーにやってもらった方が楽でしょう。
もし試す場合は自己責任で。

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″