SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
30分で分かる!OSの作り方
Report
uchan_nos
Follow
May. 3, 2018
•
0 likes
•
39,729 views
1
of
38
30分で分かる!OSの作り方
May. 3, 2018
•
0 likes
•
39,729 views
Download Now
Download to read offline
Report
Software
OS自作とは何なのか,どうやったら最初の一歩を踏み出せるのか,自作OS界隈の歴史などを説明します.
uchan_nos
Follow
Recommended
30分で分かる!OSの作り方 ver.2
uchan_nos
4.8K views
•
50 slides
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
21K views
•
91 slides
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
159.5K views
•
16 slides
C#とILとネイティブと
信之 岩永
26.1K views
•
63 slides
.NET 7期待の新機能
TomomitsuKusaba
1.1K views
•
25 slides
TDD のこころ
Takuto Wada
12.6K views
•
52 slides
More Related Content
What's hot
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
12.7K views
•
31 slides
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
147K views
•
45 slides
入門 シェル実装
Yusuke Sangenya
19.8K views
•
37 slides
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
13.7K views
•
30 slides
Glibc malloc internal
Motohiro KOSAKI
61.5K views
•
86 slides
WebSocketのキホン
You_Kinjoh
24K views
•
63 slides
What's hot
(20)
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
•
12.7K views
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
•
147K views
入門 シェル実装
Yusuke Sangenya
•
19.8K views
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
•
13.7K views
Glibc malloc internal
Motohiro KOSAKI
•
61.5K views
WebSocketのキホン
You_Kinjoh
•
24K views
USB3.0ドライバ開発の道
uchan_nos
•
2.2K views
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
•
220.9K views
Docker超入門
VirtualTech Japan Inc.
•
8.7K views
Dockerからcontainerdへの移行
Akihiro Suda
•
6.7K views
FM-indexによる全文検索
Sho IIZUKA
•
10.3K views
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
•
22.9K views
目grep入門 +解説
murachue
•
88.6K views
Pythonによる黒魔術入門
大樹 小倉
•
44.2K views
「自分のとこでは動くけど…」を無くす devcontainer
Yuta Matsumura
•
437 views
MySQLアーキテクチャ図解講座
Mikiya Okuno
•
26K views
Linux女子部 systemd徹底入門
Etsuji Nakai
•
137.2K views
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
•
49.8K views
TRICK 2022 Results
mametter
•
2.7K views
【2000行弱!】x86用自作カーネルの紹介
Yuma Ohgami
•
8.1K views
Similar to 30分で分かる!OSの作り方
20090703課内oss研修
Yuya Tanaka
210 views
•
29 slides
Building libc++ for toy OS
uchan_nos
1.2K views
•
8 slides
最小セットOS Ssp fun
Kiyoshi Ogawa
818 views
•
19 slides
OpeLa セルフホストなOSと言語処理系の自作
uchan_nos
390 views
•
15 slides
eZ Publish 2012年7月勉強会 - 権限システム
ericsagnes
661 views
•
28 slides
できる!KickstartとAnsible!
Wataru NOGUCHI
4.1K views
•
23 slides
Similar to 30分で分かる!OSの作り方
(20)
20090703課内oss研修
Yuya Tanaka
•
210 views
Building libc++ for toy OS
uchan_nos
•
1.2K views
最小セットOS Ssp fun
Kiyoshi Ogawa
•
818 views
OpeLa セルフホストなOSと言語処理系の自作
uchan_nos
•
390 views
eZ Publish 2012年7月勉強会 - 権限システム
ericsagnes
•
661 views
できる!KickstartとAnsible!
Wataru NOGUCHI
•
4.1K views
OpenModelica tutorials_1(超初級チュートリアル1 解析モデルの作成と実行)
Shigenori Ueda
•
11.2K views
INF-028_そのエラーやお困りごと、ツールを使えば解決できるかも! ~Sysinternals や OS 標準ツールの徹底活用術~
decode2016
•
125 views
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
ericsagnes
•
511 views
10年前から始まったマイクロソフトのDevOps~今とこれから~
智治 長沢
•
3.3K views
Out systemsaichiusermeeting#5 lt2
潤司 渡部
•
195 views
Azureで始めるDevOps
Atsushi Kojima
•
3.8K views
Let's join in OpsWorks world!
Shigeo Nakano
•
1.9K views
システムテスト自動化標準ガイド 5章発表資料
Masatoshi Itoh
•
2.7K views
200513 ur
NoriakiAndo
•
82 views
CoreOSってなんですか
Keisuke Izumiya
•
4K views
研究室紹介(2014年度卒研生募集)
Kazuhiko Kato
•
650 views
誰でも出来るローカル開発環境の作り方
666oh666
•
9.4K views
セキュリティ関連OSSツール紹介
kataware
•
273 views
オルターブースが実践する .NET Core “ガチ” 開発
Yuta Matsumura
•
514 views
More from uchan_nos
MikanOSと自作CPUをUSBで接続する
uchan_nos
308 views
•
15 slides
OSを手作りするという趣味と仕事
uchan_nos
1.1K views
•
25 slides
小型安価なFPGAボードの紹介と任意波形発生器
uchan_nos
645 views
•
56 slides
トランジスタ回路:エミッタ接地増幅回路
uchan_nos
728 views
•
42 slides
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
uchan_nos
2.3K views
•
41 slides
自作言語でお絵描き
uchan_nos
673 views
•
18 slides
More from uchan_nos
(20)
MikanOSと自作CPUをUSBで接続する
uchan_nos
•
308 views
OSを手作りするという趣味と仕事
uchan_nos
•
1.1K views
小型安価なFPGAボードの紹介と任意波形発生器
uchan_nos
•
645 views
トランジスタ回路:エミッタ接地増幅回路
uchan_nos
•
728 views
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
uchan_nos
•
2.3K views
自作言語でお絵描き
uchan_nos
•
673 views
OpeLa 進捗報告 at 第23回自作OSもくもく会
uchan_nos
•
293 views
サイボウズ・ラボへ転籍して1年を振り返る
uchan_nos
•
294 views
Security Nextcamp remote mob programming
uchan_nos
•
823 views
Langsmith OpeLa handmade self-hosted OS and LPS
uchan_nos
•
826 views
自動でバグを見つける!プログラム解析と動的バイナリ計装
uchan_nos
•
771 views
1を書いても0が読める!?隠れた重要命令INVLPG
uchan_nos
•
408 views
レガシーフリーOSに必要な要素技術 legacy free os
uchan_nos
•
4.2K views
プランクトンサミットの歴史2019
uchan_nos
•
1.2K views
Introduction of security camp 2019
uchan_nos
•
894 views
Timers
uchan_nos
•
2.1K views
USB3 host driver program structure
uchan_nos
•
1.6K views
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
uchan_nos
•
2.4K views
1TB/dayのログを収集・蓄積する技術
uchan_nos
•
2.4K views
WalB: Real-time and Incremental Backup System for Block Devices
uchan_nos
•
5.2K views
30分で分かる!OSの作り方
1.
30分で分かる! OSの作り方 自作OSコミュニティosdev-jp @uchan_nos
2.
自己紹介 • Twitter: @uchan_nos •
自作OSコミュニティosdev-jpコアメンバー • 『30日でできる! OS自作入門』 の校正を担当 • 『自作エミュレータで学ぶ x86アーキテクチャ』の著者
3.
OSとは • Operating System Microsoft
Windows 10 のスクリーンショット
4.
OSとは • 定義はいろいろ • 「OSとは、ソフトウェアの 種類の一つで、機器の基本 的な管理や制御のための機 能や、多くのソフトウェア が共通して利用する基本的 な機能などを実装した、シ ステム全体を管理するソフ トウェア。」 http://e-words.jp/w/OS.html https://en.wikipedia.org/wiki/Operating_ system#/media/File:Kernel_Layout.svg
5.
OSとは • 『30日でできる! OS自作入門』の定義 結局のところ、それぞれの作者が 「これはOSなんだ」と言い張って、 周囲の人も「まあそうかな」と思 えばどんなソフトでもOSなんです。
6.
OS自作とは • ほかのOSの力を借りずに起動するソフトウェ ア(なんでもいい)を作ること • ハードウェアに近い世界 •
→ パソコンを支配する感覚 • → エキサイティング!
7.
OS自作も一歩から 自作OSにおける “Hello World”
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.
OS自作の方向性 • システムプログラミングを楽しむ • OS理論を学ぶ •
実用的なOSを作る • 既存OSを改良する
10.
システムプログラミング を楽しむ • 『 30日でできる!OS自作入門』の方向性 •
単純にOS作成を楽しむ=娯楽 • コンピュータのハードウェアを支配してる感じ で楽しい • CPUと戯れる • デバイスと戯れる • 低レイヤに詳しくなれる! http://cdn-ak.f.st-hatena.com/images/fotolife/r/rinie/20090409/20090409144532.jpg
11.
OS理論を学ぶ • 『オペレーティングシステム 第3版 設計と実装』などを読んだりする •
メモリ管理、プロセス管理、ファイルシステム、 デバイスドライバの仕組みなどを学ぶ Intel 64 and IA-32 Architectures Software Developer’s Manual より引用 ページングによる メモリ管理の仕組み
12.
実用的なOSを作る • 既存OSが移植されてないハードウェアのOS • 特定の処理のオーバーヘッドが小さいOS •
例:liva氏作の、Intel e1000ギガビットイーサに 対応したOS。Linuxより低遅延に通信できる。 • 一人で汎用かつ実用的なOSを作ることは現代 ではほぼ無理 • 汎用性を捨てれば活路がある
13.
既存OSを改良する • LinuxやFreeBSDなどを改造する • 現代において汎用かつ実用的なOSを目指すな らこの路線 •
この発表でいう「OS自作」ではない
14.
OSを自作する方法 • 入門書を手に入れる • 取りあえずその通り作ってみる •
後は自由に改造したり知識を深めたり
15.
OSを自作する方法 • 入門書を手に入れる • 取りあえずその通り作ってみる •
後は自由に改造したり知識を深めたり たったの3ステップ!
16.
入門書を手に入れる 『30日でできる! OS自作入門』 から始めるのがおすすめ 30日後
17.
OS自作入門:一日目 • P.14「とにかくやるのだぁ」 • バイナリエディタだけで 1.4MBのFDイメージを作成
18.
OS自作入門:二日目 • p.29「まずはテキストエディタの紹介」 • テキストエディタがバイナリエディタの後 にくる書籍なんて聞いたことない!
19.
OS自作入門:四日目 • p.69「C言語と画面表示の練習」 • p.95でなんとなく「OS」らしき画面が! http://hrb.osask.jp/figures.html
20.
OS自作入門:八日目 • マウスが動くようになる • メモリ管理ができるようになる http://hrb.osask.jp/figures.html
21.
OS自作入門:三十日目 • 32ビット、マルチタスク、 ウィンドウシステム、JPGデコーダ http://hrb.osask.jp/figures.html
22.
その後の進路はいろいろ1 • OSの機能を拡張していく • 高機能なシェル •
タスク間通信 • UEFI起動に対応 • OSの理論を勉強する • ページング、仮想記憶 • mutex、共有メモリ • ファイルシステム ウィンドウサイズが 変えられなくて辛い
23.
その後の進路はいろいろ2 • いろんな言語で再実装する • C/C++/D/Rust/C#など •
他のアーキテクチャへの移植 • 2006年当時、いち早くC++化に成功したブログ記事 • 自作OSもくもく会では Rustでの再実装を試みる人がいたり。 「はりぼてOSでC++言語を使いたい」 http://d.hatena.ne.jp/Bayside/20060518/p1
24.
その後の進路はいろいろ3 • デバイスドライバを充実させる • ディスク読み書き •
ネットワークドライバ • USB機器の制御 • グラフィックボード • 既存OSのドライバの移植 http://yourdriversdownload.blogspot.jp/2011/12/ realtek-rtl8139-family-pci-fast.html
25.
例えば私が作ったOS • elf_haribote • はりぼてOS
+ ELFバイナリのローダ • seriboteOS • はりぼてOS + RS-232C通信 http://sanwa.jp/product/syohin_img/K/KR-9EN2_MA.jpg
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.
ドライバ製作の参考書 • 『パソコンのレガシィ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.
日本の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.
OSASK • 川合さんが主担当 • 100KB以下の極小 OSイメージ •
ウィンドウシステム • プリエンプティブ・ マルチタスク
30.
2002/06/18 2chに伝説のスレが立つ Mona OSが初リリース2002
31.
NWSOS, MEG-OSリリース2002 @uchan_nos OSASKを知る 2002?
32.
2003 第2期ブーム最盛期 osdev-jというWikiが発足 →のちのdev-j 派生してOS-Wikiが発足 OS-Wiki http://community.osdev.info/ より
33.
2005 第2期ブーム終焉 dev-j界が徐々に停滞 OSASKリリース停滞 NWSOS開発終了 MEG-OS中断 →おれんじぺこになるも、 それも開発終了
34.
2005 第2期ブーム終焉 dev-j界が徐々に停滞 OSASKリリース停滞 NWSOS開発終了 MEG-OS中断 →おれんじぺこになるも、 それも開発終了
35.
2006 第3期自作OSブーム 『 30日でできる! OS自作入門』出版 はりぼて友の会結成 2007 はりぼて友の会 @IT
に取材される http://jibun.atmarkit.co.jp/lcom01/rensai/comtan02/comtan01.html
36.
2008 第4期自作OSブーム OSASK-HB内部リリース おれんじぺこリリース再開 NWSOS開発再開(宣言) 2007 Mona OS開発停滞 →2002年までに誕生した 古参のOSプロジェクト は壊滅状態に。 2007
はりぼて友の会活動停滞 2009 OSASK一般公開停止
37.
2016 osdev-jp結成 自作OSもくもく会が始動 第5期自作OSブームへ 2013 KたんがOSASKコミュニティ へ復帰 2012
OSECPU-VM開発開始 OS自作関係の3人が 偶然出会ってしまった
38.
自作OSのコミュニティ osdev-jp Web: osdev.jp Slack: osdev-jp.slack.com
Editor's Notes
戯れる「たわむれる」