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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
140
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.6k
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
610
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
350
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
7.1k
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
15
7.8k
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
410
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
290
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
280
Contextとはなにか
chiroruxx
1
380
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
610
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
310
Featured
See All Featured
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
240
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
300
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
sira's awesome portfolio website redesign presentation
elsirapls
0
290
Side Projects
sachag
455
43k
Designing Powerful Visuals for Engaging Learning
tmiket
1
430
Raft: Consensus for Rubyists
vanstee
141
7.6k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
230
Utilizing Notion as your number one productivity tool
mfonobong
4
330
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
210
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) カーネルは初期化が終わるとアイドル状態 後はイベント駆動(タイマー割り込み,
ハードウェア割り込み)