7.2K Views
May 04, 18
スライド概要
OS自作とは何なのか,どうやったら最初の一歩を踏み出せるのか,自作OS界隈の歴史などを説明します.
サイボウズ・ラボ株式会社で教育向けのOSやCPU、コンパイラなどの研究開発をしています。
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たち はりぼてOS OSASK http://hrb.osask.jp/figures.html http://z-slash.net/os/osask/osask.png Mona OS https://a.fsdn.com/con/app/proj/monaos/screenshots/90657.jpg
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でC++言語を使いたい」 http://d.hatena.ne.jp/Bayside/20060518/p1 • 自作OSもくもく会では Rustでの再実装を試みる人がいたり。
その後の進路はいろいろ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ブーム 主にここから引用 http://osask.net/w/197.html BTRON系がメイン BTRON386 B-Free OS 1994年3月14日 Linux 1.0.0 2000 第2期自作OSブーム OSASKが初リリース
OSASK • 川合さんが主担当 • 100KB以下の極小 OSイメージ • ウィンドウシステム • プリエンプティブ・ マルチタスク
2002/06/18 2chに伝説のスレが立つ 2002 Mona OSが初リリース
2002 NWSOS, MEG-OSリリース 2002? @uchan_nos OSASKを知る
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
2007 はりぼて友の会活動停滞 2007 Mona OS開発停滞 →2002年までに誕生した 古参のOSプロジェクト は壊滅状態に。 2008 第4期自作OSブーム OSASK-HB内部リリース おれんじぺこリリース再開 NWSOS開発再開(宣言) 2009 OSASK一般公開停止
2012 OSECPU-VM開発開始 2013 KたんがOSASKコミュニティ へ復帰 OS自作関係の3人が 偶然出会ってしまった 2016 osdev-jp結成 自作OSもくもく会が始動 第5期自作OSブームへ
自作OSのコミュニティ osdev-jp Web: osdev.jp Slack: osdev-jp.slack.com