Archives

January 2007 の記事

やっと出ました!
ベータでない Vista 用ドライバです。
nVIDIA のサイトから落とせます。
http://www.nvidia.com/content/drivers/drivers.asp

GeForce8800 GTX/GTS が発売されて、
DirectX SDK の D3D10 も RTM して、
Windows Vista も発売されて、
Vista 用ドライバも出て、
ようやく Shader4.0 が普通に使えます。
長かった・・

追記: よく見たらベータでした。
失礼しました。


Playstation3 用に新しいファームウエア v1.50 が出ました。
前回が v1.32 だったので、結構大幅なバージョンアップでしょうか。
http://www.jp.playstation.com/ps3/update/

他のシステムの起動周りで何か変わってないか HDD をフォーマットして確認して
みました。残念ながら「PS3 Linux のちょっと残念な点」 で書いた点については
特に何も変わっていませんでした。

HDD分割も相変わらず 10GB のままで、
パーティションを切らないと他のシステムのインストールも優先起動システムの選択も
できませんでした。
次回の更新に期待です。


従来相違があって不思議と互換性が無かった
頂点フォーマットとテクスチャフォーマットが D3D10 で統一されています。
これもシェーダーが統合されたおかげでしょうか。

Direct3D9 では例えば頂点だと

 FLOAT4   float×4
 FLOAT16_4  float(16bit)×4
 SHORT4N   short×4
 UBYTE4   byte×4 (a b g r)
 D3DCOLOR  byte×4 (a r g b)
 DEC3N    (10,10,10)
 
等の専用形式があり、テクスチャにも

 A32B32G32R32F
 A16B16G16R16F
 A16B16G16R16
 A8B8G8R8
 A8R8G8B8
 A2R10G10B10

があります。上にあげたものはほぼ似たようなフォーマットですが、
それ以外のものは互換性が無くアクセスのために専用のコードが必要でした。

Direct3D10 では VertexShader も PixelShader も同じ性能を持っているので、
アクセス可能な Buffer および ShadeResource のフォーマットが同じものになって
いるようです。
(2次元圧縮の BC(DXT) 形式は除く)

その代わり頂点フォーマットでも R G B A 表記になります。
よく見ると D3D9 の A B G R 表記と逆順です。
もちろん x y z w にあわせたためだと思われます。

xyzw と rgba の統合までの道のり

・D3D8 まで ARGB → D3D9 で ABGR 追加 → D3D10 で RGBA に変更


●caps

caps 情報が必要なく、どのビデオカードでも同じように動作するのが 10 の特徴と
されています。ただ全く判断が必要必要ないかといえばそうではなくて、最低限
D3D10 が動くかどうかの判別は要ります。

DX5 あたりの時代のビデオカードだと、同じチップなのにメーカーによって結構
機能が違っていました。この違いはドライバによるもので、有効になっている機能
であっても実際はドライバ側のエミュレーションだったり他の機能の代用で実現
していたのかもしれません。

D3D10 ではどのメーカーのビデオカードでも同じ用に動作することが求められて
いるのですが、カードによって実装方法が異なっていることは考えられます。
機能が有効になっていてもビデオカードによってはエミュレーション実装で実は
重い、なんて状況にもしなるんだったら、事前に caps で判断して苦手な機能を
弾ける方がいいのかもしれません。
この辺はさまざまなビデオカードが出てくるまではまだなんともいえないところです。


●GeometryShader

GS はプリミティブ単位でシェーダーを実行することができますが、さらに隣接する
プリミティブの情報も参照することが可能です。これは ADJ 系の Topology データ
が必要です。隣接するプリミティブの情報を格納した IndexBuffer や頂点情報を
作成しておくわけです。(D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ 等)

なのであらかじめ対応するデータ形式への変換が要ります。頂点情報が重複するので、
本当に隣接情報を受け取りたいだけなら基本的に Indexed だけ使うことになるで
しょう。

例えば Triangle なら隣接込みで 6頂点入力になります。この余分な頂点情報にわざと
関係ないデータの頂点を与えることで、プリミティブ単位の追加情報領域として
活用することができそうです。ここに面法線とか面マテリアルとか入れて GS で
合成してあげるなど、かなり使い道がありそうですね。

なお GS で頂点の追加ができますが、試してみたところ一度の出力は最大 1024 要素
(スカラー)までに制限されるようです。例えば頂点形式が

px py pz nx ny nz tu tx

だと8要素なので、1024/8= 128個。つまり 128頂点まで出力することができます。
Triangle List だと 42個分になるでしょうか。


●resource

リソース周りの構造の理解も重要なポイントです。かなりのリソースが相互に流用
可能になっています。大きく分けると Buffer と ShaderResourceView の2種類です。
シェーダー側でも Buffer として読むか ShaderResourceView として読み込むかで
命令が違います。
ShaderResourceView であっても結局 Load() を使えば offset 指定で直接読めるので、
できることは cbuffer とあまり変わりません。VertexShader のみ cbuffer に
使えるリソースが ConstantBuffer だけに制限されています。

なので VertexShader だけは c0~ 系命令のアクセスが最適化されているけれど、
他の Shader では内部で Load() に置き換わっているのだろうか、とかちょっと
思いましたがそんなことは無いよいうです。

サンプルでもこの辺の比較プログラムが存在するので、どれくらいパフォーマンスに
差が出るかは試すことができます。

ShaderResourceView を使うと FORMAT によるさまざまな形式のデータを読み込め
ますがその代わり配列相当なのでフォーマットの異なる構造を作れません。
(tbuffer としてはアクセスできる)

Buffer を使うと構造を定義できますが、int, float, half 等の組み合わせなので
DXGI_FORMAT のような柔軟なデータ形式では直接宣言できなくなるようです。
(R8G8B8A8とか)
ちなみに subresource は ~DX9 でいう Surface のことのようです。


PS3 の CPU である Cell は 3.2GHz で動いています。
Cell は複数の CPU core の集合体であり、中には PPU ×1 と SPU × 8個の
合計 9個の CPU core が含まれています。
ただし PS3 版 Cell では SPU の個数は 7個に減っており、合計 8 core です。

Cell が圧倒的なパワーを持つといわれているのはこの 8個 (7個) の SPU を持って
いるからです。SPU だけで 8個 (7個) の異なるプログラムを同時に走らせることが
できて、特に大量の浮動少数演算でその威力を発揮します。

これらの複数の SPU を統合整理するのが PPU の本来の用途だといわれています。

PPU 自体は 64bit の Power アーキテクチャで、PowerPC と完全に命令セットの
互換性があります。Linux を比較的容易に走らせられるのもこのためで、
PowerPC 用の一般のバイナリパッケージをインストールすることが可能です。

PowerPC G5 (970) が最大でも 2~2.5GHz 前後だったことを考えると、3.2GHz で
動作する Cell は PPU だけでもかなり高速な印象を与えます。でも実際はそれほど
でもありません。

もともと PowerPC は比較的効率の良い動作をする CPU でした。ヒット率の高い分岐
予測やアウトオブオーダー実行、レジスタのリネーミングなど、パイプラインの
無駄を高度なアルゴリズムで実行時に回避します。またそのような方向で進化して
きました。割と一定した速度の出る、どんなプログラムでも速度が落ちにくい CPU
アーキテクチャだという印象があります。

逆にそれが複雑な設計を招いているのか、比較的高クロック化の妨げになっていた
と考えられます。

Cell や Xbox360 の CPU で使われているこの新しい CPU Core は、これまでの
PowerPC の路線とは完全に逆向きの設計が行われているようです。

つまり、高クロック化の妨げとなるような複雑な設計はやめて、シンプルかつ小さな
core にすること。その代わり速度を高クロック化とマルチコア化で稼ぐというもの
です。

もちろんアウトオブオーダー実行できないと、パイプラインは依存が発生する
たびにスカスカになることが考えられます。これを回避するための方策として用い
られているのがマルチスレッド化です。PPU 1つでも、依存関係の無い 2つのスレッド
コンテキストを持つことで、パイプラインの無駄を回避しようというわけです。

Pentium4 の HyperThread と似たようなものといえるかもしれません。だけど HT
よりもスレッドへの依存はより積極的だと考えられます。

まとめるとこんな感じになります。

・高クロック化の妨げになる複雑な高度な回路は無くする
  → シンプルになるので高クロック化しやすい
  → 複雑な回路が減って面積が小さくなる
  → CPU の動作効率が落ちる

・落ちた動作効率をカバーするために次の新たな技術を導入する
  → 高クロック化
  → マルチコア化
  → マルチスレッド化

動作効率の低下は、CPU を複数積んで、クロックをあげることで回避せよと。
またパイプラインや演算ユニットの無駄はスレッドで回避しろと、ある意味力技に
見えます。

これらの仕様を考慮すると、CPU の癖というか性格としては、次のような傾向になる
ことが予想できます。


  ピーク性能は高いがかなりピーキーであり、性能を安定して引き出す
  のは難しい。


・コンパイラ依存率が非常に高くなる
  → 実行時の命令順最適化が行われないので、あらかじめコンパイル時に厳密に
   最適化しておく必要がある。そうでないと性能が出ない。

・スレッドを2本走らせないと100%性能を発揮できない
  → 別スレッドでパイプラインを埋めることが前提の設計なので、スレッド1本
   では無駄が発生している。


つまり同じ Power アーキテクチャといえども、これまでの PowerPC とは全く正反対
の性格付けになっているわけです。

ちなみに Xbox360 の CPU は、SPU が無い代わりに Cell でいう PPU 相当が 3つ
入っています。2次キャッシュの容量とベクトル専用命令の追加に違いがありますが、
CPU core そのものの特徴や傾向は全く同じだと考えられます。

Xbox360 の CPU も、100% の性能に近づけるためにはそれぞれの core で 2スレッド、
合計 6スレッド分のプログラムが必要だということです。

PS3 Linux で PPU が 2個の CPU に見えるのは、このように HT のような2本の
スレッドが走るためです。

PS3 Linux で実際に使ってみて結構動作が遅く感じるのは、もちろん Cell のうち
ごく一部しか活用されていないこともありますが、従来の PowerPC 用コンパイラ&
バイナリでは相性が悪いというのも若干影響しているかもしれません。


Linux を使って Playstation3 をネットラジオプレイヤーにしてみました。
ゲームをしていないときの PS3 活用方法として意外に便利かもしれません。

PS3 に Fedora Core 5 を full install するとさまざまなアプリケーションが
入りますが、そのままでは mp3 の再生ができないようです。
ネットで調べると、この辺いろいろと設定したりソフトウエアやプラグインを
インストールしたりと少々手順が必要です。
ところが同じ Linux でも、FC5 ではなく Debian の方を使うと
特に何もしなくても再生することができました。

もっとも、PS3 の場合音楽再生だけなら GAME-OS (XMB) でもできるので、
ここではネットラジオを再生してみます。

以下 PS3 上の Debian (Etch) の設定です。


● サウンドを有効にする

Debian では最初 PS3 用のサウンドドライバが読み込まれていないため、
「modprobe snd_ps3pf」を実行する必要があります。

この読み込みを自動で行うために、/etc/modules に snd_ps3pf という行を追加
します。テキストエディタで編集してください。追加後下記のようになりました。

--------------------

gelic_net
loop
ps3pf_storage
snd_ps3pf

--------------------

設定したら一度再起動しておきます。


●データの再生

これで一般的な音楽データは再生できるようになります。
例えば mp3 ファイルの再生も OK です。
ただし標準で立ち上がる「動画プレイヤー」(totem)だとかなりノイズが乗るので
Rhythmbox の方をお勧めします。


●インターネットラジオの再生

Rhythmbox の演奏メニューから「新しいインターネット・ラジオ局」を開きます。
ここに再生用の URL を入力すれば OK です。
入力した URL がラジオ局一覧に入るので、ダブルクリックで再生できます。
URL は .pl や .m3u 等のファイルをエディタで開くと確認できます。

もしくはブラウザでネットラジオのページの再生ボタンを押して、
アプリケーションで開く先を Rhythmbox にします( /usr/bin/rhythmbox )。
これで簡単にラジオ局一覧に取り込めるようになります。
SHOUTcast の再生もできました。

