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
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
140
Introduction to Fuzzing
rkx1209
6
4.4k
ARM TrustZone エクスプロイト入門
rkx1209
7
8.7k
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
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
270
AIで効率化できた業務・日常
ochtum
0
150
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
320
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
210
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.8k
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
800
dRuby over BLE
makicamel
2
390
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
15
7.8k
スマートグラスで並列バイブコーディング
hyshu
0
270
Creating Composable Callables in Contemporary C++
rollbear
0
170
Inside Stream API
skrb
1
800
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
220
Featured
See All Featured
Utilizing Notion as your number one productivity tool
mfonobong
4
330
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
260
A designer walks into a library…
pauljervisheath
211
24k
Exploring anti-patterns in Rails
aemeredith
3
430
Information Architects: The Missing Link in Design Systems
soysaucechin
0
990
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.6k
My Coaching Mixtape
mlcsv
0
160
Visualization
eitanlees
152
17k
The untapped power of vector embeddings
frankvandijk
2
1.8k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Into the Great Unknown - MozCon
thekraken
41
2.6k
Code Review Best Practice
trishagee
74
20k
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) カーネルは初期化が終わるとアイドル状態 後はイベント駆動(タイマー割り込み,
ハードウェア割り込み)