30分で分かる!
OSの作り方
自作OSコミュニティosdev-jp
@uchan_nos
自己紹介
• Twitter: @uchan_nos
• 自作OSコミュニティosdev-jpコアメンバー
• 『30日でできる! OS自作入門』
の校正を担当
• 『自作エミュレータで学ぶ
x86アーキテクチャ』の著者
OSとは
• Operating System
Microsoft Windows 10 のスクリーンショット
OSとは
• 定義はいろいろ
• 「OSとは、ソフトウェアの
種類の一つで、機器の基本
的な管理や制御のための機
能や、多くのソフトウェア
が共通して利用する基本的
な機能などを実装した、シ
ステム全体を管理するソフ
トウェア。」
http://e-words.jp/w/OS.html
https://en.wikipedia.org/wiki/Operating_
system#/media/File:Kernel_Layout.svg
OSとは
• 『30日でできる! OS自作入門』の定義
結局のところ、それぞれの作者が
「これはOSなんだ」と言い張って、
周囲の人も「まあそうかな」と思
えばどんなソフトでもOSなんです。
OS自作とは
• ほかのOSの力を借りずに起動するソフトウェ
ア(なんでもいい)を作ること
• ハードウェアに近い世界
• → パソコンを支配する感覚
• → エキサイティング!
OS自作も一歩から
自作OSにおける “Hello World”
有名な
自作OSたち
http://z-slash.net/os/osask/osask.png
OSASK
Mona OS
https://a.fsdn.com/con/app/proj/monaos/screenshots/90657.jpg
はりぼてOS
http://hrb.osask.jp/figures.html
OS自作の方向性
• システムプログラミングを楽しむ
• OS理論を学ぶ
• 実用的なOSを作る
• 既存OSを改良する
システムプログラミング
を楽しむ
• 『 30日でできる!OS自作入門』の方向性
• 単純にOS作成を楽しむ=娯楽
• コンピュータのハードウェアを支配してる感じ
で楽しい
• CPUと戯れる
• デバイスと戯れる
• 低レイヤに詳しくなれる!
http://cdn-ak.f.st-hatena.com/images/fotolife/r/rinie/20090409/20090409144532.jpg
OS理論を学ぶ
• 『オペレーティングシステム 第3版
設計と実装』などを読んだりする
• メモリ管理、プロセス管理、ファイルシステム、
デバイスドライバの仕組みなどを学ぶ
Intel 64 and IA-32 Architectures Software Developer’s Manual より引用
ページングによる
メモリ管理の仕組み
実用的なOSを作る
• 既存OSが移植されてないハードウェアのOS
• 特定の処理のオーバーヘッドが小さいOS
• 例:liva氏作の、Intel e1000ギガビットイーサに
対応したOS。Linuxより低遅延に通信できる。
• 一人で汎用かつ実用的なOSを作ることは現代
ではほぼ無理
• 汎用性を捨てれば活路がある
既存OSを改良する
• LinuxやFreeBSDなどを改造する
• 現代において汎用かつ実用的なOSを目指すな
らこの路線
• この発表でいう「OS自作」ではない
OSを自作する方法
• 入門書を手に入れる
• 取りあえずその通り作ってみる
• 後は自由に改造したり知識を深めたり
OSを自作する方法
• 入門書を手に入れる
• 取りあえずその通り作ってみる
• 後は自由に改造したり知識を深めたり
たったの3ステップ!
入門書を手に入れる
『30日でできる! OS自作入門』
から始めるのがおすすめ
30日後
OS自作入門:一日目
• P.14「とにかくやるのだぁ」
• バイナリエディタだけで
1.4MBのFDイメージを作成
OS自作入門:二日目
• p.29「まずはテキストエディタの紹介」
• テキストエディタがバイナリエディタの後
にくる書籍なんて聞いたことない!
OS自作入門:四日目
• p.69「C言語と画面表示の練習」
• p.95でなんとなく「OS」らしき画面が!
http://hrb.osask.jp/figures.html
OS自作入門:八日目
• マウスが動くようになる
• メモリ管理ができるようになる
http://hrb.osask.jp/figures.html
OS自作入門:三十日目
• 32ビット、マルチタスク、
ウィンドウシステム、JPGデコーダ
http://hrb.osask.jp/figures.html
その後の進路はいろいろ1
• OSの機能を拡張していく
• 高機能なシェル
• タスク間通信
• UEFI起動に対応
• OSの理論を勉強する
• ページング、仮想記憶
• mutex、共有メモリ
• ファイルシステム
ウィンドウサイズが
変えられなくて辛い
その後の進路はいろいろ2
• いろんな言語で再実装する
• C/C++/D/Rust/C#など
• 他のアーキテクチャへの移植
• 2006年当時、いち早くC++化に成功したブログ記事
• 自作OSもくもく会では
Rustでの再実装を試みる人がいたり。
「はりぼてOSでC++言語を使いたい」
http://d.hatena.ne.jp/Bayside/20060518/p1
その後の進路はいろいろ3
• デバイスドライバを充実させる
• ディスク読み書き
• ネットワークドライバ
• USB機器の制御
• グラフィックボード
• 既存OSのドライバの移植 http://yourdriversdownload.blogspot.jp/2011/12/
realtek-rtl8139-family-pci-fast.html
例えば私が作ったOS
• elf_haribote
• はりぼてOS + ELFバイナリのローダ
• seriboteOS
• はりぼてOS + RS-232C通信
http://sanwa.jp/product/syohin_img/K/KR-9EN2_MA.jpg
OS本体の製作の参考書
• 『30日でできる! OS自作入門』川合 秀実
• 『12ステップで作る組込みOS自作入門』坂井 弘亮
• 『オペレーティングシステム 第3版 設計と実
装』Andrew S. Tanenbaum
• 『はじめて読む486』蒲地輝尚
• 『Intel 64 and IA-32 Architectures Software
Developer’s Manual』Intel Corporation
• 『Microsoft Extensible Firmware Initiative FAT32 File
System Specification』Microsoft Corporation
• 『詳解 Linuxカーネル 第3版』Daniel P. Bovet, Marco
Cesati
• 『リンカ・ローダ実践開発テクニック』坂井 弘亮
ドライバ製作の参考書
• 『パソコンのレガシィI/O活用大全』桑野 雅彦
• Web 版 http://www.cqpub.co.jp/column/books/2001a/34331PC_Legacy/
• 『組み込み機器へのUSBホスト実装技法』イン
ターフェース編集部
• 『PCIバス&PCI‐Xバスの徹底研究』インターフェー
ス編集部
• 『Ethernetのしくみとハードウェア設計技法』イン
ターフェース編集部
• 『Serial ATA AHCI: Specification, Rev. 1.3.1』Intel
Corporation
• 『PCI Specification, Revision 3.0』PCI-SIG
日本のOS自作の歴史
1992 - 1994
第1期自作OSブーム
BTRON系がメイン
BTRON386
B-Free OS
主にここから引用
http://osask.net/w/197.html
2000 -
第2期自作OSブーム
OSASKが初リリース
1994年3月14日
Linux 1.0.0
OSASK
• 川合さんが主担当
• 100KB以下の極小
OSイメージ
• ウィンドウシステム
• プリエンプティブ・
マルチタスク
2002/06/18 2chに伝説のスレが立つ
Mona OSが初リリース2002
NWSOS, MEG-OSリリース2002
@uchan_nos
OSASKを知る
2002?
2003
第2期ブーム最盛期
osdev-jというWikiが発足
→のちのdev-j
派生してOS-Wikiが発足
OS-Wiki http://community.osdev.info/ より
2005
第2期ブーム終焉
dev-j界が徐々に停滞
OSASKリリース停滞
NWSOS開発終了
MEG-OS中断
→おれんじぺこになるも、
それも開発終了
2005
第2期ブーム終焉
dev-j界が徐々に停滞
OSASKリリース停滞
NWSOS開発終了
MEG-OS中断
→おれんじぺこになるも、
それも開発終了
2006
第3期自作OSブーム
『 30日でできる!
OS自作入門』出版
はりぼて友の会結成
2007 はりぼて友の会
@IT に取材される
http://jibun.atmarkit.co.jp/lcom01/rensai/comtan02/comtan01.html
2008
第4期自作OSブーム
OSASK-HB内部リリース
おれんじぺこリリース再開
NWSOS開発再開(宣言)
2007 Mona OS開発停滞
→2002年までに誕生した
古参のOSプロジェクト
は壊滅状態に。
2007 はりぼて友の会活動停滞
2009 OSASK一般公開停止
2016 osdev-jp結成
自作OSもくもく会が始動
第5期自作OSブームへ
2013 KたんがOSASKコミュニティ
へ復帰
2012 OSECPU-VM開発開始
OS自作関係の3人が
偶然出会ってしまった
自作OSのコミュニティ
osdev-jp
Web: osdev.jp
Slack: osdev-jp.slack.com

30分で分かる!OSの作り方

Editor's Notes

  • #11 戯れる「たわむれる」