$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Linuxカーネルのソースについての小ネタ集
Search
Satoru Takeuchi
PRO
July 23, 2022
Technology
1
260
Linuxカーネルのソースについての小ネタ集
以下動画のテキストです。
https://youtu.be/b8O8zj5bXB4
Satoru Takeuchi
PRO
July 23, 2022
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
eBPF
sat
PRO
1
88
waruiBPF
sat
PRO
0
80
eBPFとwaruiBPF
sat
PRO
4
2.5k
Pythonのコードの気になる行でスタックトレースを出す
sat
PRO
0
86
ソースコードを読むときの思考プロセスの例 ~markdownのレンダリング方法を知りたかった2 markdownパッケージ~
sat
PRO
0
170
様々なファイルシステム
sat
PRO
0
310
ソースを読む時の思考プロセスの例-MkDocs
sat
PRO
1
400
ソースを読むプロセスの例
sat
PRO
22
17k
メモリマップトファイル
sat
PRO
1
160
Other Decks in Technology
See All in Technology
Sansanが実践する Platform EngineeringとSREの協創
sansantech
PRO
2
710
Edge AI Performance on Zephyr Pico vs. Pico 2
iotengineer22
0
110
Debugging Edge AI on Zephyr and Lessons Learned
iotengineer22
0
120
日本Rubyの会の構造と実行とあと何か / hokurikurk01
takahashim
4
960
RAG/Agent開発のアップデートまとめ
taka0709
0
150
AWS re:Invent 2025で見たGrafana最新機能の紹介
hamadakoji
0
140
コミューンのデータ分析AIエージェント「Community Sage」の紹介
fufufukakaka
0
450
計算機科学をRubyと歩む 〜DFA型正規表現エンジンをつくる~
ydah
3
210
意外とあった SQL Server 関連アップデート + Database Savings Plans
stknohg
PRO
0
300
モダンデータスタック (MDS) の話とデータ分析が起こすビジネス変革
sutotakeshi
0
440
Karate+Database RiderによるAPI自動テスト導入工数をCline+GitLab MCPを使って2割削減を目指す! / 20251206 Kazuki Takahashi
shift_evolve
PRO
1
580
品質のための共通認識
kakehashi
PRO
3
220
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
4 Signs Your Business is Dying
shpigford
186
22k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
Building Adaptive Systems
keathley
44
2.9k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
Typedesign – Prime Four
hannesfritz
42
2.9k
The Invisible Side of Design
smashingmag
302
51k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.6k
The Language of Interfaces
destraynor
162
25k
Writing Fast Ruby
sferik
630
62k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
Linuxカーネルの ソースについての小ネタ集 Jul 22nd, 2022 Satoru Takeuchi twitter: satoru_takeuchi
概要 • Linuxカーネルのソースコードについての小ネタを紹介 ◦ 規模、ディレクトリ構造、開発スタイル • 対象バージョンはv5.18 • 個々の機能について深入りしない •
コードはほぼ読まない
どれくらいの規模? • 主にC言語で書かれているので.cファイルと.hファイルの行数をカウント ◦ find -type f -name "*.[ch]" -not
-path ".git/*" | xargs cat | wc -l • バージョン間の変更量も見る ◦ コミット数 ▪ git log --oneline v5.17..v5.18 | wc -l ◦ 変更行数 ▪ git diff --stat v5.17..v5.18 | tail
ディレクトリの構造は? • トップディレクトリを眺めてみる ◦ ls • ちょっとだけ掘ってみる ◦ kernel: コア部分
◦ mm: メモリ管理 ◦ fs: ファイルシステム ◦ drivers: デバイスドライバ ◦ arch: アーキテクチャ依存コード
どうやって開発してるの? • サブシステムごとにメンテナがいる ◦ MAINTAINERファイルを参照 • パッチがマージされるまでの流れ ◦ 開発者のパッチをサブシステム開発用の branchにマージ
▪ このへんはメーリングリスト経由だったり githubだったり ◦ サブシステム開発用の branchをLinus(Linuxのオリジナル開発者 )がmaster branchにマージ ▪ サブシステムメンテナが Linusにpull requestメールを送る • ここでいうpull requestはgithubのPRとは別物 • pull候補のbranchのURLと変更点を書いたメールを送る • 2~3ヶ月に一回新しいバージョンが出る ◦ たまにメジャーバージョンが上がるが、大した意味はない (4.19の次が5.0、など)
まとめ • Linuxのソースコードはめっちゃデカい • バージョンごとの差分もデカい • サブシステムごとにディレクトリが分かれている ◦ それぞれメンテナがいる ◦
開発もサブシステム単位