OS自作ゼミの紹介 - セキュリティ・キャンプ全国大会 2022
このページはセキュリティ・キャンプ全国大会 2022 の開発コース「OS 自作ゼミ」の紹介ページです。 参加費無料で講義を受けることができますので、22 歳以下の方は是非応募してください。
OS 自作ゼミ 基本情報
OS 自作ゼミの基本的な情報は以下の通りです。
- イベント:セキュリティ・キャンプ全国大会 2022
- コース:開発コース
- ゼミ:OS 自作ゼミ
- 必要機材:PC、その他必要に応じて仕様書や参考書など
- 事前学習:あり(詳しくは後述)
- 講師:hikalium、内田
IPA の公式サイトはこちらです https://www.ipa.go.jp/jinzai/camp/2022/information_camp2022.html
OS 自作とは
去年は「ゼロからの OS 自作入門」(通称、みかん本)が出版されたり、「自作RDBMSを自作OSの上で動かしてみよう」という動画が配信されたりと、「OS 自作」が話題になりました。 OS 自作ゼミではパソコン用のオリジナル OS を作ります。つまり、OS 自作をします!
そもそも「OS を作る」というのはどんなことでしょうか。 このページを読んでいる皆さんはきっと、普段からパソコンを使っていることと思います。 使っている OS は Windows、macOS、Linux のどれかではないでしょうか?(もしかしたら最近は ChromeOS をお使いの方もいるかもしれませんね) そんなものを「作る」のは果たして可能なのだろうか、と思うかもしれません。
確かに現代のパソコン用 OS の規模はとても大きくなっていて、その規模のものを個人で作るのは無理です1。 しかし「OS の骨格部分を作る」に限定すれば、そんなに無理な話ではありません。 「ゼロからの OS 自作入門」では 30 章に分けて OS を 1 から作っています。 ここで作る OS は規模は約 1 万 1 千行程度です。この規模なら個人でもなんとか作れます。 それでいて、プロセス管理、メモリ管理、デバイスドライバなど、OS の基礎を学べちゃうのです。
Windows や macOS、Linux などの高機能なパソコン用 OS が存在する現代において、「OS 自作」は何の役に立つのでしょうか. 筆者(内田)が考える OS 自作の良いところは次の 3 点です。
- 低レイヤのプログラミングは楽しい
- OS の気持ちが分かる
- 低レイヤに詳しくなれる
人によりますが、筆者は低レイヤプログラミングがとても好きです。 普通のアプリケーションを書いているだけではパソコンの中身を触ることはできませんが、OS を書くということは存分にハードウェアを触れます。 筆者は、この「ハードウェアを自分の力で操ってる感」が楽しみで OS 自作をしています。 ハードウェアを制御するドライバプログラムを書いているときが一番幸せです。 グラフィックボード、PCI バス、USB コントローラ、タイマ、ストレージ、メモリ、など、多様なデバイスと接することができます。
また、OS は IT システムを構成する重要な要素です。OS の気持ちを理解するということは、システムの根幹を理解するということです。
現代では OS の中身を知らなくても簡単にアプリケーションを開発できるため、多くの人にとっては OS が具体的に何をするかは謎ですし、謎のままでそんなに困っていないかもしれません。 しかし、OS の理解は時として重要なことがあります。 例えば性能が重要なシステムを構成するには、OS やハードウェアの挙動が想像できると非常に有利です。 また、システム障害(性能問題)の原因を解析する際、OS についての深い知識が欠かせません。
セキュアなシステムを作るにも OS を含む低レイヤへの理解が重要です。 低レイヤにセキュリティ脆弱性があると、単一のアプリーションにとどまらずシステム全体の安全を脅かします。 2018 年頭に発見され、今なお同類の脆弱性が発見され続けている Spectre & Meltdown はその代表例でしょう。 多数の顧客が同一システムに載るクラウドサービスが全盛の現代では、低レイヤを深く知る重要性がより高まっていると言えます。
OS 自作ゼミでやること
OS 自作ゼミでは、受講生は各自で OS を作ります。 それを講師陣がサポートする、というのが基本的なスタイルです。
講師はそれぞれ得意分野があります。どの講師に応募するか、以下を参考にして決めてください。
- hikalium はこんな人々をサポートできます
- NVDIMMであそびたい人
- Rust で自作 OS したい人
- 自作 OS でネットワーク通信したい人
- 自作 OS 上で自作ブラウザをしたい人
- 大規模なソースコードの読み方を知りたい人
- 内田はこんな人をサポートできます
ここに載っていない話題でも、一緒に悩んだり調べたりしてお手伝いできますので安心してください!
皆さんからの応募をお待ちしております!
-
「ゼロからの OS 自作入門」によれば、2017 年にリリースされた Linux のバージョン 4.10 は約 2100 万行だそうです。minimal linux は,最低限の動作だけするように Linux からコードをそぎ落としたものですが、それでも圧縮した状態で 15MB 程度のコード量です。これを個人で書くのはとても難しいですね。↩