概要
MyraOSは、 x86アーキテクチャ 向けに 完全自作 されたUnixライクOS。 保護モード、仮想メモリ、プロセス管理、GUIなど多彩な機能を搭載。 Doomなどの 実アプリ も動作可能な本格派OS。 QEMUを使い、 Windows/Linux/macOS で簡単に起動可能。 開発体験や課題、学びについても詳述。
MyraOSの特徴と主な機能
- x86アーキテクチャ 向けの自作UnixライクOS
- 保護モード (GDT/IDT、ISRs/IRQs)実装
- ページング と仮想メモリ管理
- ヒープ管理 や動的メモリ管理
- ユーザーモード (ring 3)と カーネルモード (ring 0)対応
- プロセス管理 とスケジューリング
- 各種デバイスドライバ (PIT、RTC、Keyboard、Mouse、Framebuffer、PATA)
- ext2ファイルシステム 対応
- GUIコンポジタ (ウィンドウ、ラベル、アイコン、ボタン、独自フォント)
- ELFローダー 搭載、本物のアプリケーション実行可能
- Doom移植版 をプリインストール、実際にプレイ可能
- 実機や仮想環境で動作する 本格的なOS
MyraOSの起動方法
-
GitHubリリースページ から最新バージョンをダウンロード
-
QEMU (オープンソースエミュレータ)をインストール
- macOS
- 通常起動:
qemu-system-i386 -cdrom MyraOS.iso -drive file=fs.img,format=raw,if=ide,index=0 -m 1024 - フルスクリーン:
qemu-system-i386 -cdrom MyraOS.iso -drive file=fs.img,format=raw,if=ide,index=0 -m 1024 -full-screen
- 通常起動:
- Linux
- 通常起動:
qemu-system-i386 -cdrom MyraOS.iso -drive file=fs.img,format=raw,if=ide,index=0 -m 1024 - フルスクリーン:
qemu-system-i386 -cdrom MyraOS.iso -drive file=fs.img,format=raw,if=ide,index=0 -m 1024 -display gtk,zoom-to-fit=on -full-screen
- 通常起動:
- Windows
- 推奨はLinux/macOSまたはWSL
- 通常起動:
qemu-system-i386 -cdrom MyraOS.iso -drive file=fs.img,format=raw,if=ide,index=0 -m 1024 - フルスクリーン:
qemu-system-i386 -cdrom MyraOS.iso -drive file=fs.img,format=raw,if=ide,index=0 -m 1024 -display gtk,zoom-to-fit=on -full-screen
- macOS
フィードバック・連絡先
- 開発者Dvir へのフィードバックや要望、質問はメールで受付
- 連絡先: dvirm.biton@gmail.com
開発の動機と学び
- CPU知識不足 による面接不合格をきっかけにOS自作を決意
- C言語とアセンブリ で基礎から独学
- OSDev Wiki、 OSTEP、オープンソースリポジトリ(MellOS、LemonOS)、DoomGeneric、経験者の友人から多くを学習
- 理論理解後、 実装への移行 が最大の挑戦
- ブートローダ 自作から始め、後にGRUBへ移行
実装ステップ
- VGAドライバ実装で 文字表示 機能追加
- 割り込み管理 (IDT、ISR、IRQ)実装
- キーボードドライバ で入力対応
- 物理メモリ管理 (PMM)実装
- ページング/仮想メモリ管理
- RTCドライバ で時計機能追加(任意実装)
- PITドライバ で定期割り込み管理
- ファイルシステム/物理HDDドライバ
- PATAプロトコル採用(SATAは難易度が高いため回避)
- ext2ファイルシステム 採用(情報豊富・拡張性・移植性)
- システムコール 対応
- libc実装
- プロセス管理/スケジューリング
- シェル実装 で機能検証
- GUI追加 でウィンドウ表示・マウス対応
Hack Club Summer of Making(SoM)参加の影響
- SoM参加 を機に、GUIやDoom移植、より本格的なOS構築に挑戦
- 2ヶ月追加開発 で総開発期間7ヶ月に到達
- ダブルバッファリング や ダーティレクト による高速なGUI描画
- Doom移植 の実現
開発中の課題と解決策
- デバッグの難しさ (特にメモリ関連)
- GDB 活用による問題解決推奨
- プロセス実装時のページング不具合
- 既存コードの再設計・再テスト
- Doom移植時のメモリ問題
- ランダムなページフォルト・不安定動作
- スケジューリング・libc・QEMUのメモリ割当量不足(128MB→1024MBへ)
経験を通じて得たこと
- 低レイヤー開発 の知識・スキル向上
- 課題解決力 と 継続力 の強化
- SoM参加 でモチベーション向上と新たな挑戦
- プロジェクトの思い出と成長実感
リポジトリ・プロジェクト情報
- GitHubリポジトリ: https://github.com/dvir-biton/MyraOS
- SoMプロジェクトページ: https://summer.hackclub.com/projects/5191
- コメントや議論も歓迎