Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Linuxカーネルクローンの作り方
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ren Kimura
September 11, 2016
Programming
1.1k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Linuxカーネルクローンの作り方
OSもくもく会 LT 2016/9/11
Ren Kimura
September 11, 2016
More Decks by Ren Kimura
See All by Ren Kimura
脅威解析概論
rkx1209
0
240
Ideas for defeating Anti-Deep-Fakes
rkx1209
0
120
セキュリティベンチャーのリスク管理
rkx1209
0
160
ファジング+トリアージ技術を用いた脆弱性解析自動化
rkx1209
0
130
Introduction to Fuzzing
rkx1209
6
4.4k
ARM TrustZone エクスプロイト入門
rkx1209
7
8.6k
The Game is Over. Nintendo switch has been totally compromised
rkx1209
9
5.3k
インサイドNintendo Switch
rkx1209
18
13k
More efficient remote debugging with Thin Hypervisor
rkx1209
3
2.7k
Other Decks in Programming
See All in Programming
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
4.7k
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
310
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
550
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
510
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
1
620
Inside Stream API
skrb
1
650
A2UI という光を覗いてみる
satohjohn
1
110
LLM Plugin for Node-REDの利用方法と開発について
404background
0
160
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
110
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
130
Oxcを導入して開発体験が向上した話
yug1224
4
290
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
220
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
190
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
250
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
210
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
300
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
360
We Are The Robots
honzajavorek
0
240
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
140
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
170
Transcript
Linuxカーネルクローン の作り方 @RKX1209 自作OSもくもく会 LT 2016/9/11
自己紹介 @RKX1209 神戸大学工学部4年生 (インターンで関東に...) OS, 仮想マシン(VMM), コンパイラ, セキュリティ seccamp 14,15,16,
未踏16
Linuxカーネルクローン Linuxカーネル(2.6)を解読し、必要最低限の機能のみを自力で実装しなおす あくまでカーネルのみの開発 シェルやウィンドウマネージャは未実装 「30日でできない 自作Linuxクローン開発」 http://rkx1209.hatenablog.com/entry/2014/12/25/225138
Motivation Linuxカーネルのクローンを開発する意義 ❏ メジャーなOSのアーキテクチャに習うことでカーネル開発への理解を深める ❏ Linuxのコア部分のみ実装しているためLinux自体の解読にも役立つ https://github.com/RKX1209/Abyon
Linuxブートのおおまかな流れ 1. ブートローダー stage1 (MBR) a. BIOSを使ってカーネル本体とstage2をメモリ上にロード 2. ブートローダー stage2
a. GDTの仮設定, カーネル本体へのジャンプ 3. startup_32 (arch/i386/kernel/head.S) a. IDTの仮設定(割り込み割り込みは無視) 4. kernel_main (kernel/main.c) a. 本格的な初期化の開始 5. rest_init(kernel/main.c) a. カーネルスレッド起動
メモリマップ <16-bit:real mode> 0x7c00 - 0x7e00 Boot Loader(loaderS1) 0x7000 -
0x???? Boot alloc bit map 0x8000 - 0x8200 Boot Loader[2](loaderS1) <= Copy 0x8200 - 0xA0000 Kernel Image(temporary) <32-bit:protected mode> 0x00100000 - 0x???????? kernel body 0x???????? - 0x???????? init page table ~ init_pg_tables_end ~ 0x00300000 - 0x???????? root disk(mounted on /)
4. kernel_main • e820, early_bootメモリシステムの初期化(setup_arch) • プロセススケジューラの初期化(sched_init) • トラップの初期化(trap_init) •
割り込みの初期化(init_IRQ) • タイマーの初期化(init_timers) • ソフトウェア割り込みの初期化(softirq_init) • スラブアロケータの初期化(kmem_cache_init) • ファイルシステムの初期化(vfs_caches_init)
5. rest_init • initカーネルスレッドの作成(kernel_thread) • スケジュールの開始(schedule) • idle状態に突入(cpu_idle) カーネルは初期化が終わるとアイドル状態 後はイベント駆動(タイマー割り込み,
ハードウェア割り込み)