はじめに
近所のハードオフで初代プレイステーション(以降、初代プレステ)の本体を税込み330円で入手しました。
初代プレステでは、uCLinuxのRUnix(別名、PSX1Linux) が動作すると知っていたので、インターネット上の情報を参考にして、初代プレステのエミュレータのNO$PSXを使って、RUnixのカーネルの起動を行いました。
本稿の一部は、「東海道らぐオン・オフラインミーティング 2024-09-28」で発表しました。
初代プレイステーションとは
初代プレステは、ソニー・コンピュータエンタテインメント(略: SCE)が1994年12月3日に発売した家庭用ゲーム機です。
CPUにMIPS R3000A ベースの32ビット RISCプロセッサ (R3051)を用い、メインメモリとして、2 MB EDO DRAMを搭載したゲーム機です。
RUnixとは
RUnixは初代プレステで動作するuCLinuxです。
MIPS-NOMMUなので、kernelバージョン2.4.xのuClinuxが動作します。RS232 SIO経由のシリアルコンソールやプレイステーションのGPU経由の仮想コンソールが動作します。
保存メディアとしてマルチプルメモリーカードを利用可能で、SL811を使って、USBキーボードやマウスを接続可能です。
これらはWikipediaの情報で、実際に動作に成功した情報を見つけることができなかったので、噂の域をでません。
RUnixの起動プロセス
RUnixは次のように起動します。
1.シリアルポート経由でKernelをPlayStationにロード
2.ロードが終わると、Kernelが起動
3.マルチプルメモリーカードに保存してあるrootfsをマウントして起動
これも、噂の域を出ません。
なぜなら、メモリーカードのEXT2ファイルフォーマッタとrootfsのイメージファイルを内包する、psx-mcard.0.8.2.tar.gzがインターネット上から消失しているからです。
したがって、現在確認できる起動プロセスは以下の様になります。
1.シリアルポート経由でKernelをPlayStationにロードする
2.ロードが終わると、Kernelが起動した後、rootfsが無くてKernel PANICで停止
RUnixの情報サイトは現在2か所
プレイステーション専門の情報交換サイトpsx.devを除いて、RUnixの情報がまとめっているサイトに以下のものがあります。
1.現存するRunixのソースファイルを活用し、メモリカードの読み(書き)をフルスクラッチで実現する試み
2.本体のRAMを2 MBから4 MBや8 MBに張り替えて、 uCLinx のPSPを参考に、 kernelとrootfsをRAMに展開して起動する試み
1番目のサイトでは、RUnixのKernelからメモリカード上の情報の読みだしの実験を行っています。メモリカード上にルートファイルシステムを構築するには至っていません。
2番目のサイトでは、難易度の高いハードウェアの改造を行っています。改造の様子は、youtubeで視聴可能で、RAMを取り除くときに基板のパターンを壊してしまい、パターンの修復作業も見ることができます。
1番目のサイトの情報の再現実験を行います。
RUnixのカーネル構築
Ubuntu上でカーネル構築を行いました。
githubのレポジトリをクローンした後に、batファイルを動作すると、カーネルが生成するようですが、私の実行環境のUbuntu上では、うまくいきませんでした。batファイルを参考に、手動でカーネルを生成しました。
生成したカーネルを初代プレステで動作するファイルに変換すると、クローンしたディレクトリ以下のbinディレクトリに「kernel.exe」が生成します。
NO$PSXでRUixのKernelパニックを眺める
NO$PSXはwindows上で動作するプレイステーションのエミュレータです。
今回利用しているレポジトリでは、NO$PSX.EXEの動作するディレクトリ構成で、メモリカードイメージなどの必要なファイルが配置されています。
Ubuntu上でwineをインストールした後、デスクトップ環境のTerminal下で、クローンしたディレクトリに移動し、以下のコマンドを入力すると、NO$PSX.EXEの起動後にRUnixが起動します。
$ wine ./tools/no\$psx/NO\$PSX.EXE bin/kernel.exe
スロット1に8MBのメモリカードが挿入されており、ファイルアクセスを試みますが、ルートファイルシステムが見つからないので「Kernel panic」が表示されます。
まとめ
Github上のレポジトリの説明に従って、初代プレスト上で動作するRUnixのカーネルパニックを観察しました。
ルートファイルシステムを作成して、ログインプロンプトの表示を実現したくなりました。
残念ながら、プレイステーションの動作の仕組みを理解していないので、メモリカードにどのようにルートファイルシステムを保存したらよいかわかりません。メモリーカード上のファイルフォーマットを勉強しながら、ログインプロンプトの表示の実現を目指します。