Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,179 views

Published on

OS自作とは何なのか,どうやったら最初の一歩を踏み出せるのか,自作OS界隈の歴史などを説明します.

Published in: Software
  • Be the first to comment

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

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

×