標準のブラウザだと開く先のアプリケーションをその場で指定できないので
「動画プレイヤー」(totem) が起動してしまいます。
先に Firefox を入れておいた方がよいでしょう。
ターミナルから下記のように実行して追加できます。

 $ su
 # apt-get update
 # apt-get install firefox
 # exit
 $ firefox


●他のプレイヤーの追加

Rhythmbox ではなく他のプレイヤーを使うこともできます。
この場合ブラウザでクリックしてプレイヤー選択するだけで再生できます。
例えば xmms を追加するなら Firefox と同じように

 # apt-get update
 # apt-get install xmms

と実行します。これでインストール完了です。メニューから呼び出せます。


Debian の場合 Live CD を簡単に作れるので、CD から起動できるネットラジオプレイヤー
なんてできそうですね。


2007/01/21
DirectX Direct3D10

GeForce8800 のドライバが出た(?)ので早速 D3D10 を試しています。
ずっと DirectX SDK には Direct3D10 の Preview が付属していましたが、
RTM した December でもマニュアルが融合しただけで D3D9 も D3D10 もどっちも
入った状態なのは一緒です。

これまでも、DirectX9 に入ってた DirectInput はずっと DirectInput8 の
ままだったし、DirectSound も DirectSound8 でした。
なので Direct3D も、DirectX 全体のバージョンとは独立したナンバリングが
行われたようです。

といっても、もともと DirectX の初期の頃は各コンポーネントごとにばらばらに
インターフェース番号がついてました。

で、確か DirectX7 のときに SDK 全体の番号と各インターフェースの番号の統合
が行われました。ほぼ全部のインターフェースの番号を SDK の番号にあわせたわけ
です。

だから元に戻ったようなものでしょうか。

D3D10 はインターフェース周りからフォーマット名のシンボルから使い方まで
Direct3D9 と全く違ったものになってます。
結構大変に見えるかもしれませんが、DirectX7 まではだいたい 1年に一回
こんな感じで大幅な刷新があったんですよね。

とりあえず D3D10_DRIVER_TYPE_HARDWARE でちゃんと高速に動作しました。


API セットは Fixedパイプが無くなってかなりすっきりしたはずなのですが、
その代わり汎用性が増して自由度があがったためか、インターフェースの種類も
かなり増えています。おかげで一見しただけだと全体の構造がわからなくなって
しまいました。
例えばテクスチャの読み込み1つ見てもやるべき手順が増えてます。

また従来は目的毎に API があったため何をやるのかは割と明確でした。今では
ライティングもマテリアルもフォグも何から何まで Shader の実装依存になった
ために専用の API や構造体は無く全部汎用です。

逆に Depth, Stencil あたりの判定の流れは変わっていないので、レガシーに
感じてしまいます。

設定やパラメータの渡し方も大幅に変更になっています。効率優先でできる限り
バッファに置く構造となっていて、非常に徹底したものです。
いまのビデオカードは RAM 容量もかなり多いので、これを活用する構造にシフト
したのでしょう。コマンドストリームに乗せるものは最小限です。


・マニュアルのミス?
 December でマニュアルの D3DX10CreateShaderResourceViewFromFile() の引数が
 足りないようです。
 実際の定義では D3DX10_IMAGE_LOAD_INFO と ID3DX10ThreadPump* の2つが追加
 されています。

 チュートリアルやプログラミングガイドでも、たまに関数名が間違ってることが
 あるようです。例えば

 DirectX Graphic
  Direct3D 10
   Programming Guide
    API Features
     Reference Counting
 の最後の pDevice->GetRasterrizerState() 等。

 もしかしたら設計の最後に、全部の API 名が RSGetState() のように RS~、PS~、
 OM~、と整理されたのかもしれません。こういうミスはその名残かも。



・その他気がついたこととか随時

HLSL は technique ではなく、technique10。間違えると signature 取れずにはまる。

D3D10 では Set 系で Reference Count が増えない。

Texture の管理に ResourceView を使った場合、開放の手順が多少複雑。
データの実体は ID3D10Texture2D なので、Resource の開放も必要。


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

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

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

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


こちらのページを参考にして、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



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


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

たいてい新ハード発売長後はソフトも少なくあんまりやることが無かったりします。
せめてプログラムを書いて動かせられればもっといろいろ触れるのにな、、と思いつつ
タイトルが徐々に充実してくるのは半年から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 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"


ついに来た!(のかな?)
 Direct3D 10 に必要な Windows Vista が RTM し
 Direct3D 10 対応ハード GeForce8800 が発売され
 Direct3D 10 SDK も RTM したのに、
Vista 用の GeForce8000 のドライバが無くてずっと待たされ続けてました。
D3D10 どころかドライバが無いためで Vista そのものがまともに使えません。
せっかく買ったカードもずっと箱の中でした。
これでやっと D3D10 のプログラムが書けるようになります。

Forceware 100.30 (Beta)

入れてみました。
一応 Vista に install して、DirectX SDK の D3D10 用サンプルが動くことは
確認できました。ドライバが Beta だからと思いますが、D3D10 専用サンプルは
少々予想外に重い印象。まだ動作が不安定なものもありました。

GeForce8800 のデモも Vista 上で動きました。こちらはきちんと動きますね。

・Adrianne
 http://www.nzone.com/object/nzone_adrianne_home.html

・Froggy
 http://www.nzone.com/object/nzone_froggy_home.html

・Box of Smoke
 http://www.nzone.com/object/nzone_boxofsmoke_home.html


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 を追加していくとネットに接続
できました。ルータにでもしましょうか。


こんなページを発見しました
BUFFALO PLAYSTATION3 動作確認サプライ関連製品一覧

ストレージのカテゴリではきちんと本体 HDD の「バックアップ/リストア」の
動作確認が行われています。

以前こちらの「PS3 の HDD バックアップ方法の実験」で
大容量 HDD へのバックアップ実験を行いました。
よく調べてみると、市販されている HDD は大容量のものでも最初から FAT32 で
フォーマットされているようです。~32G まで、というのは全く心配ないみたいですね。

他にも
Logitec PLAYSTATION3 接続確認情報
ELECOM PLAYSTATION3動作確認一覧
HORI PLAYSTATION3対応についてのご案内


てくてくエンジェル Pocket with DS 日記 のその後です。いまのところ順調に育っています。
1日のノルマ設定を「自動」にしたので、最初は非常にゆるいです。
1日あたり 1000歩 から始まって楽勝気分。
2000、3000と順調に増えていき、17日越えてやっと 5000歩になりました。
・「てくてくエンジェル DS日記 まじめレビュー

が、平日は完全に余裕なものの、この辺になってくると意外に土日が危ないです。
うっかりごろごろして過ごすと 4000歩に届かないことも。

とうとう1日だけノルマ未達成の日がありました。

たった1日だけなのに!
ジェルの体力は半分に減ってキャラもまるまる太って見た目もいきなり退化です。
これはやばい。

あわてて次の日はめいっぱい歩きました。
作りがうまい。というかのせられてる。

てくてくエンジェル Pocket 側は非常にデバイスの性能も良くて、
機能も作りこんであって気に入ってます。
ノルマも未達成だと記録に残るので、ついつい気にしてしまいます。

毎日の履歴も残るし、DS との連動用パスワードもいつでも参照できます。
その日のうちに無理して DS に入れなくてもいいので気が楽です。

そんなわけでついついパスワード打ち込みをさぼっていて、
DS 側のソフトをちゃんと使ったのは最初の 4日間だけ。
打ち込んでいないパスワードが10日以上もたまってます。
次作はぜひ通信機能をお願いします。

いやむしろ、Pocket 側だけでグラフ化とかカレンダー表示してくれると
DS 持ち歩かなくてすむので嬉しいかも。


LiveCD の作成&テストの前準備として、PS3 用の Debian Live CD をメモリカード
から起動してみました。
ADDON CD の HowToEnableYourDistro.html の kboot の説明によると

 1. /etc/kboot.conf がある CD/DVD
 2. ボリュームラベルが BOOTMC のメモリカード
 3. ラベルが / の HDD

の順で mount 対象になります。ここの検索で hit した場所から最初の kboot.conf
が読み込まれているようです。

今回はあまっている CF カードでテストしました。


●ボリュームラベルを BOOTMC に設定する

 Windows 側のドライブのプロパティやフォーマット時にボリューム名を BOOTMC に
 しても、コマンドラインの label コマンドを使っても、Linux 側からはどうも

  # /sbin/findfs LABEL=BOOTMC

 で見つかりません。なぜか書き換え前のラベル名が見えてしまいます。
 いろいろ調べてみたところ、FAT のボリュームラベルは2種類あるようです。

  (1) ブートセクタに書き込まれるボリュームラベル
  (2) ルートディレクトリエントリに書き込まれるボリュームラベル

 (1) についてはこちら http://triaez.kaisei.org/~s-zouda/pc/fat32.html
 のページを参考にさせていただきました。Linux の dd コマンドで直接ダンプ
 してみると確認できます。

 (2) はルートディレクトリに属性 0x08 でファイル名の一種として書き込まれる
 エントリです。

 両方存在する場合 Windows 側では (2) が優先され、label コマンドの書き換えも
 こちらに対して行われます。(2) が存在しない場合 dir コマンドでは空欄に
 なりますが「ディスクの管理」画面では (2) の代わりに (1) が表示されます。

 Linux 側の findfs では、(2) を識別することができずに常に (1) を参照して
 いるようです。

 Windows 上で (1) を編集する方法がわからなかったので、とりあえず
 HowToEnableYourDistro.html の説明通りに Linux 上でフォーマットしてみました。

 メモリカードが /dev/sde の場合

  # /sbin/mkfs.vfat -n BOOTMC /dev/sde1

 この方法で書き込んだラベルはきちんと (1) に書き込まれており Linux 上から
 検索できました。逆に (2) には書き込まれないので Windows 上からはボリューム
 ラベルがないように見えます。


●Live CD をコピーしてみる

 ボリュームラベルを BOOTMC に設定したら、とりあえず Live CD の中身をコピー
 してみます。

 Debian Live CD を Windows 上で開いて、中のファイルを全部メモリカード上に
 コピーします。220M ほどあります。

 中はこんな感じ

  DIR install
  DIR isolinux
    md5sum.txt
  DIR casper
  DIR etc


● etc/kboot.conf の書き換え

 コピーしたメモリカード上の etc/kboot.conf の中身を書き換えます。
 テキストエディタで開いて、root= の行を以下のように変更します。

root=/dev/sdc0

 ↓

root=LABEL=BOOTMC


●起動

 これで LiveCD と同じ方法でメモリカードから起動できるようになります。
 メモリカードを PS3 に挿入して起動します。(あらかじめ kboot 導入は必要)

 kboot: プロンプトでは Live CD と同じように
 こちら http://www.keshi.org/moin/moin.cgi/PS3/Debian/Live
 のリストにある Label を入力することができます。

 Debian Live CD については
 こちら PS3 Linux Debianの Live CD が来た! も参考にしてください。


フルインストールした PS3 の Fedora Core 5 には、ターミナルサーバクライアント
も最初から入っています。これを使って 同じ LAN 上の Windows PC にログイン
してみます。


●リモートデスクトップ(rdesktop)

WindowsXP Professional 以上 (または Server 系 Windows) が必要です。
残念ながら XP の Home Edition にはつなぐことができません。

・WindowsXP 側の設定
  ・コントロールパネル→システムを開く
  ・「リモート」のタブの
     「このコンピュータにユーザーがリモートで接続することを許可する」
   にチェックを入れる


・PS3 側
  ・メニューの
   「アプリケーション」→「インターネット」→「ターミナルサーバクライアント」
   を実行する。

  ・コンピュータ名:  に WindowsPC の名前か IP アドレスを入れる
  ・プロトコル:  は RDPv5 を選ぶ

  ・[接続] を押す。つながったら Windows の画面が出るのでログインする。



デフォルトだと 256色モードになってしまうので、
「画面」タブ→「色」の "指定した色震度を指定する"、で 6万色 や フルカラー の
選択ができます。



720p なのでリモートデスクトップが 800x600 になってしまってます。
画面が狭いけど動作は意外にきびきびとして結構使えます。



音は出ないものの Gyao も見れました。
Vista には接続できませんでした。
rdesktop


