uchan note

プログラミングや電子工作の話題を書きます

OS自作ゼミの紹介 - セキュリティ・キャンプ全国大会 Yトラック

このページはセキュリティ・キャンプ全国大会 2021 の集中コース「OS 自作ゼミ」の紹介ページです。 参加費無料で講義を受けることができますので、22 歳以下の方は是非応募してください。

(本記事は随時更新するかもしれません。特に 4 月中は更新頻度が高いことが予想されます。時々見に来てくださると嬉しいです。)

OS 自作ゼミ 基本情報

OS 自作ゼミの基本的な情報は以下の通りです。

  • イベント:セキュリティ・キャンプ全国大会 2021 オンライン
  • トラック:システムソフトウェア自作トラック
  • ゼミ:OS 自作ゼミ
  • 必要機材:PC、その他必要に応じて仕様書や参考書など
  • 事前学習:あり(詳しくは後述)
  • 講師:怒田さん、hikalium さん、内田

IPA の公式サイトはこちらです https://www.ipa.go.jp/jinzai/camp/2021/zenkoku2021_index.html

Y トラック紹介動画 https://www.youtube.com/watch?v=uki1aZGqjQw&list=PLBN6Ykr56kyA1603wRPLrWuFt15e6KrA2&index=6

OS 自作とは

最近は「ゼロからの OS 自作入門」という、みかんの表紙の本が出版され、にわかに「OS 自作」が話題になっています。 OS 自作ゼミではパソコン用のオリジナル OS を作ります。つまり、OS 自作をします!

そもそも「OS を作る」というのはどんなことでしょうか。 このページを読んでいる皆さんはきっと、普段からパソコンを使っていることと思います。 使っている OS は WindowsmacOSLinux のどれかではないでしょうか?(もしかしたら最近は ChromeOS をお使いの方もいるかもしれませんね) そんなものを「作る」のは果たして可能なのだろうか、と思うかもしれません。

確かに現代のパソコン用 OS の規模はとても大きくなっていて、その規模のものを個人で作るのは無理です1。 しかし「OS の骨格部分を作る」に限定すれば、そんなに無理な話ではありません。 「ゼロからの OS 自作入門」では 30 章に分けて OS を 1 から作っています。 ここで作る OS は規模は約 1 万 1 千行程度です。この規模なら個人でもなんとか作れます。 それでいて、プロセス管理、メモリ管理、デバイスドライバなど、OS の基礎を学べちゃうのです。

WindowsmacOSLinux などの高機能なパソコン用 OS が存在する現代において、「OS 自作」は何の役に立つのでしょうか. 筆者(内田)が考える OS 自作の良いところは次の 3 点です。

  1. 低レイヤのプログラミングは楽しい
  2. OS の気持ちが分かる
  3. 低レイヤに詳しくなれる

人によりますが、筆者は低レイヤプログラミングがとても好きです。 普通のアプリケーションを書いているだけではパソコンの中身を触ることはできませんが、OS を書くということは存分にハードウェアを触れます。 筆者は、この「ハードウェアを自分の力で操ってる感」が楽しみで OS 自作をしています。 ハードウェアを制御するドライバプログラムを書いているときが一番幸せです。 グラフィックボード、PCI バス、USB コントローラ、タイマ、ストレージ、メモリ、など、多様なデバイスと接することができます。

また、OS は IT システムを構成する重要な要素です。OS の気持ちを理解するということは、システムの根幹を理解するということです。

現代では OS の中身を知らなくても簡単にアプリケーションを開発できるため、多くの人にとっては OS が具体的に何をするかは謎ですし、謎のままでそんなに困っていないかもしれません。 しかし、OS の理解は時として重要なことがあります。 例えば性能が重要なシステムを構成するには、OS やハードウェアの挙動が想像できると非常に有利です。 また、システム障害(性能問題)の原因を解析する際、OS についての深い知識が欠かせません。

セキュアなシステムを作るにも OS を含む低レイヤへの理解が重要です。 低レイヤにセキュリティ脆弱性があると、単一のアプリーションにとどまらずシステム全体の安全を脅かします。 2018 年頭に発見され、今なお同類の脆弱性が発見され続けている Spectre & Meltdown はその代表例でしょう。 多数の顧客が同一システムに載るクラウドサービスが全盛の現代では、低レイヤを深く知る重要性がより高まっていると言えます。

OS 自作ゼミでやること

OS 自作ゼミでは、受講生は各自で OS を作ります。 それを 3 人の講師がサポートする、というのが基本的なスタイルです。

講師はそれぞれ得意分野があります。どの講師に応募するか、以下を参考にして決めてください。

  • 怒田はこんな人をサポートできます
  • hikalium はこんな人々をサポートできます
    • NVDIMMであそびたい人
    • (怒田さんほどではないけど)Rust で自作 OS とか、自作 OS でネットワーク通信とかしたい人(liumOS 改造ネタなどもあり)
    • 自作 OS 上で自作ブラウザをしたい人(liumOS には GUI が未実装なので実装してくれる人大歓迎)
    • 怒田さんの OS「Resea」と liumOS 間の通信
    • 大規模コード(Linux)の読み方
  • 内田はこんな人をサポートできます
    • 0 から OS を作りたい人
    • ページングでメモリ管理したい人
    • USB ドライバを作りたい人
    • 自作の電子工作機器を制御したい人

皆さんからの応募をお待ちしております!


  1. 「ゼロからの OS 自作入門」によれば、2017 年にリリースされた Linux のバージョン 4.10 は約 2100 万行だそうです。minimal linux は,最低限の動作だけするように Linux からコードをそぎ落としたものですが、それでも圧縮した状態で 15MB 程度のコード量です。これを個人で書くのはとても難しいですね。