OS自作で参考になる書籍・サイト・リポジトリのまとめ

はじめに
OS自作を行う際に参考にしている書籍、Webサイト、リポジトリをまとめています。内容は随時追加・更新します。
筆者が読んだ・見た資料のみ掲載しているため、一般にはバイブルとされているような書籍でも掲載していないものも存在します。あくまで自作OSに関連する資料が中心のため、OSやコンピュータアーキテクチャの基礎知識を解説する資料の紹介は控えめになっています。
本記事はリンクをたくさん掲載ことを目的としており、各資料に対する説明等は多くありません。
[!Note] 本記事では、いわゆる「組み込みOS」については扱っていません。ご承知おきください。
書籍(OS自作)
ゼロからのOS自作入門
- 著名な「30日でできる!OS自作入門」の後継的書籍
- 「30日でできる!OS自作入門」を勧める記事が多いですが、扱っているCPUアーキテクチャが古いなど現在主流となっている環境とは異なるため、個人的には「ゼロからのOS自作入門」に取り組むことをおすすめします
- 通称「mikan本」
- 作成するOSではUSBをサポートしているが、USBドライバについてはUSB 3.0 ホストドライバ自作入門において別途解説されている
- 関連リンク
実装言語 | C++ |
ページ数 | 744P |
ターゲットCPU | x86_64 |
ターゲットBIOS | UEFI |
作って学ぶOSのしくみ
- 複数巻ある内の第一巻。第二巻は2025年内発売予定とのこと
- 姉妹書の作って学ぶブラウザのしくみと併せて、OS上でブラウザを実装する
- Rustの
async/await
を用いて非協調的マルチタスクを実装する - 感想
- 書籍には「少なくとも1つのプログラミング言語をある程度使える」読者を対象としていると書かれていますが、書籍中にRust言語そのものの解説はあまり多くないため、事前にRustについて学習する必要があると感じます
- 関連リンク
実装言語 | Rust |
ページ数 | 552P |
ターゲットCPU | x86_64 |
ターゲットBIOS | UEFI |
自作OSで学ぶマイクロカーネルの設計と実装
- 筆者の実装した「HinaOS」を用いてマイクロカーネル1の実装を解説
- このほかにもMINIX3、seL4、GNU Hurdについても解説し、それぞれのマイクロカーネルの比較を行う
- OS in 1,000 Linesはこの書籍の補足として執筆されている
- 関連リンク
実装言語 | C |
ページ数 | 432P |
ターゲットCPU | rv32 |
ターゲットBIOS | - |
書籍(OS)
はじめてのOSコードリーディング
- UNIX V6を対象に、ひとつひとつの処理をソースコードを1行1行追いながら解説する本
- 感想
- 古の
K&R
スタイルのC言語で実装されている、PDP-11
という1975年当時のアーキテクチャを対象としている、などにより独特の難しさを感じた
- 古の
xv6: シンプルでUnix風な教育用オペレーティングシステム
- リンク先PDF注意
- UNIX V6のx86向け再実装であるxv6という教育向けOSを解説する教科書の日本語訳
- 原文はこちら
- 感想
- xv6はシンプルで程よい大きさのため、OSの理解やOS実装の参考に大変適していると感じる
- xv6に関する日本語のブログポストも多い
- 関連リンク
自作OSにおいて、Linuxの知識は役に立ちます。上が抽象的、下に行くにつれてソースコードレベルの解説が登場します。
試して理解 Linuxのしくみ
- Linuxカーネルの基礎的な知識をカラフルな図表とともに解説する本
Linuxカーネルプログラミング 第2版
- カーネルモジュールを実装しLinuxカーネルの主要なサブシステムについて理解を深めるスタイルの本
- ソースコードレベルの解説は少ない
- 2024年時点で最新のLinuxカーネルを取り扱っている
詳解 Linuxカーネル
- Linuxカーネルの仕組みをソースコードレベルから丁寧に解説
- 2007年出版で、Linux 2.6を対象としているため内容としては古いものの、Linuxをソースコードレベルで解説している本は大変貴重
Linuxカーネル2.6解読室
- Linuxカーネルの主要な箇所について関連するデータ構造含めソースコードを追いながら解説する書籍
書籍(同人誌)
OSGirls / OSGirls2
- 4人の高校生たちが、実際に手を動かしながらOperating Systemとは何かを追い求めていくお話のエントリポイント
- 国立国会図書館東京館でも読める
Otaku Assembly
- 自作OS・CPU・コンパイラなど低レイヤー技術を中心の同人グループ
Webサイト
OSDev Wiki
- OS自作に関連するあらゆる情報がまとめられている
- OS自作を始める前に目次だけでも目を通しておくと良い
OS in 1000 lines
- C言語を用いて1000行で小さなOSを実装する
- はじめてOS自作に取り組む方に最もおすすめ
Writing an OS in Rust
- RustでOSを実装する
- x86_64の基礎的な知識・RustでOSを書く際の知識がまとめられている
- Rustの経験があるのなら、このサイトを読んでOS自作に入門するのがおすすめ
Writing Hypervisor in Zig
- ハイパーバイザを実装する内容だが、ブートやカーネルの実装は自作OSの参考になる
オペレーティングシステム II(筑波大学)
- Linuxを題材にオペレーティングシステムの実装について詳細に解説している講義資料
- これに限らず、新城先生の講義資料は大変役に立つので一度目に通しておくと良い
へにゃぺんて
- OS制作等、低レイヤーを中心に多くの同人誌を発行されているサークル「へにゃぺんて」さんのWebサイト
- 自作OSの参考になる同人誌
osdev-jp core
- OS自作をする上で参考になる仕様書のまとめやツールの解説
os_dev_specs
- hikalium先生がまとめている、OS自作で参考になる仕様書のリスト
- 仕様書をまとめてダウンロードするツールも実装されている
自作OSデバッグに便利なボードの一覧
- 自作OSを実機で動かす場合に便利なボードの紹介
- 現在はChromebookを使ってみると良い(らしい)
opv86
- x86_64のアセンブリを便利に検索することのできるツール
Compiler Explorer
- ソースコードとアセンブリの対応を手軽に確認できるWebアプリ
Embedded Rust Techniques
- 組み込みRustをする際のテクニックをまとめたサイト
no_std
環境におけるRustの使い方が掲載されており、Rustで自作OSをする際に参考になる
This Month in Rust OSDev
- Rustコンパイラや自作OSに便利なクレートの更新状況、Rustで実装されたOSの紹介やブログポストの紹介を毎月行っている
マイクロカーネルの設計と実装
Intel SDM
- x86_64アーキテクチャの仕様書
新Linuxカーネル解読室
- VA Linux Japanの技術者の皆さんが最新のLinuxカーネルをソースコードレベルで読み解くブログシリーズ
Linux Inside
自作OSをされている方のブログサイト
自作OSはじめ低レイヤー技術のブログポストを多数投稿されていらっしゃる方々のWebサイトをまとめます
このほか、毎年12月に行われている自作OS Advent Calendarを紹介します
- 自作OS Advent Calendar 2024
- 自作OS Advent Calendar 2022
- 自作OS Advent Calendar 2021
- 自作OS Advent Calendar 2020
YouTube
低レイヤーガール
- 「作って学ぶOSのしくみ」「作って学ぶブラウザのしくみ」の著者のhikaliumさん、d0iasmさんらによるチャンネル
- 自作OS・自作ブラウザのライブコーディングや低レイヤー雑談を配信
- まずは配信の切り抜きがおすすめ
satlinuxtube
- 「試して理解 Linuxのしくみ」著者のsatさんによるチャンネル
- Linuxカーネルについて解説する動画が中心
- OSカーネルに興味がある人におすすめの参考資料
osdev-jp
- osdev-jpのYouTubeチャンネル
- 「OS自作もくもく会」の録画や過去に行っていた「RedoxOSを読む会」の録画等がアップロードされている
45分でゼロから作る!OS自作ライブコーディング
- マイクロカーネル本著者の怒田さんがOSをライブコーディングされている動画
イベント・プログラム
OS自作に関心のある方におすすめのイベントやプログラム等を紹介します。OS自作に関心があるような層と交流を持つ機会にもなりますのでぜひ参加・応募してみてください。
SecHack365
- NICT(国立研究開発法人情報通信研究機構)主催
- 25歳以下を対象に、セキュリティイノベーターとしてセキュリティのさまざまな課題にアイディアで切り込める人材を育成する長期ハッカソン
- 応募時にコース・ゼミを選択し、SecHack365を通して開発したいプロダクトの提案を行う
- 受講料無料。学生の場合、集合回における交通費・宿泊費も無料
- OSのほか、ハイパーバイザや言語処理系、CPUなど「低レイヤー」を制作する人たちが集まっている
- 「低レイヤー」に関心がある場合は、開発駆動コース川合ゼミ・学習駆動コース坂井ゼミ・同今岡ゼミ・研究駆動コースがおすすめ
- リンク先の各コース・ゼミ紹介や応募課題を参考に選択してみてください
セキュリティキャンプ
- IPA(独立行政法人情報処理推進機構)主催
- 学生に対して情報セキュリティに関する高度な技術教育を実施し、次代を担う情報セキュリティ人材を発掘・育成する事業
- 全国大会: 例年8月中旬に1週間程度東京で開催される
- セキュリティキャンプ・ミニ: 各地方で週末に1-2日程度開催される
- 受講料、交通費、宿泊費無料
- 例年全国大会において「OS自作ゼミ」が開講されている(ただし2025年度は非開講)
- 全国大会ではOS自作のみならず、Cコンパイラやサニタイザーなど「低レイヤー」に関連する講義が行われている
- セキュリティキャンプ・ミニにおいてもときたまOS自作関連の講義が行われる
サイボウズ・ラボユース
- サイボウズ・ラボ株式会社の実施する若手育成プログラム
- 個人のソフトウェア開発を支援する
- 年間上限103万円まで支援を受けることができる
- 低レイヤー開発コースやシステムソフトウェア研究・開発コースがある
OS自作もくもく会
- osdev-jpが主催するLT+もくもく会
- おおよそ奇数月最終土曜日に開催
- 不定期で「OS自作もくもく作業会」も開催されている
KernelVM探検隊
- 「低レイヤー」分野を中心に様々な技術や取り組みについて発表するイベント
- 年数回、主に東京・大阪・北陸で開催されている
ポッドキャスト
Turing Complete FM
- moldリンカの開発などで知られるRui Ueyama氏のポッドキャスト
- 各回のゲストとOS・言語処理系・CPUなどの話題について1時間ほどトークする
コミュニティ
osdev-jp
- OS自作をやっている集まって進捗の共有や作業をする会
- Discordでの交流を行なっている
- 参加については参加方法を参考のこと
r/osdev
- 英語圏のSNSであるRedditにおける自作OSコミュニティ(スレッド)
- 制作したOSの紹介、OS関連の話題のシェア、自作OSの質問などが投稿されている
- 若干治安が悪い
リポジトリ
自作OSの参考になるOSのリポジトリやWebサイトを紹介します。一部リポジトリはリストにまとめていますので参考にしてください。
linux
- ソースコードを読む際はbootlinが便利
xv6(x86版)
- xv6のx86版実装
- (おそらく)いちばん手軽に読めるOS実装
xv6(riscv版)
- xv6のriscv版実装
pretzelhammer/rust-blog
- Writing an OS in Rustで解説されているOS
mikanos
- ゼロからのOS自作入門で解説されているOS
wasabi
- 「作って学ぶOSのしくみ」で解説されているOS
- 書籍で解説されているソースコードは
wasabi4b
ブランチ
- 書籍で解説されているソースコードは
Methylenix
- 関連リンク
starina
resea
kerla
- Rustで実装されたLinuxバイナリ互換OS
- 関連リンク
octox
- Rustで実装されたUnix-LikeOS
- 関連リンク
RedoxOS
- Rustで実装されたUnix-Likeなマイクロカーネル
- 関連リンク
Asterinas
- Rustで実装されたLinux互換カーネル
- 関連リンク