● VNC

VNC を使って Windows にログインするには、Windows 版の VNC server が必要です。
RealVNC vnc-4_1_2-x86_win32.exe
こちらは XP Professional でなくても動作します。
入れると Windows Defender に怒られました。
通信路のリスクを承知して使うということで許可しました。

・Windows 側
  「スタートメニュー」→「VNC Server 4 (User-Mode)」→「Run VNC Server」
  タスクトレイにVNCアイコンが入ったら右ボタンから Options
  「VNC Server Properities (User-Mode)」 の Authentication タブの
  "VNC Password Authentication" を選択して [Configure]
  パスワードを登録したら [OK]

・PS3 側
  ・ターミナルサーバクライアントを起動して、今度はプロトコルを VNC にする
  ・[接続] を押すとパスワードを聞かれるので入力



こちらは Vista につないでます。VNC はデスクトップをイメージで送信している
らしく、Vista の AeroGlass もきちんと描画されています。
その分描画の更新が重くなってます。

さらに VNC 自体は Linux 側でサーバーを動かして PC 側で操作することもできます。
もっといろんな面白いことができるようです。

不要になったら必ず VNC Server は停止しておいてください。


●使い道

使い道はありそうです。rdesktop はレスポンスも良く、Windows 同士でつないだ
リモートデスクトップとほとんど変わらない印象でした。

例えば、リビングに置いた PS3 を HDMI のフルHDでつないでおいて、別の部屋の
PC 内の写真を大画面で見たいとか・・・これだとデジカメを直接 USB で PS3 に
つないでも同じことができそうです。
PC 上のムービーなら Xbox360 でできますね。

むしろ職場など、会議室の大画面TVに D端子 か HDMI しかない状況で、PS3 経由で
パワーポイントを開くなんてのは十分ありかもしれません。


●本体 HDD を一度フォーマット(パーティション分割)しないと Linux の起動ができないこと
 (2007/01/13。システムソフトウエアバージョン v1.32 現在)

  本体のフォーマットユーティリティで他のシステム用領域を作らないと
  「他のシステムのインストール」の実行ができない。

  本体のフォーマットユーティリティで他のシステム用領域を作らないと
  「優先起動システム」の選択ができない。(メニューに出てこない)

 「他のシステムのインストール」で書き込まれるブートローダー自体は、
 HDD ではなくフラッシュメモリに書き込まれます。また本体 HDD に Linux を
 インストールしなくても、CD/DVD-ROM や外付け HDD からでも Linux 自体の
 起動ができます。

 なので原理的には内蔵 HDD に Linux 領域が無くても十分ブートできそうな
 気がします。将来のファームアップでは、パーティション分割必須という上記の
 制限をなくしてもらえると非常に活用方法が広がります。

 ちなみに、
  1. パーティション分割(その他のシステム用領域作成)
  2. 他のシステムのインストール
  3. kboot の起動を確認
  4. フォーマットして「すべてPS3に割り当て」

 とした場合も、結局「優先起動システム」の変更ができないので Linux の起動が
 できなくなります。

 その後
  5. もう一度フォーマットしてパーティション分割
  6. 優先起動システムを「その他のシステム」に変更

 とすると、きちんとさっきと同じ kboot が起動します。
 このことから HDD をフォーマットしても一度書き込まれたブートローダー部分
 には影響が無いことがわかります。


●本体 HDD のパーティション分割方法が 1種類しかないこと

 現状では 10GB とそれ以外、の分割しかできないようです。60GB モデルを 30:30
 に分けることもできないし、20GB モデルで Linux 側をもっと減らしたくても
 できないのが残念。もし可能なら改善して欲しい点です。


●画面モード設定

 XMB (PS3,GAME-OS) 上で設定した画面モードなどの設定は Linux 側に引き継がれ
 ないので、Linux 側の起動やインストール画面は、表示可能で安全な最低の
 解像度(480i)が選択されてしまいます。
 今後の解析やファームアップデートによってはもしかしたらできるようになるの
 かもしれないです。


「PS3 の 60GB モデルと 20GB モデルで、Linux を使うときに違いがあるのかどうか」
今までずっと 60GB 版の PS3 だけ使って Linux install の実験をしてきました。
20GB 版も手に入れたのでちょっと調べてみました。


● デバイス名の違い

  ・60GB 版のデバイス (Fedora Core 5 起動時のもの)

   /dev/sda  内蔵HDD
   /dev/sdb  ブート用フラッシュメモリ
   /dev/sdc  内蔵カードリーダー MS
   /dev/sdd  内蔵カードリーダー SD
   /dev/sde  内蔵カードリーダー CF
   /dev/sdf  USBポートにさしたUSBメモリ・HDD等 1
   /dev/sdg  USBポートにさしたUSBメモリ・HDD等 2
    :

  ・20GB 版のデバイス (Fedora Core 5 起動時のもの)

   /dev/sda  内蔵HDD
   /dev/sdb  ブート用フラッシュメモリ
   /dev/sdc  USBポートにさしたUSBメモリ・HDD等 1
   /dev/sdd  USBポートにさしたUSBメモリ・HDD等 2
    :

 内蔵カードリーダーの分だけデバイス名がずれてます。

 この blog ではずっと外付け HDD が /dev/sdf として説明を書いてきましたが
 20GB 版では /dev/sdc になるようです。ご注意ください。

 kboot.conf や fstab も、デバイス名でなくちゃんと LABEL 指定で書いた方が
 良かったのかもしれません。

 内蔵無線LAN はまだ使えないみたいなので、上記デバイス名と HDD 容量以外に
 両者の違いはたぶん無いと思います。


● 20GB 版で本体 HDD に Fedora Core 5 が install できない

 これも 20GB 版を手に入れてみてはじめてわかったのですが、Linux への割り当て
 を最小にすると FC5 の install ができないようです。

 本体 HDD のフォーマットで「PS3に10GB割り当て」を行うと、その他のシステム側
 (Linux 側)が約 6GB になります。

 この状態で Fedora Core 5 のインストーラ( install-fc sda )を実行しても
 「Too small disk size to install Linux」と表示されてインストールできません。
 容量的には minimum を選べば大丈夫なはずなんだけど、インストーラの
 チェックの手抜きかもしれません。

 その他のシステムに 10GB 割り当てる設定だと大丈夫です。

 ちなみにこの状態で、外付け USB HDD ( 20GB モデルだと /dev/sdc ) には
 FC5 をインストールできました。


● パーティションが 6GB でも Linux インストールができるかどうか

 本体 HDD のフォーマットで「PS3に10GB割り当て」を行うとその他のシステム側
 容量がおよそ 6GB になります。この状態で Linux がインストールできるか
 試しました。

 ・Debian
   Debian Live CD から install してみました。インストールできました。
   ただし、途中のパッケージ選択画面で「デスクトップ環境」が出てきません。
   ウィンドウ無しになってしまうようです。
   (それでも gdm が起動しようとして最初エラーになりますが問題ないです)
   最小 install で 2.3G くらい。

 ・内蔵HDDは未使用のままにする
   内蔵 HDD を使わずに、外付けの USB HDD にインストールできました。
   FC5 で試しましたがたぶん Debian も ok でしょう。
   本体 HDD を swap にするのもいいかもしれません。


SB携帯、ホワイトプランにしてみた

手持ちの Softbank の携帯(V905SH) をホワイトプランにしてみました。
まだ申し込みしただけで、実際のコース変更の適用は 2/1 からみたいです。


●ホワイトプラン
http://mb.softbank.jp/mb/price_plan/3G/white_plan/index.html
・基本料金 980円
・ソフトバンク宛
  ・通話 1時~21時まで無料
  ・通話 21時~1時まで 21円/30秒
  ・メール無料
  ・通信 0.21円/パケット
・ソフトバンク以外宛
  ・通話は 21円/30秒
  ・メール・通信 0.21円/パケット

ソフトバンク宛通話は昼間はほとんど定額ですが、夜間とソフトバンクでない
携帯向け発信はかなり高いといわれています。


でも自分はもともと通話が少なかったので、基本料金重視で 3500円前後くらいの
プランに入ってました。

・旧ボーダフォンプラン
  ライトコールパック
   3675円
   8時~19時 21円/30秒、他社宛 26.25円/30秒
   19時~8時 31.5円/30秒
   無料通話 1050円

  バリューパック
   4095円
   7時~1時 21円/30秒
   1時~7時 15.75円/30秒
   無料通話 2100円

・ブループラン
   SSプラン
   3570円
   21円/30秒
   無料通話 1050円

・オレンジプラン(X)
   ライト
   3444円
   31.5円/30秒
   無料通話 630円

   エコノミー
   3969円
   21円/30秒
   無料通話 2100円

・ドコモ
  タイプSS
   3570円
   21円/30秒
   無料通話 1050円

・AU(WIN)
  プランSS
   3780円
   21円/30秒
   無料通話 1050円


なので調べてみると、21円/30秒 というのはこの価格帯だとあんまり以前と変わら
ずむしろお得なケースもあります。だけど考慮しないといけないのは、
他社宛の通話でも安くなる無料通話分を含んでいるかどうかです。
ホワイトは SB相手の通話では(時刻制限あるけど)限界無しの無料通話なのですが、
他社あてではこれが無くなってしまいます。
(※当初誤解を招く表現だったので修正させていただきました 1/13 17:07)

あと例えば以前のプランでも、もっと上ランクを選んで各種割引を付けると
この価格帯でも通話料は安くなります。基本料金に含まれている無料通話分も拡大
します。一応少しだけ調べてみました。高く感じるのはこういうプランとの比較
かもしれません。
(※当初誤解を招く表現だったので修正させていただきました 1/13 17:07)

・ドコモ
  タイプM
   6930円 (いちねん割 6237~5197円)
   14.7円/30秒
   無料通話 4200円

・AU(WIN)
  プランM
   6930円 (My割+年割 4400~3465円)
   14.7円/30秒
   無料通話 4252円

間違っていたらごめんなさい。

AU
DoCoMo
SoftBank


実は WILLCOM にも入ってます。しかもウィルコム定額プラン。(W-ZERO3[es])

・Willcom
  ウィルコム定額プラン
   2900円
   無料
   一般加入電話 10.5円/30秒
   携帯電話 13.125円/30秒
   無料通話無し


●まとめ

よって今までは、

2200円くらい + 2900円で
・相手が WILLCOM なら WILLCOM から発信 (無料)
・それ以外は無料通話を使い切るまで SoftBank から発信 (無料)
・無料通話を使い切ったら WILLCOM から発信 (10.5 or 13.125円/30秒)

だったのが、これからは「ウィルコム定額プラン」+「ホワイトプラン」なので

980円 + 2900円で
・相手が WILLCOM なら WILLCOM から発信 (無料)
・相手が SoftBank かつ 1時~21時までなら SoftBank から発信 (無料)
・上記以外は WILLCOM から発信 10.5 or 13.125円/30秒

となりました。
実際はメールとかデータ定額もあるのでもうちょっと複雑ですが。


結局は SB 向け通話が多いか、それ以外が多いかで決まる内容です。
自分の場合はもともと WILLCOM も契約していたので

  「月々 +980 円で 日中の SoftBank への通話が定額になる」

オプションにも追加加入したような感じで変えてみました。

これまでも通話相手が WILLCOM か SoftBank だったので、日中はほとんど定額です。
非常にお得になりそうです。

問題はそれ以外への発信がどれだけあるか。
果たして実際に使ってみて、他社向けにも適用される無料通話分が無く
なったことがどれだけ影響するか、これはまだ使ってみないとわかりません。
(※当初誤解を招く表現だったので修正させていただきました 1/13 17:07)


PS3 に Linux を入れる場合、必要になるのが HDD のパーティションを切ることです。
このとき HDD 内のゲームデータが消えてしまわないようにバックアップを取る
ことができます。

60GB クラスのバックアップが可能な USB 機器といえば外付けのハードディスク
くらいしか思い浮かびません。で、一番身近にあって意外に大容量なのが iPod 等の
HDD 系音楽プレイヤーだったりします。

早速試してみました


