Files
aios/docs
2025-07-05 15:00:10 +09:00
..
2025-07-05 13:19:08 +09:00
2025-07-05 13:19:08 +09:00
2025-07-05 13:19:08 +09:00
2025-07-05 15:00:10 +09:00
2025-07-05 15:00:10 +09:00

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実行環境の構築

目標

  1. Claude Codeを実行できるようにすること

    • Node.js/Rustランタイムの統合
    • ファイルシステムとプロセス管理
    • ネットワーク通信機能
  2. Package managerにpacmanを採用すること

    • Arch Linuxとの互換性
    • パッケージビルドとサーバーの運用負荷軽減

参考資料

トラブルシューティング

ビルドエラー

# 依存関係の更新
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を送る前に、以下を確認してください

  1. コードがRustのベストプラクティスに従っている
  2. 適切なテストが含まれている
  3. ドキュメントが更新されている

ライセンス

このプロジェクトは MIT License の下で公開されています。