ここで紹介するやり方は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 以下の一行を追加# umount /mnt/mc00
"Memory-based" vmlinux-2.2.21-pre1-xr7.gz initrd.gz 203 /dev/ram0 "" Memory-based Linux
さっそく使ってみましょう。
PS2LinuxのDVDと先ほど作成したメモリーカードをセットしてPS2を起動します。
Runtime Environmentが起動したら、"Memory-based"を選択。
しばらくしたらちゃんとlinuxが起動すると思います。
/> というプロンプトが出たらOK
ネットワークを使うには、
HDDをマウントするには、> ifconfig eth0 IPアドレス netmask ネットマスク > route add default gw デフォルトゲートウェイのIPアドレス > telnet 接続先IP とか > ftp -u ユーザ名 接続先IP とか
上の作業がいちいち面倒くさい場合には、先に設定しておきます。/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 とか
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のパーティションを認識するようになります。 →この辺の話はこっち
注意事項や使い方などはこちらにありますので必ずお読みください。