● iPod (80GB)

 http://www.apple.com/jp/ipod/ipod.html

 USB 接続で認識できました。
 PS3 のバックアップユーティリティでバックアップ&リストアも成功。

 FAT32 の制約上 4GB を超えるファイルは作れないので、バックアップデータ
 が巨大になると分割格納されるようです。
 今回のバックアップ容量は約 5GB だったので、おそよ 4G で分割されていました。

 ここの GAME Watch の記事には
  http://www.watch.impress.co.jp/game/docs/20061121/ggl.htm
  >>ファイルシステムの制限として、FATは4GB、FAT32は32GBまでしかPS3上でも
  >>認識しない。

 とありますがそんなことはないようです。
 80GB かつ FAT32 の iPod はきちんと認識されました。

 単に Windows2000/XP/Vista 標準のフォーマッタでは、32GB 以上の FAT32
 パーティションを作れないだけのようです。
 http://support.microsoft.com/kb/184006/ja
 (16KB のクラスタサイズまでしか対応してないのかもしれません)

 市販のフォーマットユーティリティを使えば 32GB 以上でも FAT32 でフォーマット
 できるのだそうです。また Linux のコマンドでもフォーマットできるみたいです。


● gigabeat S30 (30GB)

 http://www.gigabeat.net/mobileav/audio/manual/s-series/index_j.htm

 接続したところ、PS3 側で「不明なUSB機器が接続されました」と表示されて
 しまいます。
 もともとマスストレージモードが無くて Windows につないだ場合でも
 WindowsCE の ActiveSync みたいな認識のされ方でした。
 やはり Windows 以外での接続はむりみたいです。残念。


● GIGABEAT (5GB)

 http://www.toshiba.co.jp/about/press/2002_06/pr_j1701.htm

 こっちの古い GIGABEAT は使えました。
 容量が小さいけど、収まる容量ならバックアップも OK でした。
 時間がかかったのでリストアは未確認です。


●外付け HDD (80GB)

 USB の外付けの 3.5 インチ HDD を、Linux 上のコマンドを使って FAT32 で
 フォーマットしてみます。容量は 80GB です。
 作業は PS3 の Fedora Core 5 上で行いました。

 HDD 上のパーティションはあらかじめ Windows 上で全部削除しておきました。

 ※以下 USB の HDD が /dev/sdf で認識されていると仮定します。
 ※フォーマットなので中のデータは消えますのでご注意ください。
 ※表示される細かい数値は HDD によって異なります。

 (1) パーティション作成

  # /sbin/fdisk /dev/sdf

   ■パーティションテーブルが空っぽなのを確認
   Command (m for help): p [Enter]


   ■パーティション作成
   Command (m for help): n [Enter]

   p [Enter]

   Partition number (1-4): 1 [Enter]

   First cylinder (1-9729, default 1): [Enter]

   Last cylinder or +size or +sizeM or +sizeK (1-9729,default 9729): [Enter]


   ■タイプ変更 (W95 FAT32 に変更)
   Command (m for help): t [Enter]

   Hex code (type L to list codes): b [Enter]


   ■確認
   Command (m for help): p [Enter]

     Device Boot Start End  Blocks  Id System
     /dev/sdf1  1   9729  78148161 b W95 FAT32


   ■書き込み&終了
   Command (m for help): w [Enter]


 (2) フォーマット

  # /sbin/mkfs.vfat /dev/sdf1


 (3) 完了

  # /sbin/boot-game-os

 GAME-OS に戻って確認してみます。

 しっかりと認識されているようです。「USB機器(A)」
 空き容量は「74 GB」と表示されました。

 実際に バックアップユーティリティ でバックアップしてみました。
 リストアできちんと復元できています。成功です。

 だけど、そもそも Linux を入れるためのバックアップ手段だったので、
 これからはじめようとしてる人には微妙に本末転倒な感じがします。

 結局 60GB まるまる HDD を使ってる場合、GAME のインストールデータとか消して
 32GB 未満に収まるように整理するのが現実的かもしれません・・。



●リストアの注意

もう PS3 に何回 Linux の install を行ったのかわからないくらいなのですが、
過去に一度だけ、バックアップユーティリティのリストアが失敗したことが
あります。

http://donya.jp/everg/7.1/4547479510686/
こんな感じの IDE USB 変換ケーブルを使って HDD を直結しているので、
もしかしたらリストア中にケーブルに触ってしまったのかもしれません。

リストア中に致命的なエラーで終了すると、そのあとに HDDの再フォーマット
が入ります。この強制フォーマットはなんと内蔵 HDD を丸ごと消してくれます。

つまり他のシステムのためのパーティション分割を無視して、全体を GAME に
割り当てる設定に戻ってしまいます。そのためリストアの失敗によって他の
システム用の Linux 領域も消えてしまうこともありえますので十分注意してください。


今回何度もリストア実験したのですが、この貴重な経験をすっかり忘れてました。
あぶない あぶない。


ちなみに以前エラーになったときは、パーティション分割直後だったので
ダメージはありませんでした。もう一度実行したらリストアも成功しました。


Debian Live CD のインストーラが新しくなっているらしいので、
もう一度外付けの HDD に install しなおしてみました。(3度目!)
問題も直ってて良い感じです。


●想定しているインストール前の状態

・本体 HDD にはすでに Fedora Core 5 が入っています。
・USBのアダプタ経由で IDE HDD をつないでそこにインストールします。
・すでに Debian の Live CD (20070110版) が起動することを確認している

Debian Live CD の起動については
PS3 Linux Debianの Live CD が来た!」を参考にしてください。

前に Debian をインストールしたときにメモはこちら
PS3 Linux debian installメモ」です。


●インストール

(1) Debian Live CD (20070110) を挿入した状態で起動します。

kboot: というプロンプトが出たら「 install 」と入力します。

 kboot: install [Enter]

インストール中は画面モードがデフォルト(480i)になります。
TV 画面でもインストール可能です。


(2) 画面のメッセージに従ってインストール

インストーラは全部日本語で表示できるので簡単です。
最初の言語選択で「日本語」を選んでください。

インストーラは カーソルキーや [TAB] で選択します。
カーソルキーだけでは移動できない項目には [TAB] キーを使うので注意です。


 ★設定手順メモ
 ・インストーラの言語  日本語
 ・キーボード  日本(106キー)
 ・ホスト名入力
 ・ドメイン(無し、空欄)
 ・ミラー、日本
 ・アーカイブミラー、デフォルト(一番上)
 ・プロキシ無し、空欄
 ・パーテショナー
   ガイドのディスク全体を使うが簡単
   今回は外付け HDD にインストールするので sda ではなく sdf を選ぶ。
     sda = PS3 内蔵 HDD
     sdf = USB ポートにつないだ HDD

   「NewWorldブートパーティションは見つかりませんでした。~」
   が出たら「いいえ」

   「PowerPC PReP パーティションが見つかりませんでした。~」
   が出たら「いいえ」

 ・rootパスワード入力
 ・ユーザー名入力
 ・ユーザー用パスワード入力
 ・インストールカーネル選択 (1つしかないのでそれを選ぶ)
 ・インストールするソフトコレクションの選択
  今回はこれだけ選んだ (最初からデスクトップを入れてみる)
   * デスクトップ環境
   * ウェブサーバー
   * ファイルサーバー
   * 標準システム
 ・Samba のワークグループ Windowsに合わせる。任意
 ・WINS のための dhcp 設定書き換え はい
 ・X の解像度選択、どうせあとで変えるので適当
 ・インストール完了 再起動

手順を確実にするために、再起動ではなく一度ここで電源を切ります。



●起動の準備

(3) いちど電源切断する

 ・内蔵 HDD にも Linux (FC5等) が入っている場合はパーティションのラベルが
  競合するので初回の起動に失敗します。

 ・また、CD が入ったままだと CD 上の Live 版 Debian が起動してしまいます。

 なのでいったん電源を切って、外付けの USB HDD をはずしておきます。
 また CD も取り出したことを確認してから再び起動してください。


 もし内蔵 HDD にも特に Linux が入っていない場合や、内蔵 HDD そのものに
 Debian をインストールした場合は問題なく起動できますので
 (4)~(6) の手順はスキップしてください。


(4) いったん内蔵 HDD の FC5 を起動する

 外付け HDD を外して、さらに CD もとりだした状態で FC5 を通常起動します。

 ◎もし内蔵 HDD に FC5 等の Linux が入っていない場合はこの手順は
  必要ありませんので (7) に進んでください。

 ◎これは Dual Boot 環境にして、起動時に好きなディストリビューションを
  選択できるようにするための手順です。

   なぜ競合するかというと、内蔵 HDD の /dev/sda1 等にはすでに「/」という
   ラベルがついているのに、Debian をインストールしたパーティションにも
   同じ「/」ラベルがついてしまうからです。

   ※ちなみに YDL のインストーラは、HDD のラベルが競合しないように「/1」
    のように数値を追加してくれます。

   そのため /dev/sda1 の kboot.conf を読み込みつつ、root が /dev/sdf1
   という混乱がおきてしまいます。


 FC5 が起動したら、以後の作業のために root でログインしておきます。


(5) HDD のラベル書き換え

ここで外しておいた USB の HDD を取り付けてください。

認識には時間がかかるので 15 秒以上待ちます。
認識できたらコンソールにシステムのメッセージが出ます。

まず HDD のラベルを書き換えます。
以後 Debian の / が /dev/sdf1 にインストールされていると想定します。

 # /sbin/e2label /dev/sdf1 /2

YDL のインストーラに倣って、ラベルを「/2」に書き換えておきます。



(6) kboot.conf に Debian の起動設定を加える

次に Debian が起動できるように FC5 上で /etc/kboot.conf をこんな感じに
書き換えます。
(変数を使った kboot.conf のラベル設定は Debian Live CD を真似ました)

 # vi /etc/kboot.conf


default=fc5
timeout=30
root=LABEL=/

# fc5 (sda)
fc5='/dev/sda1:/boot/vmlinux-2.6.16 initrd=/dev/sda1:/boot/initrd.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"
fc51080p="$fc5 video=ps3fb:mode:5"

# debian (sdf)
debian='/dev/sdf1:/boot/vmlinux initrd=/dev/sdf1:/boot/initrd.img root=LABEL=/2 '
debian480i="$debian video=ps3fb:mode:1"
debian480if="$debian video=ps3fb:mode:129"
debian720p="$debian video=ps3fb:mode:3"
debian720pf="$debian video=ps3fb:mode:131"
debian1080p="$debian video=ps3fb:mode:5"


これで起動時に何もしなければ内蔵 HDD 上の Fedora Core 5 が起動します。
また、kboot: のコマンド行で次のコマンドを入力することによって好きな
画面モード& Debian の起動ができるようになります。

  fc5     Fedora Core 5 画面モード自動 (480i)
  fc5480i   480i オーバースキャン対応 TV 向け
  fc5480if  480i フルスクリーン
  fc5720p   720p オーバースキャン対応
  fc5720pf  720p フルスクリーン
  fc51080p  1080p

  debian   Debian 画面モード自動 (480i)
  debian480i
  debian480if
  debian720p
  debian720pf
  debian1080p

書き換えたら FC5 は終了して今度こそ Debian を起動します。

 # reboot

再起動後にまた kboot: 画面が現れたら、今度は「 debian 」と入力して下さい。
外付け HDD 側の Debian が起動します。

また、好きな画面モードを指定して「 debain1080p 」のように入力しても構いません。


※もし kboot.conf の書き換えに失敗して、fc5 とか debian と書いても起動し
 なくなったら

  kboot: の画面で直接カーネルを指定して起動できます。なので kboot.conf の
  記述にミスがあっても問題なく起動することができます。安心してください。

  例えば (ちょっと長いけど) こんな感じに書いて実行すれば、内蔵 HDD の
  FC5 が起動するはずです。

   kboot: /boot/vmlinux-2.6.16 initrd=/boot/initrd.img root=LABEL=/ [Enter]



●起動後の設定

(7) Debian 起動と X 設定

前回外付けドライブに install したときは、実は Fedora Core 5 の
パーティションのカーネルとイメージを流用していました。
そうしないと root に mount するドライブが /dev/sdd に割り当てられていて
起動時にエラーで止まってしまっていたからです。

今回の新しいインストーラではきちんと sdf 側のカーネル呼び出しで難なく起動
できました。


なお、せっかく起動したのですが、最初いきなり画面が出ずにエラーになります。

