0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

kazuedaの活動記録2024Advent Calendar 2024

Day 1

2024年にRUnixを初代プレステエミュレータのNO$PSX.EXEで起動

Last updated at Posted at 2024-11-30

はじめに

 近所のハードオフで初代プレイステーション(以降、初代プレステ)の本体を税込み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

image.png
スロット1に8MBのメモリカードが挿入されており、ファイルアクセスを試みますが、ルートファイルシステムが見つからないので「Kernel panic」が表示されます。
image.png

まとめ

 Github上のレポジトリの説明に従って、初代プレスト上で動作するRUnixのカーネルパニックを観察しました。
 ルートファイルシステムを作成して、ログインプロンプトの表示を実現したくなりました。
 残念ながら、プレイステーションの動作の仕組みを理解していないので、メモリカードにどのようにルートファイルシステムを保存したらよいかわかりません。メモリーカード上のファイルフォーマットを勉強しながら、ログインプロンプトの表示の実現を目指します。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?