16
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

OSを自作する書籍については
30日で作るOS自作入門(絶版)
や、上記30日の本を現代版にアレンジした以下の書籍

がありますね

でも、Rustで書こうとしてもC++で書かれていたり、仮想メモリ・ページング・バディアロケータやスラブアロケータ・デマンドページングといったものについて詳細に解説してくれている物ではありません。
せっかく書くなら好きな言語で書けたほうがモチベ上がると思う。
あと、メモリ管理はやっぱりOSの要ですから、しっかりと作りこみたいものなんですよ。

と思いつつ、5年ちょいが経過したところ、みんな大好きClaudeCode(やCodex・Devin等)のAIコーディングエージェントが爆誕しました。
これ・・・もしかしてフルスクラッチでRust使って実装できるんじゃね?

と思ったわけです。

モチベーション

OSを理解しながら作る教材OSを作ろう

ちょっとずつ作りながら学び、Agentが作ったバグを整理した資料も作ることで、人間もAgentもハマるカーネルバグの寄せ集めや、作り方の解説ドキュメントを作れば俺自身も理解が深まると思った。

エージェントを使って作りながら勉強する
オープンクエスチョンなOS自作体験です
(これまでは著者に質問するしか方法が無かった、回答をもらえる保証も一切ない)

これから好きな言語でOSを自作してみたいなーと思っている方に届けばいいなと思います。

大まかな進め方の説明

  1. Claude Code Opus(Thinking+EffortはLowで大丈夫)で大まかな設計をする
  2. 設計を一つずつ詳細化する(Claude Code Opus、Thinking +Effort Low)
  3. TODOリストを作ってもらう
  4. TODOリストに基づいて一つずつ進めるようにCLAUDE.mdに書く(書いてもらう)
  5. 開発者が動作確認を行い、おかしい挙動をAIにフィードバックする(もしくはシリアルをそのまま読ませる(簡単だけど、コンテキストを膨大に使うので非推奨))
  6. 動確が問題なければドキュメントを書いてもらう
    1. なぜこの処理を入れるのか、この処理の考え方はどんな考え方で生まれたのか、など自分が知りたい情報をドキュメント化してもらう
  7. これをTODO単位で繰り返す

という感じです。
これでドキュメントとコードがセットになります。

Q. コードを自分で改良したいときはどうするの?
A. まずgitに変更前のコードをコミットしておいて、改良する・したところをAIに伝えて、ドキュメントとコードの一貫性を保ちます(関連するドキュメントを更新してくれと指示するだけ)
このとき、CLAUDE.mdまたはSKILL.mdにgit diff使えってあらかじめ指示を書いておくと便利です

成果物

ドキュメントネットワーク

image.png

ド頭のインデックス(README)

image.png

image.png

image.png

全体

image.png

各詳細ドキュメント(仮想メモリ管理の例)

image.png

コード

カーネルのソースとvmallocのソース

image.png

おわりに

ほかにもACPIでの電源管理(シャットダウンやリブート)にも対応したり、今後はHDDやSSDへのアクセスなんかも実装するつもりです。

ちなみにこれだけ実装しても、Claude CodeのProプランの1週間使い切って次の週に若干足が出る(20%)くらいでした。
なので、おおよそ1週間のリミットくらいのコンテキストでメモリ管理+ACPI+APIC+それぞれの解説文書は書けるという感じです。

良い時代に生まれて良かった。
専属のプロフェッショナルが隣にいるので、仕組みを学習するにはいい世の中になりました。

ただ使って生成物を出すだけじゃなくて、学ぶために使うという方向性でした。

16
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?