これは、インストール時に「デスクトップ環境」を入れたので gdm が起動
しようとしているのですが、xorg.conf の設定が済んでいないために
呼び出しているドライバが合わないからです。

しばらく待つとエラーが出てコンソールに戻りますが、CTRL + ALT + F1 を押して
直接コンソールに切り替えても良いです。

まず xorg の足りないファイルをインストールします。

 # apt-get update
 # apt-get install xserver-xorg-video-fbdev
 # apt-get install xserver-xorg-input-mouse
 # apt-get install xserver-xorg-input-kbd


次に xorg.conf を書き換えます。
Debian Live CD の X が 720p full 意外でもきちんと動いていたのでそれを
参考にします。


 # cd /etc/X11
 # mv xorg.conf xorg.conf-backup
 # cp xorg.conf-backup xorg.conf
 # vi xorg.conf


 ◎68行目あたり、Section "Device" の中を次のように変更します。

Identifier "Generic Video Card"
Driver "apm"
Option "UseFBDev" "true"

  ↓

Identifier "Generic Video Card"
Driver "fbdev"
Option "ShadowFB" "false"
Option "UseFBDev" "true"

  ・Driver の "apm" を "fbdev" に変更
  ・Option "ShadowFB" "false" を追加


 ◎86行目あたりの Section "Screen" の中に次の行を追加します。

DefaultFbBpp 32


これで X が起動できるようになります。
可能な人は Live CD の /etc/X11/xorg.conf をコピーしてきても OK です。

あらためて gdm を立ち上げます。

 # /etc/init.d/gdm restart

無事デスクトップ環境が使えるようになりました。

「 Option "ShadowFB" "false" 」が無いと、ps3videomode で fullscreen を
選択しないと同期が崩れたような画面になりきちんと表示されません。
これが原因だったんですね。
Fedora Core 6 でも同じような問題があるそうなので、もしかしてこれで直る
のかもしれません。
・「FC6の罠


(8) ps3pf_utils の install

 「PS3 の Debian で ps3ps_util を」では自前で作りましたが、
 何のことは無い、きちんとパッケージが用意されていました。(知らなかった)

 sources.list の先頭に書かれている http://ps3.keshi.org/debian のエントリを
 有効にします。

  # vi /etc/apt/sources.list

 「# deb http://ps3.keshi.org/debian ./」の行の先頭の # を削除する。

  # apt-get update
  # apt-get install ps3pf-utils

 これで ps3videomode や /sbin/boot-game-os が使えるようになります。



●まとめ

 起動時のドライブ認識も正常で、外付けドライブでもきちんと起動するように
 なって sdb もあるし、ps3pf-utils もあるし、さらに完成度が高まった感じが
 します。
 あとは Cell の SDK が欲しいところ。

 Live CD も簡単に作れるみたいなのでいろいろためせますね。
 USB メモリ起動とか。


Debian の Live CD が ほげめも さんのところから来ました!早速使ってみます。
これは CD-ROM から起動できる Linux です。
時間のかかる HDD インストール無しに起動できるので、
PS3 上で Linux の環境を簡単に体験することができます。
ほげめもDebian Live for PS3


●起動までの準備

(1) Live-CD の作成

 こちら から iso イメージをダウンロードします。
 今回は 20070110 の debian-live-ps3pf-20070110.iso を使いました。

 CD に iso イメージを焼きこめる環境が必要です。
 とりあえず WindowsPC などで iso イメージとして書き込みます。
 20070110 版の容量は 222M なので余裕で CD-R/RW に収まります。

 もしすでに FC5 等を install していて、ブートローダーの kboot が
 入っていれば、作業はこれでおわりです。


(2) kboot (otheros.bld) の install

 もし Linux インストールを行ったことが無くまだ kboot が入っていない場合は
 この作業が必要になります。

 「PS3 に Linux を入れるまでの手順」の (4)~(9) までの手順が必要です。

 今回は試していませんが、おそらく YDL の kboot (otheros.bld) でも大丈夫です。
 とりあえず起動するだけなら内蔵 HDD は使わないので、作成する Linux 用の
 パーティションは最小で大丈夫です。

 Linux 用パーティションを最小にする(GAME用領域を最大にする)には
  ・20GB モデル > 「PS3に10GBを割り当てる」 (約6.6GB)
  ・60GB モデル > 「他のシステムに10GBを割り当てる」 (約10.7GB)
 を選びます。
 (PS3 Linux FAQ を参考にさせていただきました)


●起動方法

作成した Live-CD を入れた状態で「他のシステム」を起動します。

具体的には GAME-OS で、本体設定の「優先起動システム」を「他のシステム」に
変更してから電源を入れなおします。

すでに Linux が入っている場合は普通の reboot で OK です。

画面が止まったように見えてもそのまま待っていてください。
そのうち勝手に起動します。簡単です。


このとき画面モードは次のようになります。

 ・HDMI 接続の場合> 480p
 ・HDMI じゃない場合> 480i

もし HD (ハイレゾ) で起動したい場合は次のようにしてください。

