rm docs
This commit is contained in:
@ -1,136 +0,0 @@
|
||||
# AIOS アーキテクチャ
|
||||
|
||||
## 概要
|
||||
|
||||
AIOSは、Rustで実装されたマイクロカーネルアーキテクチャを採用しています。最終的にClaude Codeを実行可能にするため、モジュラー設計を重視しています。
|
||||
|
||||
## システム構成
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────┐
|
||||
│ ユーザーランド │
|
||||
│ ┌─────────────┐ ┌─────────────────────┐│
|
||||
│ │ Claude Code │ │ システムツール ││
|
||||
│ │ │ │ (ls, cat, etc.) ││
|
||||
│ └─────────────┘ └─────────────────────┘│
|
||||
├─────────────────────────────────────────┤
|
||||
│ システムコール │
|
||||
├─────────────────────────────────────────┤
|
||||
│ カーネル空間 │
|
||||
│ ┌─────────┐ ┌─────────┐ ┌─────────────┐│
|
||||
│ │ プロセス │ │ メモリ │ │ ファイル ││
|
||||
│ │ 管理 │ │ 管理 │ │ システム ││
|
||||
│ └─────────┘ └─────────┘ └─────────────┘│
|
||||
│ ┌─────────────────────────────────────┐│
|
||||
│ │ ハードウェア抽象化 ││
|
||||
│ │ VGA・シリアル・キーボード・etc ││
|
||||
│ └─────────────────────────────────────┘│
|
||||
├─────────────────────────────────────────┤
|
||||
│ ハードウェア │
|
||||
│ CPU・メモリ・ストレージ │
|
||||
└─────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## 主要コンポーネント
|
||||
|
||||
### 1. カーネルコア (`src/main.rs`)
|
||||
- システムの起動とメインループ
|
||||
- パニックハンドラー
|
||||
- テストフレームワーク統合
|
||||
|
||||
### 2. VGAドライバー (`src/vga_buffer.rs`)
|
||||
- テキストモード画面制御
|
||||
- 色指定とフォーマット
|
||||
- スクロール機能
|
||||
|
||||
### 3. シリアル通信 (`src/serial.rs`)
|
||||
- UART 16550制御
|
||||
- デバッグ出力
|
||||
- QEMU連携
|
||||
|
||||
### 4. メモリ管理 (予定)
|
||||
- 仮想メモリ管理
|
||||
- ヒープアロケーター
|
||||
- ページテーブル管理
|
||||
|
||||
### 5. ファイルシステム (予定)
|
||||
- VFS (Virtual File System)
|
||||
- 基本的なファイル操作
|
||||
- ディレクトリ構造
|
||||
|
||||
### 6. プロセス管理 (予定)
|
||||
- タスクスケジューリング
|
||||
- プロセス作成・終了
|
||||
- IPC (Inter-Process Communication)
|
||||
|
||||
## メモリレイアウト
|
||||
|
||||
```
|
||||
仮想アドレス空間:
|
||||
0x0000_0000_0000_0000 - ユーザー空間開始
|
||||
0x0000_7fff_ffff_ffff - ユーザー空間終了
|
||||
0x8000_0000_0000_0000 - カーネル空間開始
|
||||
0xffff_ffff_ffff_ffff - カーネル空間終了
|
||||
|
||||
物理メモリ:
|
||||
0x0000_0000 - 0x0009_ffff : 実モード互換領域
|
||||
0x0010_0000 - 0x7fff_ffff : 利用可能RAM
|
||||
0x8000_0000 - 0xffff_ffff : デバイスメモリ
|
||||
```
|
||||
|
||||
## ブートプロセス
|
||||
|
||||
1. **BIOS/UEFI** → ブートローダー読み込み
|
||||
2. **ブートローダー** → カーネルロード
|
||||
3. **カーネル初期化** → ハードウェア検出
|
||||
4. **ドライバー初期化** → VGA・シリアル・etc
|
||||
5. **メモリ管理開始** → ヒープ・ページング
|
||||
6. **ファイルシステム** → ルートマウント
|
||||
7. **プロセス管理** → initプロセス開始
|
||||
8. **ユーザーランド** → Claude Code実行
|
||||
|
||||
## 設計原則
|
||||
|
||||
### 1. 安全性
|
||||
- Rustの所有権システム活用
|
||||
- バッファオーバーフローの防止
|
||||
- 型安全性の保証
|
||||
|
||||
### 2. パフォーマンス
|
||||
- ゼロコスト抽象化
|
||||
- コンパイル時最適化
|
||||
- 最小限のランタイムオーバーヘッド
|
||||
|
||||
### 3. 拡張性
|
||||
- モジュラー設計
|
||||
- プラグアーキテクチャ
|
||||
- 標準インターフェース
|
||||
|
||||
### 4. 移植性
|
||||
- ハードウェア抽象化レイヤー
|
||||
- 設定可能なターゲット
|
||||
- 条件付きコンパイル
|
||||
|
||||
## 今後の拡張計画
|
||||
|
||||
### フェーズ1: 基盤システム
|
||||
- [ ] 動的メモリ管理
|
||||
- [ ] 基本的なファイルシステム
|
||||
- [ ] シンプルなプロセス管理
|
||||
|
||||
### フェーズ2: 高度な機能
|
||||
- [ ] ネットワークスタック
|
||||
- [ ] デバイスドライバーフレームワーク
|
||||
- [ ] システムコール拡張
|
||||
|
||||
### フェーズ3: Claude Code統合
|
||||
- [ ] Node.js/Rustランタイム
|
||||
- [ ] パッケージマネージャー統合
|
||||
- [ ] 開発ツール群
|
||||
|
||||
## 参考アーキテクチャ
|
||||
|
||||
- **xv6**: 教育用Unix系OS
|
||||
- **Redox**: Rust製マイクロカーネルOS
|
||||
- **seL4**: 形式検証されたマイクロカーネル
|
||||
- **Plan 9**: 分散システム指向OS
|
@ -1,68 +0,0 @@
|
||||
# AIOS クイックスタート
|
||||
|
||||
## 最短で試す方法
|
||||
|
||||
### 1. 必要なツールのインストール
|
||||
|
||||
**Mac:**
|
||||
```bash
|
||||
brew install qemu
|
||||
cargo install bootimage
|
||||
```
|
||||
|
||||
**Arch Linux:**
|
||||
```bash
|
||||
pacman -S qemu-full
|
||||
cargo install bootimage
|
||||
```
|
||||
|
||||
### 2. プロジェクトのセットアップ
|
||||
|
||||
```bash
|
||||
# リポジトリのクローン
|
||||
git clone <repository-url>
|
||||
cd aios
|
||||
|
||||
# 一発でビルド&実行
|
||||
cargo bootimage && qemu-system-x86_64 -drive format=raw,file=target/x86_64-unknown-none/debug/bootimage-kernel.bin -serial stdio
|
||||
```
|
||||
|
||||
### 3. 動作確認
|
||||
|
||||
正常に動作している場合、以下のような出力が表示されます:
|
||||
|
||||
```
|
||||
Hello World!
|
||||
Welcome to AIOS - A simple OS written in Rust
|
||||
```
|
||||
|
||||
QEMUを終了するには `Ctrl+A` を押してから `X` を押してください。
|
||||
|
||||
## 開発ワークフロー
|
||||
|
||||
### コードの変更
|
||||
```bash
|
||||
# コード変更後
|
||||
cargo build
|
||||
|
||||
# 新しいブートイメージの作成
|
||||
cargo bootimage
|
||||
|
||||
# 実行
|
||||
qemu-system-x86_64 -drive format=raw,file=target/x86_64-unknown-none/debug/bootimage-kernel.bin -serial stdio
|
||||
```
|
||||
|
||||
### デバッグ
|
||||
```bash
|
||||
# シリアル出力のみ表示
|
||||
qemu-system-x86_64 -drive format=raw,file=target/x86_64-unknown-none/debug/bootimage-kernel.bin -serial stdio -nographic
|
||||
|
||||
# メモリ使用量を制限
|
||||
qemu-system-x86_64 -drive format=raw,file=target/x86_64-unknown-none/debug/bootimage-kernel.bin -serial stdio -m 128M
|
||||
```
|
||||
|
||||
## 次のステップ
|
||||
|
||||
1. `src/main.rs`の`println!`文を変更して、独自のメッセージを表示
|
||||
2. `src/vga_buffer.rs`で色を変更
|
||||
3. 新しいモジュールを追加して機能を拡張
|
147
docs/README.md
147
docs/README.md
@ -1,147 +0,0 @@
|
||||
# AIOS - A Rust-based Operating System
|
||||
|
||||
AIOSは、Rustで一から作られたUnix系オペレーティングシステムです。最終的にClaude Codeを実行可能にすることを目標としています。
|
||||
|
||||
## 特徴
|
||||
|
||||
- **Pure Rust**: カーネルからユーザーランドまで、全てRustで実装
|
||||
- **ベアメタル**: 標準ライブラリを使用せず、ハードウェアを直接制御
|
||||
- **VGAテキストモード**: コンソール出力をサポート
|
||||
- **シリアル通信**: デバッグとQEMU連携用
|
||||
- **モジュラー設計**: 拡張可能なアーキテクチャ
|
||||
|
||||
## 必要な環境
|
||||
|
||||
### Mac (開発環境)
|
||||
```bash
|
||||
# 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 (本格運用環境)
|
||||
```bash
|
||||
# 基本パッケージ
|
||||
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. プロジェクトのクローン
|
||||
```bash
|
||||
git clone <repository-url>
|
||||
cd aios
|
||||
```
|
||||
|
||||
### 2. ビルド
|
||||
```bash
|
||||
cargo build
|
||||
```
|
||||
|
||||
### 3. ブートイメージの作成
|
||||
```bash
|
||||
cargo bootimage
|
||||
```
|
||||
|
||||
### 4. QEMUでの実行
|
||||
```bash
|
||||
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 # このドキュメント
|
||||
```
|
||||
|
||||
## 開発状況
|
||||
|
||||
### 完了済み
|
||||
- [x] プロジェクト構造の設計と初期化
|
||||
- [x] ベアメタル環境でのRustセットアップ
|
||||
- [x] ブートローダーの実装
|
||||
- [x] VGAテキストモードドライバーの実装
|
||||
- [x] Hello World出力の実装
|
||||
- [x] QEMUでの動作確認
|
||||
|
||||
### 進行中
|
||||
- [ ] メモリ管理システムの実装
|
||||
- [ ] ファイルシステムの実装
|
||||
- [ ] プロセス管理システムの実装
|
||||
- [ ] Claude Code実行環境の構築
|
||||
|
||||
## 目標
|
||||
|
||||
1. **Claude Codeを実行できるようにすること**
|
||||
- Node.js/Rustランタイムの統合
|
||||
- ファイルシステムとプロセス管理
|
||||
- ネットワーク通信機能
|
||||
|
||||
2. **Package managerにpacmanを採用すること**
|
||||
- Arch Linuxとの互換性
|
||||
- パッケージビルドとサーバーの運用負荷軽減
|
||||
|
||||
## 参考資料
|
||||
|
||||
- [o8vm/octox](https://github.com/o8vm/octox) - xv6-riscvにインスパイアされたRust OS
|
||||
- [The Rust Programming Language](https://doc.rust-lang.org/book/)
|
||||
- [Writing an OS in Rust](https://os.phil-opp.com/)
|
||||
|
||||
## トラブルシューティング
|
||||
|
||||
### ビルドエラー
|
||||
```bash
|
||||
# 依存関係の更新
|
||||
cargo update
|
||||
|
||||
# クリーンビルド
|
||||
cargo clean
|
||||
cargo build
|
||||
```
|
||||
|
||||
### QEMUでの問題
|
||||
```bash
|
||||
# シリアル出力の確認
|
||||
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 の下で公開されています。
|
Reference in New Issue
Block a user