ソフトウェア

メガドライブ実機上でLinuxを動かす「LinuxMD」が登場


1988年に発売されたセガの家庭用ゲーム機・メガドライブでLinuxを動作させる実験的なプロジェクトが「LinuxMD」です。開発者のダニエル・パルマー氏がGitHubで公開しており、実機上でカーネルと最小構成のLinux環境を起動できます。

GitHub - LinuxMD/linuxmd: Linux for the Sega MegaDrive · GitHub
https://github.com/LinuxMD/linuxmd

LinuxMDを動かすにはメガドライブ本体とフラッシュメモリカートリッジの「Mega EverDrive」、EverDriveとPCをつなぐUSBケーブルが必要です。実機で起動する際は、EverDriveのSDカードにU-Bootのバイナリー、圧縮済みのLinuxカーネル、ルートファイルシステムのイメージをコピーします。PC側では、USBで接続したEverDriveを介してシリアルコンソールへ接続し、起動ログの確認やシェルの操作を行います。


Mega EverDriveはSDカードを挿入してゲームROMを遊べるカートリッジで、さまざまな機能を搭載しているのが特徴。特に、LinuxMDを動かす上で重要な機能が「SSF2マッパー」です。

マッパーとは、限られたアドレス空間の中でCPUが利用するROMやRAMの領域を切り替える仕組み。通常、メガドライブが認識できるカートリッジ上のメモリの最大容量は4MBで、一度に認識できるのはその一部となっています。しかし、マッパーを使えば「バンク切り替え」と呼ばれる技術によってそれ以上の容量を利用可能になります。メガドライブのソフトでこのマッパーを搭載するのが40MBitの大容量カートリッジを採用した『スーパーストリートファイターII(SSF2)』のみだったため、メガドライブのマッパーは「SSF2マッパー」と呼ばれることがあります。


LinuxMDは起動時に4MBのメモリ空間を前提としてカーネルやルートファイルシステムを読み込み、実際の起動ログでも4MBのRAMを認識して動作します。通常のメガドライブはLinuxを起動するのに十分なメモリを備えていませんが、Mega EverDriveのSSF2マッパーを使えば、LinuxMDが必要とする4MBのRAMをメガドライブから認識できるようになるというわけ。そのため、通常のエミュレーターでLinuxMDを動かすにはメガドライブだけでなくEverDrive側のSSF2マッパーの挙動も再現する必要があり、エミュレーターでのLinuxMDの実行は難しいとパルマー氏は述べています。

パルマー氏によれば、LinuxMDにはオープンソースエミュレーターである「QEMU」のフォークが含まれているとのこと。Mega DriveとEverDriveの機能を一定程度再現するように改造されているため、エミュレーターでもLinuxMDを試すことはできるそうです。ただし、CPUの動作が実機より速すぎるため、実機と同じ感覚にはならないとされています。

起動ログはこんな感じで、Linuxカーネルが起動して読み取り専用のroot filesystemをマウントし、シェルを実行します。メガドライブの映像出力を使うコンソールも備え、画面上でスクロール表示を行えます。


なお、パルマー氏は記事作成時点で動作速度に課題が残ると説明。カーネルの読み込みと展開に時間がかかり、EverDriveとの通信も遅いため、通常使用には支障がある程度に低速なのだそうです。

・関連記事
メガドライブのゲームをアナログレコードに記録して実機でプレイすることは可能なのか? - GIGAZINE

時代を先取りしすぎた「セガチャンネル」で配信されていた140本以上のタイトルや貴重な資料が復元される - GIGAZINE

16年間の激闘の果てに「レーザーアクティブ」のエミュレーターがついに完成、いったい何が難しかったのか? - GIGAZINE

メガドライブ相当のゲームをC言語のみで自作可能なOSSのゲーム機「VGS-Zero」 - GIGAZINE

「ソニック3Dブラスト」はなぜメガドライブ本体をチョップするとステージ選択画面が出るのか? - GIGAZINE

メガドライブのカセットに別のカセットを直接接続して遊ぶ「ソニック&ナックルズ」のロックオンシステムはどういう仕組みなのか? - GIGAZINE

in ソフトウェア,   ゲーム, Posted by log1i_yk

You can read the machine translated English article 'LinuxMD,' which runs Linux on an actual….