AIOS - A Rust-based Operating System
AIOSは、Rustで一から作られたUnix系オペレーティングシステムです。最終的にClaude Codeを実行可能にすることを目標としています。
特徴
- Pure Rust: カーネルからユーザーランドまで、全てRustで実装
- ベアメタル: 標準ライブラリを使用せず、ハードウェアを直接制御
- VGAテキストモード: コンソール出力をサポート
- シリアル通信: デバッグとQEMU連携用
- モジュラー設計: 拡張可能なアーキテクチャ
必要な環境
Mac (開発環境)
# Rust nightlyツールチェイン
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup toolchain install nightly
rustup default nightly
rustup component add rust-src llvm-tools-preview
rustup target add x86_64-unknown-none
# QEMUエミュレーター
brew install qemu
# bootimageツール
cargo install bootimage
Arch Linux (本格運用環境)
# 基本パッケージ
pacman -Syuu --noconfirm base-devel archiso docker git nodejs bc
# Rustツールチェイン
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup toolchain install nightly
rustup component add rust-src llvm-tools-preview
rustup target add x86_64-unknown-none
# QEMUとbootimageツール
pacman -S qemu-full
cargo install bootimage
ビルドと実行
1. プロジェクトのクローン
git clone <repository-url>
cd aios
2. ビルド
cargo build
3. ブートイメージの作成
cargo bootimage
4. QEMUでの実行
qemu-system-x86_64 -drive format=raw,file=target/x86_64-unknown-none/debug/bootimage-kernel.bin -serial stdio
プロジェクト構造
aios/
├── src/
│ ├── main.rs # カーネルエントリーポイント
│ ├── vga_buffer.rs # VGAテキストモードドライバー
│ └── serial.rs # シリアルポート通信
├── .cargo/
│ └── config.toml # Cargo設定
├── Cargo.toml # プロジェクト設定
├── rust-toolchain.toml # Rustツールチェイン設定
└── docs/
└── README.md # このドキュメント
開発状況
完了済み
- プロジェクト構造の設計と初期化
- ベアメタル環境でのRustセットアップ
- ブートローダーの実装
- VGAテキストモードドライバーの実装
- Hello World出力の実装
- QEMUでの動作確認
進行中
- メモリ管理システムの実装
- ファイルシステムの実装
- プロセス管理システムの実装
- Claude Code実行環境の構築
目標
-
Claude Codeを実行できるようにすること
- Node.js/Rustランタイムの統合
- ファイルシステムとプロセス管理
- ネットワーク通信機能
-
Package managerにpacmanを採用すること
- Arch Linuxとの互換性
- パッケージビルドとサーバーの運用負荷軽減
参考資料
- o8vm/octox - xv6-riscvにインスパイアされたRust OS
- The Rust Programming Language
- Writing an OS in Rust
トラブルシューティング
ビルドエラー
# 依存関係の更新
cargo update
# クリーンビルド
cargo clean
cargo build
QEMUでの問題
# シリアル出力の確認
qemu-system-x86_64 -drive format=raw,file=target/x86_64-unknown-none/debug/bootimage-kernel.bin -serial stdio -nographic
貢献
このプロジェクトは教育目的で作成されていますが、貢献は歓迎します。Pull Requestを送る前に、以下を確認してください:
- コードがRustのベストプラクティスに従っている
- 適切なテストが含まれている
- ドキュメントが更新されている
ライセンス
このプロジェクトは MIT License の下で公開されています。