← HOME

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

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

はじめに

OS自作を行う際に参考にしている書籍、Webサイト、リポジトリをまとめています。内容は随時追加・更新します。
筆者が読んだ・見た資料のみ掲載しているため、一般にはバイブルとされているような書籍でも掲載していないものも存在します。あくまで自作OSに関連する資料が中心のため、OSやコンピュータアーキテクチャの基礎知識を解説する資料の紹介は控えめになっています。
本記事はリンクをたくさん掲載ことを目的としており、各資料に対する説明等は多くありません。

[!Note] 本記事では、いわゆる「組み込みOS」については扱っていません。ご承知おきください。

書籍(OS自作)

ゼロからのOS自作入門

実装言語C++
ページ数744P
ターゲットCPUx86_64
ターゲットBIOSUEFI

作って学ぶOSのしくみ

  • 複数巻ある内の第一巻。第二巻は2025年内発売予定とのこと
  • 姉妹書の作って学ぶブラウザのしくみと併せて、OS上でブラウザを実装する
  • Rustのasync/awaitを用いて非協調的マルチタスクを実装する
  • 感想
    • 書籍には「少なくとも1つのプログラミング言語をある程度使える」読者を対象としていると書かれていますが、書籍中にRust言語そのものの解説はあまり多くないため、事前にRustについて学習する必要があると感じます
  • 関連リンク
実装言語Rust
ページ数552P
ターゲットCPUx86_64
ターゲットBIOSUEFI

自作OSで学ぶマイクロカーネルの設計と実装

実装言語C
ページ数432P
ターゲットCPUrv32
ターゲット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を題材にオペレーティングシステムの実装について詳細に解説している講義資料
  • これに限らず、新城先生の講義資料は大変役に立つので一度目に通しておくと良い

へにゃぺんて

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を紹介します

YouTube

低レイヤーガール

  • 「作って学ぶOSのしくみ」「作って学ぶブラウザのしくみ」の著者のhikaliumさん、d0iasmさんらによるチャンネル
  • 自作OS・自作ブラウザのライブコーディングや低レイヤー雑談を配信
  • まずは配信の切り抜きがおすすめ

satlinuxtube

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自作関連の講義が行われる

サイボウズ・ラボユース

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

octox

RedoxOS

Asterinas

脚注

  1. 前者2つの書籍は「モノリシックカーネル」について解説している。マイクロカーネルとの違いはこちらの記事等を参照のこと。

関連記事

シェル再実装の課題「minishell」振り返りのサムネイル

シェル再実装の課題「minishell」振り返り

#programming
blog.eno1220.devが対応しているMarkdown記法のサムネイル

blog.eno1220.devが対応しているMarkdown記法

#programming
Astro製のサイトにPagefindを導入するのサムネイル

Astro製のサイトにPagefindを導入する

#programming