概要
- Sega MegaDrive でLinuxを動作させるプロジェクトの紹介
- Mega EverDrive (CoreまたはPro)カートリッジが必須
- 通常のエミュレータ では動作困難、専用QEMUフォークが付属
- 構築手順・起動方法 を詳細に解説
- 実機の挙動や制限 についても説明
Sega MegaDriveでLinuxを動かす方法
-
ジョークではなく実現可能 なプロジェクト
-
必要なもの
- Sega MegaDrive本体
- Mega EverDrive CoreまたはPro (Proは未検証)
- EverDriveとPCを接続するUSBケーブル
- 十分な作業時間
-
エミュレータでの動作
- 一般的なエミュレータでは 動作不可
- EverDrive独自のSSF2マッパ (4MB RAM提供)やSDカードからのファイル読み込みプロトコル、タイマーレジスタのエミュレーションが必要
- 専用の QEMUフォーク が付属し、PCで動作確認可能
- ただし 実機の速度感は再現不可 (QEMUではCPUが速すぎる)
ビルド手順
-
ツールチェーン構築
./buildtoolchain.shを実行し、 Buildroot を使ってm68k-linuxツールチェーンを作成
-
U-Bootのビルド
./builduboot.shで U-Boot をビルド
-
medtoolのビルド
./buildmedtool.shで medtool (EverDriveとのシリアル通信用ツール)をビルド
-
Linuxカーネルのビルド
./buildlinux.shで Linuxカーネルイメージ をビルド
-
rootfs(erofsイメージ)のビルド
./buildrootfs.shで rootfs erofsイメージ を作成
-
エミュレータ版の構築
./buildqemu.shで QEMU をビルド./runqemu.shでQEMUを起動し、Linuxをブート
起動手順
- 必要ファイルのSDカードへのコピー
u-boot/u-boot.binlinux/vmlinux.lz4smolutils/m68k.erofs
- MegaDriveの電源投入
- USBケーブルをPCに接続
- dmesgで EverDriveの認識 を確認
- デバイス名例:
/dev/ttyACM0
- デバイス名例:
- dmesgで EverDriveの認識 を確認
- medtoolによるシリアル接続
./medtool/medtool -p /dev/ttyACM0 -m terminalで接続- 指示に従い minicom でUNIXソケットに接続
- EverDriveメニューでu-boot.binを選択し起動
- 画面の指示に従いゲーム開始
- minicomにU-Bootの起動画面が表示
- カーネルやrootfsのロード状況が表示
Linux起動後の様子
-
カーネルバージョンや開発者情報 が表示
- 例:Linux version 7.1.0-rc6-00250-g29f5b5b8fc12-dirty
-
初期化ログやメモリ情報 の表示
-
gettyによるシェル起動
/dev/ttyED0や/dev/ttyVDP0でsmolshシェルが利用可能
-
コマンド例
ls -lやpsでファイル一覧やプロセス確認
-
動作速度について
- カーネルのロード・展開に非常に時間がかかる
- 12MHz 68000搭載機よりも遅い
- EverDrive fifoとの通信がボトルネック
MegaDrive専用の特徴
- ビデオ出力を利用した独自コンソール
- スクロール付きの画面表示
- 右上の 緑色ボックス がハートビート(カーネル稼働中の点滅)
- その下の 赤色ボックス がディスクアクセスインジケータ
意義・注意点
- シリアル端末だけでなく、MegaDriveの映像出力を使った本格的なLinux環境
- 現状は極めて遅いが、最適化の余地あり
- 実験的プロジェクトとしての価値
参考情報
- Mega EverDrive製品ページ :https://krikzz.com/our-products/cartridges/
- Hackaday記事 :https://hackaday.com/2026/06/29/its-linux-on-a-sega-megadriv...
このプロジェクトは、 レトロハードウェアでのLinux動作 に興味があるエンジニアやハードウェア愛好家向けの、 技術的チャレンジと遊び心 に満ちた取り組みです。