起動時に kboot: とプロンプトが出ている状態で次のコマンドを打ち込みます。
(一覧はこちら http://www.keshi.org/moin/moin.cgi/PS3/Debian/Live )

 live     (自動選択、デフォルト)
 yuv480i
 yuv480p
 yuv720p
 yuv1080i
 yuv1080p
 yuv576i
 yuv576p
 WXGA
 SXGA
 WUXGA

例えば D4 (720p) にするなら

 kboot: yuv720p [Enter]

ここで選択できる画面モードはオバースキャン前提なので、720p でも厳密に
1280x720 になりません。TV 画面に収まるように一回り小さくなります。


●日本語にする方法

デフォルトでは英語のデスクトップになります。
起動時の kboot: プロンプトで次のように指定して起動すると日本語になります。

デフォルト解像度の場合

 kboot: live locale=ja_JP.UTF-8 keyb=jp106

720pの場合(例)

 kboot: yuv720p locale=ja_JP.UTF-8 keyb=jp106


●終了の仕方

画面上のメニューから「Desktop」「Shut down」を選びます。
またはら「デスクトップ」「シャットダウン」です。

画面が止まって電源が切れないな、と思ったら何度か Enter を押してください。


●できること

この Live CD は最小構成なので、ブラウザ (Firefox ) のみのようです。
自分でカスタマイズした Live CD を作れるそうなので、日本語かつ
アプリケーションを追加した自分環境を作ることが可能でしょう。


●注意点

Live CD は CD-ROM から起動してお試しできる環境です。
HDD を必要としない代わりにディスクは RAMDISK なので、
電源を切ると消えてしまいます。



●まとめ

ubuntu のように、インストール無しに気軽に Linux を体験することができます。

が、アプリケーションが全く入っていないので、初心者が初めて Linux に触った
場合や、どんなことができるのか体験したい人には少々物足りないでしょう。

どちらかというと普段 FC5/YDL を使っていて Debian を試したい人、
または自分で Live CD を作成したい人にお勧めです。

この CD でそのまま HDD に Debian を PS3 に install することもできます。
インストールするには起動時の kboot: のプロンプトで install と入力します。
このときネットワーク接続が必要です。


やっぱり FC5 に比べると、ウィンドウ上でも軽快に使えるのがいいですね。
正直軽いです。
最初 Debian を入れたときは HDD ドライブの性能の違いかと思っていたのですが
別のドライブに入れた YDL も比較的軽くてそれなりに動作するし
同じ HDD に入れた FC5 デスクトップも速くならなかったので、
純粋に FC5 が重いだけかもしれません。

軽いといっても最新の PC のウィンドウに比べたら比較にならないのだけど、
FC5 が操作時に不可解な重さを感じることがあるのに対して、Debian はまだ
理解できる重さです。ぜひ試してみてください。

個人的には CELL 開発環境さえ動けば、あとは Debian を使いたいと思ってます。


カスタム kboot を作って簡単に書き込めることがわかったので、起動時の画面
モードをもっと何とかできないか調査しています。
カーネルのソースを見ていくと、

 drivers/video/ps3fb.c
  ps3fb_probe()

の中で最初の画面モードを設定していることがわかります。
モードは ps3fb_mode に入ります。この値の初期値は 0 ですが、

 ps3fb_init()

で ps3av_get_mode() を呼び出して画面モード値を取得しています。

もし起動時にカーネルオプション ( video=ps3fb:mode:3 とかのあれ) があれば、
その直後にオプションで指定された値で上書きします。

最初の kboot のブートローダー呼び出しではオプションは NULL でした。
なので ps3av_get_mode() の値が有効です。

この関数は

 arch/powerpc/platforms/ps3fp/ps3av.c

の中にあります。

ここでわかったのは、起動時にシステム側からモニタの設定らしき値を受け取って
いて、一応自動で画面モードを判定しているということ。

だとしたら GAME-OS 側で設定した条件にしたがって初回の画面モードを選ぶだけで
いいような気がします。
GAME-OS 側では「D端子/コンポーネント」の選択もあるし、さらに使用可能な
解像度も登録できます。この中で一番大きな解像度で表示されるのが理想です。

実際のコードを見ると、

・HDMI の場合
・HDMI じゃない場合 (AV MULTI)

の2種類の判定を行っています。

原則として HDMI の場合はデフォルトとして 480p を、それ以外の場合は
480i が選ばれるようです。(60/50Hz の区別もある)

得られる構造体パラメータを見ても、ヘッダのシンボルを見ても、どうも
「D端子/コンポーネント」の区別がつきません。デジタル と アナログ の
区別のみです。

使用可能な解像度の Bit 情報も受け取っていますが、値をダンプしてみても
実際にコードを書いて試してもうまくいきません。
HDMI じゃない場合 (AV MULTI の場合) はきちんと値が格納されていないようです。

もしかしたらこれは GAME-OS 側で設定した config の値ではなくて、
直接デバイスに問い合わせて得られるパラメータなのかもしれません。

もしそうなら、デジタルかつ新しい規格の HDMI ではモニタ側の情報がわかるけど、
D端子 や コンポーネントでは 区別できないのもなんとなく納得できます。


仕方ないのでとりあえず、画面モードの固定値を埋め込んでみます。

 kboot-20061208/kboot-10/linux-2.6.16/arch/powerpc/platforms/ps3fp/ps3av.c

の中の auto_videomode() の戻り値を好きな画面モードに書き換えた
otheros.bld を作ってシステムに登録すれば、最初の boot 画面からきちんと
ハイレゾで表示されることがわかりました。

具体的には auto_videomode() の一番最後の

 return (vid2table_id(vid) | dvi | rgb);



 return 3;
 
のように直接値にしてしまいます。これで最初から 3 = 720p になります。
固定値なので解像度ごとに otheros.bld を作らないといけないですね。

other-os-flash-util で書き込んでいるフラッシュメモリの空き領域を使って、
どこかに画面モード値を埋め込んでおけばいいのかもしれません。


otheros.bld (kboot) のコンパイル方法は前回の記事
PS3 Linux カスタム kboot を作る」の手順どおりです。

一度 make した後にまたカーネルだけ再コンパイルする場合は、

 kboot-10/root-meta/installed/linux

を先に消しておく必要があります。例えば今回は、こんなスクリプトを書いて
build &テストをしていました。

   rm kboot-10/root-meta/installed/linux
   make
   gzip -9c kboot-10/linux > otheros.bld


できた otheros.bld をシステムにインストールするには、さらに

 # /sbin/other-os-flash-util -B -g /dev/sdb otheros.bld

を実行します。
(注意点は「PS3 Linux カスタム kboot を作る」を参照にしてください)

PS3 Linux で kboot をハイレゾにする
PS3 Linux カスタム kboot を作る

と来て、3度目の挑戦でようやく本当のハイレゾ kboot になりました。


ハイレゾ対応版kbootを作ります。
前回外付け USB HDD からの起動で、インストールされている kboot (otheros.bld)
の違いで少々はまりました。
また Linux のブートローダーである kboot は常に 480i で起動します。
kboot.conf に書いておけば kboot から呼ばれたカーネルは任意の画面モード
で起動しますが、その選択画面である kboot: コマンドラインはいつも 480i です。

これ、PCモニタなど 480i で表示ができない環境を使っていると結構困ります。

・Linux インストールのためだけに TV が要る
・起動ドライブや起動するディストリビューションの選択ができない

なので自前の kboot を作ってみることにしました。

rpm のインストールが必要なので、今回は build 環境として Fedora Core 5 を
使います。



(1) ppu-gcc の install

kboot の build に必要なので ppu-gcc をインストールします。
PS3 の Cell 開発環境を入れてみる」で入れた spu-gcc と要領は同じです。

http://www.bsc.es/plantillaH.php?cat_id=252
まずこちらから ppu-gcc 一式をダウンロードします。
PowerPC(ppc) 上で動作する ppu 向けのバイナリパッケージを選択します。

ppu-binutils-3.3-72.ppc.rpm
ppu-gcc-3.3-72.ppc.rpm
ppu-gcc-c++-3.3-72.ppc.rpm
ppu-gdb-3.3-72.ppc.rpm

上記パッケージを必ずこの順番でインストールします。

 # rpm -ihv ppu-binutils-3.3-72.ppc.rpm
 # rpm -ihv ppu-gcc-3.3-72.ppc.rpm
 # rpm -ihv ppu-gcc-c++-3.3-72.ppc.rpm
 # rpm -ihv ppu-gdb-3.3-72.ppc.rpm


(2) kboot のソースの準備

kboot のソースはいつもの ADDON CD に含まれています。
FC5 のインストールに使ったやつです。
ftp://ftp.uk.linux.org/pub/linux/Sony-PS3/
CELL-Linux-CL_20061208-ADDON.iso

この中の \src から kboot-20061208.tar.bz2 を任意のフォルダにコピーします。

PS3 Linux は何度も再起動したりしてるので、最近は Windows PC から putty
経由でアクセスして作業しています。なのでファイルもいつも Windows で
落としてから samba で PS3 にコピーしています。
(PS3 Linux をサーバーにしてみる)


(3) kboot (otheros.bld) の build

展開して build してみます。

 # tar -jxvf kboot-20061208.tar.bz2
 # cd kboot-20061208
 # make

HDD があふれました・・。Linux 用に 10G しか割り当てておらず、
しかも FC5 をフルインストールしたので空きが足りなかったようです。
外付けの HDD ドライブ上にソースを移してもう一度 make します。

カーネルごとコンパイルなのでかなり時間がかかりますが、
今度は特に問題も無くコンパイルが通りました。

ぽちネット さんの こちら の記事によると、kboot-10/linux が
otheros.bld そのものだそうです。参考にさせていただきました。

kboot の root イメージは kboot-10/root に入っています。
kboot 時に実行されるスクリプト init は、kboot-10/scripts/kboot にありました。


(4) kboot のカスタマイズテスト

まず YDL 版 kboot のように、kboot: 上でも ps3videomode を使えるようにします。
そもそも kboot には ps3pf_util が含まれていて、kboot-10/ps3pf_utils-1.0.1
の中にはちゃんと ps3videomode もできています。

これを root にコピーするように手を加えます。
コピーしているのは Makefile の中です。

 # vi kboot-10/Makefile

  □1556行目、boot-game-os の後ろに ps3videomode も付け加えます。

      cp $(PS3PF_UTILS_DIR)/{find-other-os-flash,other-os-flash-util,boot-game-os} $(PWD)/root/sbin

         ↓

      cp $(PS3PF_UTILS_DIR)/{find-other-os-flash,other-os-flash-util,boot-game-os,ps3videomode} $(PWD)/root/sbin


  □512行目にも boot-game-os があるので、同じように ps3videomode を加えます。

    "$$FILE" = "root/sbin/boot-game-os" -o \
    "$$FILE" = "root/sbin/ps3videomode" -o \



root-meta/installed からから 0byte のファイル ps3pf_utils を消します。

 # rm kboot-10/root-meta/installed/ps3pf_utils


scripts/kboot に ps3videomode の呼び出しを追加してみます。
これで「PS3 Linux で kboot をハイレゾにする」に書いたように、
いちいち kboot.conf に ps3videomode の起動を書かなくてすみます。

 # vi kboot-10/scripts/kboot

  □87行目あたり、PATH の設定のあとに追加してみる

    ps3videomode -v 3

  (ここでの設定は 3 = 720p なので、TV 等 480i の方はこの行を追加しないで
  ください)


これでもう一度 make します。

 # make

できたら otheros.bld に変換します。(gzip してリネームするだけ)

 # cp kboot-10/linux .
 # gzip -9 linux
 # mv linux.gz otheros.bld

これで自分だけの kboot (otheros.bld) ができました。


(5) otheros.bld の install テスト

正規の手順で otheros.bld をインストールするのは結構面倒です。

USB メモリや SD カードなどに書き込んでから、一旦 GAME-OS に戻って
メニューから実行する必要があります。
しかもいちいちコントローラを USB の有線接続しなければなりません。

前回「PS3 の Debian で ps3ps_util を」で Linux (Debian) 上から
ブートローダの書き込みを試しましたが見事に失敗しました。
でもせっかくだからもう一度挑戦します。今度は FC5 上からやります。

先に /sbin/find-other-os-flash を実行して、必ず /dev/sdb と表示されることを
確認してください。

 # /sbin/find-other-os-flash

ここで何も表示されなければドライバがきちんと読み込まれていない可能性があります。

書き込みの実行はこんな感じです。

 # /sbin/other-os-flash-util -b -g /dev/sdb otheros.bld

うまくいったら reboot してみます。


(6) とりあえず成功

今回は Linux 上からのブートローダーの書き込みがうまくいきました。
kboot: が表示される直前に、きちんと 720p になっています。
またこれでこれでいちいち otheros.bld の書き込みのために
GAME-OS に戻る必要がなくなりました。

もちろん試す場合は自己責任でお願いします。

もし otheros.bld の書き込みに失敗した場合、起動できなくなった場合は
次の手順に従ってください。

1. 電源も切れず何もできなくなったら、本体裏の電源スイッチを切る
2. 30秒以上待ってから本体後ろの電源スイッチを入れる
3. 前面にあるドライブの前の電源ボタンを、7秒くらい押しっぱなしにして
   電源を入れる。(音がするので指を離すタイミングがわかる)

これで強制的に GAME-OS で起動します。このとき画面モードは 480i になります。

GAME-OS 上で正常に動作する方の otheros.bld を入れなおしてください。



今回作った otheros.bld のスペックはこんな感じです。

 ・動作は FC5 版 (ADDON CD版) と同じで、常に sda1 の kboot.conf を読み込む
  (YDL 版のように全ドライブの kboot.conf をマージしない)

 ・基本的に FC5 版 (ADDON CD版) と同じ。install-fc コマンドも入ってる。

 ・YDL 版の kexec のように ps3videomode が含まれているので、kboot:
  プロンプトやそこから shell に降りた状態で画面モードを切り替えられる。

 ・ついでに起動時に勝手に好きな画面モードにしてしまう。


これで 480i 表示できない環境でも、FC5、Debian、YDL 等を kboot で選択して
切り替え起動できるようになりました。
画面モード設定はもう少し融通が利くように改善したいところです。


Debian でも ps3videomode や boot-game-os が無いとやっぱり不便なので
作っておきます。
ソースは ADDON CD CELL-Linux-CL_20061208-ADDON.iso に含まれています。
ftp://ftp.uk.linux.org/pub/linux/Sony-PS3/

(1) ADDON CD の \src の中身をコピーしておく

 ps3pf_util とカーネルのソースが必要

(2) ソース展開

 とりあえず手作業で

 $ rpm -i ps3pf_utils-1.0.9-3.src.rpm
 $ tar -jxvf /usr/src/rpm/SOURCES/ps3pf_utils-1.0.9.tar.bz2
 $ tar -jxvf ../linux-20061208.tar.bz2

(3) Makefile 修正

  Makefile の CFLAGS に -I../linux-20061208/include を追加

 $ cd ps3pf_utils-1.0.9
 $ vi Makefile

こうなる
CFLAGS = -O2 -Wall -W -Wstrict-prototypes -I../linux-20061208/include


(4) build と install

 $ make
 $ su
 # make install

これで FC5 環境同様に

/usr/bin/ps3videomode
/sbin/boot-game-os

が使えるようになります。

また、一緒にインストールされる other-os-flash-util を使うと、
フラッシュメモリの設定を表示したり書き換えができるようになります。

 # /sbin/other-os-flash-util -s `/sbin/find-other-os-flash`

version: 0x00000001
offset1: 0x00000002
offset2: 0x00000004
boot loader format: 0x00000001 : gziped
boot loader size : 0 : whole of area
boot flag: 0x00000001 : boot linux
num_params: 3
param_data0: 00 00 00 00 38 6d 43 74 00 00 ff ff ff ff ff ff
rtc_diff : 946684788
video_mode : 0x00 : NTSC
controller : 0x00 : O button means yes
param_data1: 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff
Static IP : 0.0.0.0
Network Mask : 0.0.0.0
Default Gateway : 0.0.0.0
param_data2: 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff
DNS Server 1 : 0.0.0.0
DNS Server 2 : 0.0.0.0

FC5 環境では /dev/sdb がフラッシュデバイスです。
容量は 4Mbyte でした。
このコマンドでブートローダーの書き込みもできるようです。
が、ためしに書き込んでみたら起動しなくなりました・・。
電源長押しの強制復帰+他のOSインストーラの再実行で一応元に戻りました。


PS3 Linux を外付け HDD から起動するまとめ」 で
kboot の kboot.conf の読み込み挙動が把握できなかった点について原因が
わかりました。install した otheros.bld によって、kboot の動作が異なって
いるのが原因でした。

・FC5 版 (ADDON CD) の otheros.bld
  /dev/sda のみ参照

・YDL 版 otheros.bld
  各ドライブの /etc/kboot.conf を集めてマージ

kboot起動時に /init を読むと __read_fstab() の動作が異なっていることが
わかります。

とりあえず sda の kboot.conf 固定にしたいので、sdf の kboot.conf は削除
しておくことにします。

kboot のソースは ADDON CD に含まれているようです。


Debian(Etch)、Fedora Core 5、Yellow Dog Linux と、3種類ほど
外付けドライブにインストールしてみました。
で、はまった点とか書いてみます。

内蔵HDD (sda) へのインストールだと特に問題がなくても、外付け HDD に
install すると不具合が出ることがあります。


●外付けドライブにインストールはできるが起動できない

OSインストールはできるけど、起動時に root を mount できずに boot が
途中で止まってしまうことがあります。
これは root になるべきドライブが認識される前に mount しようとするのが
原因のようです。FC5 では問題が起こらないので、これをお手本にして initrd
の init スクリプトに手を加えるとなんとかなります。
(http://www.devdrv.co.jp/linux/cpio-initrd-format.htm を参考にしました)

・/boot の initrd*.img をコピー (ファイル名は環境依存)

 # cp /boot/initrd*.img .
 # mkdir image
 # cd image
 # zcat ../initrd*.img | cpio -i -c

・init の修正

 mkblkdevs と mkblkdevs の間にドライバ読み込みと認識待ちの sleep を追加。
 追加する内容は FC5 の init を参考にする。
 さらにこの中で読み込んでいる module を lib フォルダに入れておく。

・新しい initrd の作成

 # find . | cpio --quiet -c -o | gzip -c > ../initrd-new.img


kboot.conf の指定で新しい initrd-new.img を読み込むように手直しします。

initrd.img の修正が手間な場合は、実は FC5 の initrd.img をそのまま使っても
たいていうまくいきます。FC5 の initrd.img は ADDON CD の \target に入って
いるので、これを HDD にコピーして使えます。


●kboot.conf がどこから読み込まれるか

基本的に内蔵 HDD sda でラベル '/' がついたパーティションがあるとそこから
読み込まれます。なので、外付け HDD にインストールした場合でもそのカーネル
呼び出しの設定を sda 側の /etc/kboot.conf に追加する必要があります。

この辺の挙動はまだ完全に把握していないのですが、ごくまれに違うドライブの
kboot.conf も読み込まれていることがあります。
ADDON CD の HowToEnableYourDistro.html に書いてある通りにも必ずしもなら
ないことがあるし。もしかしたら認識順も影響するのかもしれません。

メモリカードとか使って kboot.conf の読み込み位置を固定した方がいいのかも
しれません。


PS3 の HD 画面を PC モニタに映すために、
・PS3 を PCモニタに無理やりつなぐまで
・PS3を繋いだPCモニタ画面
・PS3 Linuxの画面を広く使う
こちらで紹介した「YPbPr to RGBHV VGA Box」を使っています。
モニタは UXGA 1600x1200 の EIZO FlexScan L887 です。
(モニタとの相性も結構あると思います)

いままで 1080p (D5) がだめで 720p (D4) を使ってましたが、Linux だとぎりぎり
1080p で描画できることがわかりました。

それぞれのモードでの画面はこんな感じです。

○ D4 720p オーバースキャン 1124x644 (ps3videomode -v 3)


○ D4 720p フルスクリーン 1280x720 (ps3videomode -v 131)


○ D5 1080p オーバースキャン 1688x964 (ps3videomode -v 5)


× D5 1080p フルスクリーン 1920x1080 (ps3videomode -v 133)


D5 1080p のフルスクリーンだと同期が崩れてかなりノイズが入ります。

なぜか同じ 1080p でも PS3 Linux のモード 5 (オーバースキャン 1688x964) だと
同期が取れてきちんと表示できます。
VGAケーブルは L887 付属のものをそのまま使用しています。

残念ながらゲーム画面 (GAME-OS) は常にフルスクリーン相当なので全くだめでした。

ちなみにモニタの解像度は 1600x1200 なのでそもそも 1920pixel も出ません。
オーバースキャンでも 1688pixel あってさらに画面中央部に収まっているので、
実際は画面が若干縮小されています。
つまりモニタの画素とは 1対1 ではなくてアスペクト比も違っています。

だけどこれだけ画面の広さに差があるので使いやすくなりました。


今はこんな感じで繋いでますが、

[PS3] - コンポーネント - [YPbPr to RGBHV VGA Box] - VGA - [L887]

これだと 480i (D1) の表示ができないので、Linux Install の ためだけ にとうとう
VABOX2 も入手してしまいました。ゲームだけやってる分にはいらないんだけど・・

[PS3] - コンポジット - [VABOX2] - VGA - [L887]


YDL (Yellow Dog Linux) 動きました。外付けの USB HDD からの起動です。
PS3 の内蔵 HDD にはすでに Fedora Core 5 が入っているので、
これを消さないように YDL と共存させています。
どちらを起動するのかは boot 時に選択することができます。



ちなみに使っている外付け USB HDD は
http://donya.jp/everg/7.1/4547479510686/
こんな感じの IDE + USB アダプタです。


●PC 上で作業

(0) 参考ページ

 http://cell.fixstars.com/ps3linux/index.php/Yellow_Dog_Linux_for_PS3


(1) YDL ダウンロード

 http://www.terrasoftsolutions.com/resources/ftp_mirrors.shtml
 この辺から DVD 用の iso イメージをダウンロードしてメディアに焼いておきます。
 yellowdog-5.0-phoenix-20061208-PS3.iso

 同時に iso と同じ場所にある otheros.bld もダウンロードします。


(2) ブートローダのインストール準備

 FC5 の場合 ( http://ch09144.kitaguni.tv/e327222.html )
 と同じ手順でブートローダをインストールします。

 http://www.playstation.com/ps3-openplatform/jp/manual.html
 ここから otheros.self をダウンロードして USB メモリの
 \PS3\otheros に入れます。

 同じフォルダに (1) でダウンロードした otheros.bld も入れます。
 ファイル名が同じですが、FC5 のときに ADDON CD から取り出した otheros.bld
 とは別物です。
 FC5 のインストールですでに準備してある場合でも、もう一度作り直す必要が
 あります。

  \PS3\otheros\otheros.self
  \PS3\otheros\otheros.bld

 USBメモリでなくても PS3 で認識できるメディアなら何でもかまいません。


●PS3 上での作業

(3) 内蔵 HDD の準備

 GAME OS を起動しておきます。

 今回の YDL install は本体 HDD に FC5 が入っていることが前提なので、
 すでに PS3 のパーティションは切ってあるものとします。

 FC5 のインストールやパーティション分割については
 http://ch09144.kitaguni.tv/e327222.html
 こちらの手順を参考にしてください。

 外付け HDD への install であっても、本体の HDD を分割しておかないと
 他のシステムのインストールができません。


(4) 他のシステムのインストール

 用意した USB メモリを PS3 に差し込んでから

  設定 → 本体設定 → 他のシステムのインストール

 を実行します。もちろん USBメモリでなくても PS3 で認識できるメディアなら
 何でもかまいません。


(5) kboot 起動

  設定 → 本体設定 → 優先起動システム → 他のシステム

 設定したら電源を切ってから入れ直します。

 ここでいったん画面モードが 480i になるので、PC モニタなど 480i の
 表示ができないディスプレイを使っている場合は注意してください。

 起動の前に
 ・PS3 に USB キーボードとマウスを忘れずにつないでおいてください。
 ・インストールする外付けの USB HDD も先に接続しておきます。
 ・(1) で作った YDL の DVD を挿入しておきます。


(6) YDL インストール

 kboot: のプロンプトが出たらすぐに「 install 」と入力します。

 内蔵 HDD に FC5 が入っている場合、ここで読み込まれているのは
 /dev/sda1 の kboot.conf です。
 なので [TAB] キーは使えません。

 おそらく timeout が 10秒になっているので黙っていると FC5 が
 起動してしまいます。

 YDL のインストーラは 720p で起動するので、今度は 720p 以上が表示できる
 モニタが必須です。必要ならモニタをつなぎ変えてください。

 SD のまま実行できるテキストインストーラもありますが、
 こちらはインストール後もウィンドウ環境にならないので今回は見送ります。


(7) インストーラ

 日本語を選択できるので、表示されるメッセージにしたがっていけば簡単です。

 Partitioning Type の選択では
 「Remove all partitions on selected drives and create default layout.」
 を選びます。

 インストール先を聞かれるので sdf にします。(sda のチェックを外す)

 このあと root パスワードなど必要な情報を入力します。

 しばらくして開始の確認ダイアログが出るので後はじっと待ちます。

 DVD メディアがイジェクトされて完了画面が出たら、メッセージにしたがって
 そのまま再起動します。


(8) 一度 FC5 を起動する

 再起動後再び kboot: の画面になったら YDL をインストールした USB HDD を
 外しておきます。そのまま内蔵 HDD の FC5 を起動します。

 kboot では常に /dev/sda1 の kboot.conf が読み込まれるので、
 YDL 用の設定追加が必要です。


 内蔵 HDD から FC5 が起動したら USB HDD を再び取り付けて mount します。
 YDL のパーティション分割をインストーラに任せた場合 /dev/sdf2 が root に
 なっているはずです。

  # mkdir /mnt/usbhdd
  # mount /dev/sdf2 /mnt/usbhdd


(9) kboot.conf の設定をマージする

 内蔵 HDD 上の FC5 と YDL を起動時に選択できるように sda1 の
 kboot.conf を書き換えます。

  # vi /etc/kboot.conf

 具体的には /etc/kboot.conf に YDL の kboot.conf の起動設定を加えます。
 YDL の kboot.conf は (8) の手順で mount した場合
 /mnt/usbhdd/etc/kboot.conf としてアクセスできます。

 下記は設定した /etc/kboot.conf の例です。


default=fc5
timeout=30
root=LABEL=/

fc5='/boot/vmlinux-2.6.16 initrd=/boot/initrd.img root=/dev/sda1 video=ps3fb:mode:1'
fc5720p='/boot/vmlinux-2.6.16 initrd=/boot/initrd.img root=/dev/sda1 video=ps3fb:mode:3'
fc51080i='/boot/vmlinux-2.6.16 initrd=/boot/initrd.img root=/dev/sda1 video=ps3fb:mode:4'
fc51080p='/boot/vmlinux-2.6.16 initrd=/boot/initrd.img root=/dev/sda1 video=ps3fb:mode:5'

ydl='/dev/sdf1:/vmlinux-2.6.16-20061110.ydl.2ps3 initrd=/dev/sda1:/boot/initrd.img root=/dev/sdf2 init=/sbin/init video=ps3fb:mode:3 rhgb'

ydl480i='/dev/sdf1:/vmlinux-2.6.16-20061110.ydl.2ps3 initrd=/dev/sda1:/boot/initrd.img root=/dev/sdf2 init=/sbin/init video=ps3fb:mode:1 rhgb'
ydl720p='/dev/sdf1:/vmlinux-2.6.16-20061110.ydl.2ps3 initrd=/dev/sda1:/boot/initrd.img root=/dev/sdf2 init=/sbin/init video=ps3fb:mode:3 rhgb'
ydl1080i='/dev/sdf1:/vmlinux-2.6.16-20061110.ydl.2ps3 initrd=/dev/sda1:/boot/initrd.img root=/dev/sdf2 init=/sbin/init video=ps3fb:mode:4 rhgb'
ydl1080p='/dev/sdf1:/vmlinux-2.6.16-20061110.ydl.2ps3 initrd=/dev/sda1:/boot/initrd.img root=/dev/sdf2 init=/sbin/init video=ps3fb:mode:5 rhgb'
ydltext='/dev/sdf1:/vmlinux-2.6.16-20061110.ydl.2ps3 initrd=/dev/sda1:/boot/initrd.img root=/dev/sdf2 init=/sbin/init 3'


 ここで書き換える場合の注意点がいくつかあります。

 ・YDL のデフォルトは 480i ではなく 720p になっています。
 ・YDL の起動時に参照する initrd.img は、必ず FC5 のものを使ってください。

   上記の設定例の場合もともとの YDL の kboot.conf では

     initrd=/dev/sdf1:/initrd-2.6.16-20061110.ydl.2ps3.img

   だったものを次のように置き換えています。(sdf1 → sda1 に注意)

     initrd=/dev/sda1:/boot/initrd.img


(10) YDL 起動

 kboot.conf の書き換えが終わったら reboot コマンドで再起動します。

  # reboot


 起動しなおして kboot: プロンプトになったら、[TAB] やキー入力で ydl を
 選択します。

 上の例の場合、YDL を 720p で起動するなら ydl と打ち込みます。

  kboot: ydl

 他にも、ydl480i ydl720p ydl1080i ydl1080p を選択できます。

 もし YDL ではなく FC5 を起動したい場合は kboot: で fc5 と入力してください。
 この場合 480i で起動します。他にも fc5720p fc51080i fc51080p の選択が
 できます。



外付けドライブからの起動では、FC5 の initrd.img を使うのがポイントです。
YDL の initrd-2.6.16-20061110.ydl.2ps3.img を使うと起動時にエラーで
止まってしまいます。

YDL の initrd 内の nash のスクリプトでは USB のドライバ組み込みや
起動待ちが入っていないので、外付けのドライブを root ファイルシステム
として認識できないからです。

それ以外の内容は FC5 の initrd.img とほとんど一緒です。


ブート時の kboot: 画面はいつも SD (480i) です。
ここで起動するカーネルの選択等ができるのですが、
PC モニタなど 480i に対応していない環境では困ることがあります。
画面に何も映らないので結局 timeout を待つ羽目に。

そこで、kboot.conf の先頭に

 ps3videomode -v 3

等と書いておくと kboot: プロンプトでも HD に切り替えることが可能です。
(3 は 720p のオーバースキャンの場合)
だけど kboot: プロンプトが出るまでの画面はやっぱり SD です。
timeout 時間は長めにしておいた方が安心です。

例えばこんな感じ
(131 は 720p のフルスクリーン http://ch09144.kitaguni.tv/e327416.html)


ps3videomode -v 131
default=linux
timeout=30
root=LABEL=/

linux='/boot/vmlinux-2.6.16 initrd=/boot/initrd.img video=ps3fb:mode:131'



2007/01/09 追記
kboot: で ps3videomode が使えるのは YDL 版の otheros.bld を install
した場合だけでした。FC5 版のままでは有効になりません。ごめんなさい。


インストール時にデスクトップ環境を入れなかったので後から設定してみました。


◎ X のインストール

 パッケージをインストールします。画面モードの選択がありますが、
 あとで書き換えるので適当でよいです。

  # apt-get install xorg
  # apt-get install xserver-xorg-video-all
  # apt-get install xserver-xorg-input-all


◎ xorg.conf の書き換え

 設定ファイルを書き換えます。

  # cd /etc/X11
  # mv xorg.conf xorg.conf-backup
  # cp xorg.conf-backup xorg.conf
  # vi xorg.conf

 ・「Section "Device"」の Driver を "fbdev" にします。

  Driver "fbdev"


 ・「Section "Screen"」を次のように書き換えます。

  Identifier "Default Screen"
  Device "Generic Video Card"
  Monitor "Generic Monitor"
  DefaultDepth 24
  DefaultFbBpp 32
  SubSection "Display"
   Viewport 0 0
   Depth 24
  EndSubSection


 これで一応 startx できるようになりました。起動すると xterm が1つ。


◎GNOME install

 設定がうまくいったので GNOME 入れます。

  # apt-get install gnome

 ps3videomode が動かないので、画面モード変更は kboot.conf で行います。
 /dev/sda1 の /etc/kboot.conf 側で画面モードの設定をします。

 うちは 720p なので、3 + 128 = 131 に設定しています。

default=debian720
timeout=20
root=LABEL=/

debian='/boot/vmlinux-2.6.16 initrd=/boot/initrd.img '
debian480='/boot/vmlinux-2.6.16 initrd=/boot/initrd.img video=ps3fb:mode:129'
debian720='/boot/vmlinux-2.6.16 initrd=/boot/initrd.img video=ps3fb:mode:131'


 ケーブル繋ぎ変えて再起動。
 720p で起動し、gdm でログインできるようになりました。


◎日本語入力等

  # apt-get install scim-anthy

あとはウィンドウ上で各種設定など。


USB の外付け HDD に Linux を install してみました。
内蔵 HDD には Fedora Core 5 が入ったままなので切り替えて試しています。
外付けの方には Debian(etch) を入れてみました。

やった手順のメモ


(1) FC5 install
 内蔵 HDD への install 手順は下記ページに書いたものそのままです。
 http://ch09144.kitaguni.tv/e327222.html

 kboot: で入力できる install-fc コマンドは、HDD のパーティションが
 からっぽでないとうまく動かないので注意です。

 すでに一度内蔵 HDD にインストールしたことがある場合、
 kboot: で「sh」とタイプして shell に降りてから fdisk でパーティションを
 削除しておくとうまくいきます。

  kboot: sh
  # fdisk /dev/sda


(2) 外付け HDD に PS3 Linux install
 http://ch09144.kitaguni.tv/e332153.html
 こちらに書いた手順そのままです。
 外付け HDD が /dev/sdf で認識されていたので、パーティションを切るときに
 /dev/sdf を選択します。


(3) 再起動時の注意
 (2) の install が完了し、再起動する場合は注意が必要です。

 最初の kboot は内蔵 HDD (/dev/sda) 側のものであり、こちらの設定
 (/dev/sda1 の /etc/kboot.conf) が参照されます。

 ところがここから起動をかけると USB HDD 側 (/dev/sdf1) が root として
 mount されます。

 つまり FC5 側 HDD のカーネルで Debian 環境が起動します。
 もちろん USB HDD をはずしておけば常に内蔵 HDD 側 (FC5) が root です。


(4) kboot での選択
 内蔵 HDD 側の kboot.conf を次のように書き換えています。
 kboot: 画面で [TAB] を押すごとに debian → fc5 → linux のように
 選択できます。

default=linux
timeout=20
root=LABEL=/

linux='/boot/vmlinux-2.6.16 initrd=/boot/initrd.img '
fc5='/boot/vmlinux-2.6.16 initrd=/boot/initrd.img root=/dev/sda1'
debian='/boot/vmlinux-2.6.16 initrd=/boot/initrd.img root=/dev/sdf1'


解像度も選択できるようにするとこんな感じでしょうか。

default=linux
timeout=20
root=LABEL=/

linux='/boot/vmlinux-2.6.16 initrd=/boot/initrd.img '
fc5='/boot/vmlinux-2.6.16 initrd=/boot/initrd.img root=/dev/sda1'
fc5480='/boot/vmlinux-2.6.16 initrd=/boot/initrd.img root=/dev/sda1 video=ps3fb:mode:129'
fc5720='/boot/vmlinux-2.6.16 initrd=/boot/initrd.img root=/dev/sda1 video=ps3fb:mode:131'
debian='/boot/vmlinux-2.6.16 initrd=/boot/initrd.img root=/dev/sdf1'
debian480='/boot/vmlinux-2.6.16 initrd=/boot/initrd.img root=/dev/sdf1 video=ps3fb:mode:129'
debian720='/boot/vmlinux-2.6.16 initrd=/boot/initrd.img root=/dev/sdf1 video=ps3fb:mode:131'

これはたまたまうまくいっていますが、USB HDD は環境によっては sdf にならない
こともあると思うのでご注意ください。


gigabeat S30 はミニUSBも充電用の端子も一般的なもので、
W-ZERO3 や PSP と同じケーブルが使えました。
おかげで箱から出したのは本体と CD-ROM だけです。
これは便利ですね。旅行でも持っていくものが減らせます。
ちなみに USB 端子からも充電できるので、
W-ZERO3/PSP のように2又のケーブルで両方つなぐ必要はありませんでした。

PC とのデータ同期には Windows Media Player を使います。
XP では何もせずにつなぐと最初認識に失敗しました。
付属の CD-ROM からプレイヤーのインストールが必要なようです。
Vista では特に何もしなくても USB ケーブルでつなぐだけで認識しています。

接続中は PC の Explorer からデバイス自体を直接アクセスできますが、
一般的な USB のマスストレージモードとは少々違います。
ドライブ名は割り当てられずに Explorer 上の操作も制限があります。

「ハードウエアの安全な取り外し」も特に必要ないし
ちょうど WindowsCE デバイスを ActiveSync でつないだ状態と同じです。
gigabeat も中身は WindowsMobile なので、この辺は全く一緒みたいです。

全体的に Vista の方が OS との親和性が高くてデバイス上のファイルも
アクセスしやすいようです。

WindowsVista 上で Windows Media Player を起動するとデバイスの登録画面が
あらわれます。デバイス名を確認して OK するだけで同期登録完了です。
PC 上の「ピクチャ」「ビデオ」「ミュージック」が勝手に同期されて
しまってちょっとあせりました。(XP の マイ~ に相当する)
この辺は Vista の「同期センター」を起動するとパートナーシップの管理や
同期の設定ができます。


左から順に
初代GIGABEAT、初代の中の1.8インチHDDカード、iPod80G(5G)、gigabeat S30、iPod nano


S30 本体の操作ボタンは前面と右側面に並んでいます。
どれもきちんと押し込んで反応するボタンです。
iPod ほど Hold スイッチに神経質にならなくても大丈夫そうです。

十字型のボタンは携帯や PDA のカーソルキーと同じで項目の選択に使います。
音量や早送り、巻き戻しは十字キーでなく右サイドのボタンを使います。

メニューもシンプルで意外に設定項目も少なく感じます。
携帯電話に慣れすぎているせいかもしれません。
イコライザも7種類のプリセットのみ。
ストラップホールがついているのはなんとなく安心です。


たまたま gigabeat S30 を手に入れました。
パッケージの中に入っていた短い USB ケーブルは
miniA のホストケーブルのようです。
W-ZERO3[es] にそのままつないで USB キーボードが使えました。



gigabeat S30 のボリュームはそのままだと最低音量でも
自分には大きすぎました。
http://ch09144.kitaguni.tv/e304953.html
こちらで書いたような変換ケーブルが役立ちました。
今はエレコムの EHP-TVCT13N30BK を短く切ってこんな感じで使ってます。



GIGABEAT は初代の 5G モデルも持っています。
当時は HDD カードが取り外し式で一回り巨大でした。
ファームウエアが UNIX ベースで一時期 SDK が公開されたことがありました。
(その後すぐに中止になったようです)

今度の gigabeat は WindowsMobile です。
アプリさえ動けば W-ZERO3 のように使えるのかもしれないですね。
Zune では開発できるようになる可能性があるとのこと。
http://www.watch.impress.co.jp/game/docs/20061219/3dxna.htm


Debian のインストール手順が「ほげめも」さんのところに公開されていたので
ちょっとだけいれてみました。install 作業自体には特にはまりも何もなく
下記の参考ページそのまんまです。なのであんまり役に立たないメモです。
http://www.keshi.org/blog/2006/12/debian_installer_for_ps3.html
http://www.keshi.org/moin/moin.cgi/PS3/Debian/Installer

インストール作業はコンポジットの普通のビデオ端子接続で行いました。
PS3 につながる USBキーボードが必要です。


(A) kboot の install と準備
最初は Fedora core 5 の install 手順と同じです。
http://ch09144.kitaguni.tv/e327222.html
の (1)~(9) まで行っておきます。

すでに FC5 を install した状態であれば上記の (1)~(9) までの手順は
スキップできます。


(B) install CD-ROM の用意
下記ページ
http://www.keshi.org/moin/moin.cgi/PS3/Debian/Installer
のリンク先にある
debian-installer-ps3pf-20061225.iso
をダウンロードして CD-ROM を作っておきます。


(C) 作成した CD-ROM を入れた状態で起動
kboot: のプロンプトが表示されたら

 install [Enter]

と入力します。


(D) debian インストール

debian のインストーラが起動するのでそのまま画面のメッセージに
従うだけです。日本語を選択できます。下記のメモは一例なので、
環境によって変更してください。
(インストーラは [TAB]で選択して [Enter])

・言語選択
  Japanese 日本語

・キーボード選択
  日本 106キー

・ネットワークの検出
  DHCP自動検出

・ホスト名設定
・ドメイン入力

・アーカイブミラー選択
  日本

・サーバー
  デフォルト

・プロキシ
  無し

・ディスクパーティショニング
  ディスク全体を使う
  ・SCSI2 sda 47.1GB SCEI Sec:Master-3

  ・すべてのファイルを1つのパーティションに
    1 基本 46.5GB B f ext3 /
    5 論理 600.4MB f スワップ

  ・パーティショニングの終了とディスクへの変更の書き込み

  ・ディスクに変更を書き込みますか?
    はい

・「NewWorld ブートパーティションは見つかりませんでした。
  yaboot ブートローダは少なくとも 819200バイトのサイズの HFS Macintosh
  ファイルシステムを使った Apple_Bootstrap パーティションを必要とします。
  メニューに戻ってパーティショニングを再開しますか?」

  と表示されたら「いいえ」

・「PowerPC PReP パーティションが見つかりませんでした。
  メニューに戻ってパーティショニングを再開しますか?」

  と表示されたら「いいえ」

・rootパスワード設定
・ユーザー設定

・インストールするカーネル
linux-image-2.6.16-1-ps3pf

・インストールするソフトの選択
   デスクトップ環境
  * ウェブサーバー
   印 サーバー
   DNSサーバー
  * ファイルサーバー
   メールサーバー
  * SQLデータベース
   ラップトップ
  * 標準システム

 デスクトップ環境を入れると最初に X が起動してしまう。
 PS3 の画面モードでは表示されないので最初は入れないで必要に応じて
 構築した方がよさそう。

・Samnba Server
ワークグループ/ドメイン名設定

・インストール完了
・再起動


(E) debian 起動

デスクトップ環境を入れると最初に X が起動してしまう。
480i だと表示されないので、とりあえず CTRL + ALT + F1 で console に降りる。

root でログイン。
テレビ画面は厳しいので、とりあえず

# apt-get install ssh

これで PC の putty 経由で作業できるようになったので、以後そちらから。
samba にユーザー登録 (ユーザー名が handle とすると)

# smbpasswd -a handle

設定書き換え

# vi /etc/samba/smb.conf

[homes] の中の「writable = no」を yes に書き換える

セーブしたら

# /etc/init.d/samba restart

これで PC から samba でファイル転送できるようになったので、
リモートで環境設定とか。


CELL 用の SDK とか rpm で配布されているので、そのままでは install できなくて
変換が必要なようです。debian に無いパッケージの依存とか、もしあればそれらも
用意しないといけないので、PS3 らしい環境にするにはちょっとすんなりとは
いかないみたいです。