PS2 Diskless Client

Linux for PlayStation 2 Communityで公開されているPS2 Diskless Clientを試してみましょう。

2003.02.11 初稿

ここで紹介するやり方はBB NaviやHDDゲームとPS2Linuxを共存している環境です。
つまりPS2Linuxβ版をベースにしたものです。PS2Linux 1.0ベースの場合とHDD認識が異なりますので気をつけてください。

PS2 Diskless Clientとは、文字通りHDDにインストールすること無くPS2Linuxを使うものです。
メモリーカードにカーネルと最低限のコマンド郡を格納して起動しますのでHDDが不要となります。
物理的にLinuxキット(BB unit,HDDを含む)が無くても起動できます。
ただし起動にはRuntime Environmentを使うのでPS2LinuxのDVDが必要です。

同種のプロジェクトとしては、PS2 Linux without a Hard Disk Driveもあります。

また、PS2 (PlayStation 2) Linux関連ファイルでもHDD不要の起動ファイルが公開されています。
こちらは難しい手順無しにファイルを展開してp2lboot.cnfを編集するだけで良いので一番お手軽です。
もともとの目的がネットワーク経由のHDDバックアップ&ps2fdiskということで、それに特化したコマンドが入っているのが特徴です。

今回はこの中で手を加えることでいろいろ出来そうなPS2 Diskless Clientを試してみました。
ネットワークが標準で使えて、root-NFSも対応しているなど機能的に優れています。

なお、PS2 Diskless Clientには2.2.21-pre1-xr7が必要です。


initrd.gzの作成(作業は root で)

# cd /usr/src      (別にどこでもいいけど)
# tar zxf /var/tmp/ps2boot-1.tar.gz
# cd ps2boot-1
# ./mkbootcd.sh
しばらくするとinitrd.gzが出来上がります。
カーネル構築
バックアップ
# cd /usr/src
# mv linux linux.org

展開
# tar zxf /var/tmp/kernel-source-2.2.21-pre1-xr7.tar.bz2 または .gz
# ln -s kernel-source-2.2.21-pre1-xr7 linux

PS2 Diskless Client用パッチ。ネットワークをモジュールではなくカーネル組み込みにするなど
# cd /usr/src
# patch -p0 < /usr/src/ps2boot-1/kernel-patch

HDDフォーマット認識がBB Navi仕様になっているので、PS2Linux仕様にパッチまたは怪しいパッチを宛てる
(このパッチは2.2.19を元に作ったので対象が若干異なってますが、一応正しくパッチ当たるので手抜き代用)
※HDDをマウントすることが無いというのならこのパッチは不要です。
# cd /usr/src/linux
# patch -p0 < bblinux2.diff

コンパイル
# cd /usr/src/linux
# cp /usr/src/ps2boot-1/kernel-config .config
# make oldconfig
# make dep
# make

設定を変えるなら、普通のカーネル構築の手順に従ってください。
モジュールは、先ほどのbootcdの中にすでに標準で入っているのでコンパイル不要です。
make modules_installをしちゃうと /lib/modules/2.2.21-pre1-xr7 を上書きしてしまうので注意。
メモリーカードに詰め込みましょう。
# mount /mnt/mc00
# gzip -c9 /usr/src/linux/vmlinux > /mnt/mc00/vmlinux-2.2.21-pre1-xr7.gz
# cp /usr/src/ps2boot-1/initrd.gz /mnt/mc00
# vi /mnt/mc00/p2lboot.cnf 以下の一行を追加
"Memory-based" vmlinux-2.2.21-pre1-xr7.gz initrd.gz 203 /dev/ram0 "" Memory-based Linux
# umount /mnt/mc00
以上で完成です。


さっそく使ってみましょう。
PS2LinuxのDVDと先ほど作成したメモリーカードをセットしてPS2を起動します。
Runtime Environmentが起動したら、"Memory-based"を選択。
しばらくしたらちゃんとlinuxが起動すると思います。
/> というプロンプトが出たらOK

ネットワークを使うには、

> ifconfig eth0 IPアドレス netmask ネットマスク
> route add default gw デフォルトゲートウェイのIPアドレス

> telnet 接続先IP
とか
> ftp -u ユーザ名 接続先IP
とか
HDDをマウントするには、
/dev/hda1と/dev/hda2しか準備されていません。もっと必要な場合は、以下の手順で。
cd /dev
mknod hda3 b 3 3
mknod hda4 b 3 4
mknod hda5 b 3 5
mknod hda6 b 3 6
mknod hda7 b 3 7
mknod hda8 b 3 8
mknod hda9 b 3 9
mknod hda10 b 3 10
mknod hda11 b 3 11
mknod hda12 b 3 12
mknod hda13 b 3 13
mknod hda14 b 3 14
mknod hda15 b 3 15
mknod hda16 b 3 16
mknod hda17 b 3 17
mknod hda18 b 3 18
mknod hda19 b 3 19

で、肝心のマウント
mkdir /mnt
mount -t ext2 /dev/hda1 /mnt
とか
mount -t reiserfs /dev/hda11 /mnt
とか
上の作業がいちいち面倒くさい場合には、先に設定しておきます。
最初の作業に戻って、/usr/src/ps2boot-1/bootcd/etc/sysinit を編集してからinitrd.gzを作成してください。

また、initrd.gzではなく、root-NFSという方法もありますが、それは付属の説明を読んで試してください。


BB Naviのパーティションマウントできるので、in.telnetdや、必要なコマンド郡をBB Naviのパーティションにコピーして、
アカウントとかパスワードとか起動ファイルとかを細工すればBB Navigatorにtelnetできるようになっちゃうわけです。
いろいろと面白いことがPS2LinuxのDVD無しでできるようになるかもね。

残念ながら、
(1) PS2 Diskless Clientのファイルを準備するのに、PS2Linuxで準備が必要
(2) PS2 Diskless Clientを起動するのにPS2LinuxのDVD(Runtime Environment)が必要
というわけで、完全にPS2Linux無しってわけにはいかない。
※(1)はメモカイメージで誰かが公開すれば解決。ライセンス的にもソースあれば問題無いと思う。


怪しいパッチについて

BB Navigator の "__linux.X" というIDのパーティションを認識するようになります。 →この辺の話はこっち

注意事項や使い方などはこちらにありますので必ずお読みください。


戻る