TL; DR
- ゼロからのOS自作入門をやって、君も自分だけのOSを作ろう!
- ちょっとずつ作っていく過程で、歴史の追体験と機能ができたときの感動を体験しよう!
- 最高なので、今すぐ購入しよう!(ダイレクトマーケティング)
はじめに
「ゼロからのOSを自作入門」、通称mikan本をやっとこ完走したので、その感想
本当に最高だったので、その感動を共有したくて、ブログを書いている
成果物
repoはこちら
GitHub - sasurau4/mikan-os · GitHub
上記のrepoは llvm-18, WSL2, Ubuntu24.04 で動作確認して、tagも本家に倣って打ったので参考にしたい方がいればどうぞ
Ubuntu18.04環境を用意するのが大変だったのと、llvmも新しいversionで始めてどうしようもなくなったら下げるかという考えで進めた
本家はbuild scriptが別repoになっているが、repo分けると大変そうだったので一緒にした
Xでちまちまスクショ付きでツイートしてたので、そちらも見たい人は以下からどうぞ
(#ゼロからのOS自作入門) (from:sasurau4)
本家リンク
本家はこちら
GitHub - uchan-nos/mikanos: Educational Operating System · GitHub
GitHub - uchan-nos/mikanos-build: Build and run scripts for MikanOS · GitHub
GitHub - uchan-nos/os-from-zero: 『ゼロからのOS自作入門』(内田公太著、マイナビ出版)のサポートサイトです · GitHub
詰まっても、だいたいos-from-zeroのissueで既出だったので本当に助かった
公式コミュニティでも質問すれば誰かしらが答えてくれるので、最高に手厚い
始めたきっかけ
mikan本が発売された2021年・2022年ぐらいからずっとやりたいと思っていた
B+Treeの学習実装が終わったら、やろうと思っており、mini-sqliteが終わったのが 2024年10月だったので、そこから開始した
GitHub - sasurau4/mini-sqlite · GitHub
mikan本は1章1日で進める想定で組まれており、1か月では終わらないにしろ半年もあれば終わるかなと当初は思っていた気がする
進捗
git logから引っ張り出してきた
Fri Oct 11 17:05:10 2024 +0900
Mon Apr 27 21:05:29 2026 +0900
563日かかったらしい、精神と時の部屋にいたに違いない

pulseを見ると、明らかにやれてない時期があるのが分かって、面白い
2025年8月ぐらいからちょっと気合を入れて復活し、2025年11月からは年末年始に停滞したりを挟みつつ、コンスタントに進めていたらしい
ちょうど2025年8月頃にメインマシンがUbuntuからWSL2に変わって、半年ぶりで環境構築の記憶がほとんど飛んでいて苦労した
t-wadaさんのWrite code every dayを思い出して、2025年2月頃からは毎日10分でも良いから進めていた
ソフトウェア エンジニアとしての 姿勢と心構え - Speaker Deck
mikan本は非常に構成も分かりやすく、1日使えるなら30日で終わるはず
1日使えなくとも、1日1時間で良いからやれるなら3か月ぐらいでできる気がする
563日かかった人間が言うんだから間違いない(説得力0)
最初のうちは、本が分厚く30章があまりに長くて終わるんだろうか?と思っていた
半分を過ぎたあたりで、半分まで来たなーと思って、最後の3章はどんどん終わりが近づいていると感慨深くなったのが思い出深い
ちなみに、物理本でやってた
詰まったところ
GitHubのissueやQiita/Zennなど他の資料に大変助けられたのでそれらとともに振り返り
day03a
day03a以降、カーネルの起動まで進まない · Issue #134 · uchan-nos/os-from-zero · GitHub
llvm version compatシリーズ
詳細はissue参照で、自分は動いたほうが面白いので、ELF loaderを先に実装して解決した
Comparing day03a...day03b · sasurau4/mikan-os · GitHub
issueを読むとデバッグ方法も分かるので、最高
day03c
第3章_3.5カーネルからピクセルを描く(osbook_day03c)が書籍通りの実行結果とならない · Issue #168 · uchan-nos/os-from-zero · GitHub
これもllvm version compatシリーズ
Mac で始める「ゼロからのOS自作入門」 #OS自作入門 - Qiita
混乱していたのか、tagが抜けているw
Comparing day03d...day04b · sasurau4/mikan-os · GitHub
sysv_abiとseparate-codeで修正したらしい
typo, 見落とし
Makefileでoptionつけ間違えたり、asmでtypoしてたりで、地味にデバッグが大変で全然気づけなかった記憶がある
day18c
Comparing day18b...day18c · sasurau4/mikan-os · GitHub
llvm version compatシリーズ
これはgeminiに聞きまくってようやっと解決できたので、本当に感謝している
対話的Google検索
やたらデバッグに苦労している
day19a
Comparing day18d...day19a · sasurau4/mikan-os · GitHub
day18cが苦労したので、こっちも苦労した
day20b
Comparing day20a...day20b · sasurau4/mikan-os · GitHub
C++の秘孔を突いてしまった
[osbook_day20b] while(1);による無限ループについて · Issue #181 · uchan-nos/os-from-zero · GitHub
issueとqiitaの記事に助けられた
day20dでException handlerが入ってからはそこまで苦労するところはなかった
やはり、ちゃんと例外処理はしようという先人達が積み上げてきたものを再確認できる良い機会だった
テンション上がりポイント
mikan color
色がつくとすぐにテンションが上がってしまう、GUIは偉大
マルチタスク
マルチタスクは丸々2章を使って説明されており、めちゃくちゃ良い
1度では理解できていないところも多々あるが、競合が以下に大きな問題かがよく分かるようになった
マルチタスクができるようになってから加速度的にOSっぽくなっていく
Brick breaker
JavaScriptでブロック崩し作ってた記憶が蘇った
Terminal実装
GUIもめちゃ良いけど、自分が仕事道具として使っているls, echo, sort, cat, stdinなどを実装する体験はとても良かった
当たり前に使っているコマンドたちが当たり前でないことを確認できる
Debugging
-enable kvm はやめて-accel tcgを使わないと、qemuのdebug logでCPUリセットしか記録されないので気をつけましょう
私はこれに気づいたのがday20とかだったので、悲しみ
出ないと嘆いている様子
歴史の追体験
mikanosを作ると、だいたい1960年台から現代までを追体験できる(たぶん)
すべては繋がっていると体験できて非常に楽しい
最後に
著者のuchan_nos氏および出版に関わった方々には最大限の感謝をしたい
どんなソフトウェアも最初は意外と小さく作られていて、ユースケースに応じて複雑になっていく
それを複雑になった状態から解きほぐして、0から順序立ててモダンなOSを作れるようにするのはとんでもない時間がかかっている
また、GitHubにあるソースコード、サポートサイト、コミュニティなどなど躓いても助けてくれる様々なものも用意されている
そんな本がたったの3,300円ちょっとで買えてしまうのだから、興味があったらどんどん買おう!
次はCPU自作だ!!!