- Rustで開発された64ビットのDOSスタイルOSで、一部のx86アセンブリもカーネルのロードに使用
- VGAテキストモード(80x25)、FAT12ファイルシステム、SLIPによるIPv4ネットワークスタック(ICMP/UDP/TCP/HTTP)を実装
- QEMUベースの仮想マシン上で実行・開発されており、一部の実物フロッピーメディアにも対応
- シンプルなテキストエディタ、TABによるファイル/ディレクトリ自動補完、Snakeゲームなどの基本ユーティリティを含む
アーキテクチャとブートローダー
- 対象CPUはx86_64で、将来的にARM(aarch)アーキテクチャへの対応を予定
- 初期バージョンでは自作のブートローダーでカーネルをメモリに読み込んで実行
- 64ビットカーネルではGRUB2ブートローダーを活用し、Long Modeへの移行とProtected Modeの切り替えを処理
- stage2ブートローダーがGDT、IDT、ページング設定およびMultiboot2ポインタの割り当てなどを実行
- カーネルはシェルコマンド処理系とさまざまなカスタムコンポーネントで構成
QEMUでのエミュレーションとイメージ
- QEMUによる仮想マシン環境で開発とテストを実施
- ISOイメージの生成: grub2-mkrescueとxorrisoを使用
- FAT12フロッピーイメージの生成およびマウントに対応し、実機またはQEMUフラグ(
-fda fat.img)で利用可能
初期化手順
- カーネル起動時にLong Mode、Multiboot2タグ、FAT12ファイルシステム、VGA状態などを確認
- ASCIIアートのロゴを表示した後、シェルループに制御を移譲
ファイルシステム
- FAT12ファイルシステムをサポート: ファイルの読み取り/書き込み/検索/削除、ディレクトリの作成/削除などに対応
- テキストファイルの作成と上書き、サブディレクトリに対応
- fsckツールによるファイルシステム整合性チェック機能を含む
- 今後FAT32対応も計画
ネットワークスタック
- SLIPプロトコルベースでIPv4パケットを送受信
- イーサネットフレーム処理をサポート(テスト未完了)
- ICMP Echo(Request/Reply)、UDP、TCP(SYN/SYNACKステートマシン)などをサポート
- シンプルなHTTPサーバー: 静的HTMLページを配信
Snakeゲーム
- Snakeゲームを内蔵し、将来的に**マルチプレイ(P2P TCP)**版も計画
- ゲームデータ(レベル、スコア)はテキストファイルとして保存・読み込み可能
- ESCでゲームを終了し、スコアに応じてハイスコアを保存
プロジェクトの価値と活用ポイント
- Rustで書かれたOSの実例として、低レベルソフトウェア開発における安全性と生産性の向上を体感できる
- SLIP/ICMPテスト、簡単な配布、実機対応などにより、OS実験やカスタム実装の学習に適している
- Rustとx86アセンブリを組み合わせたDOSライクなシステム構造を直接体験できる
1件のコメント
Hacker Newsのコメント