Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Linuxカーネルの インタフェースは変わりうる?
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Satoru Takeuchi
PRO
August 25, 2026
Technology
92
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Linuxカーネルの インタフェースは変わりうる?
以下動画のスライドです。
https://youtu.be/i8zsuhX8xmk
Satoru Takeuchi
PRO
August 25, 2026
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
119-多機能ファイルシステムBtrfs_のコピー.pdf
sat
PRO
1
67
あなたの知らないバージョン命名規則
sat
PRO
3
890
Rook: Intro and Deep Dive with Ceph
sat
PRO
1
64
Machine Check Exception
sat
PRO
2
65
バイナリダンプの模様を読む
sat
PRO
0
89
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
87
114-ファイルのshallow_copy.pdf
sat
PRO
2
57
113-Btrfsのスナップショット.pdf
sat
PRO
0
40
システム強制終了時にファイルシステムの整合性を保つ~ コピーオンライト編 ~
sat
PRO
0
76
Other Decks in Technology
See All in Technology
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/6 - 2026/8
oracle4engineer
PRO
0
140
【視聴者参加型!】AWSセキュリティアンチパターンクイズ
syoshie
1
490
Omarchy Quattro の日本語設定周り
simosako
2
140
『止めない』を設計する — 制約の中で、事業の根幹を支える判断
hiroyaterui
0
260
AI-DLCって実際どう? 〜聞きたいこと全部聞いてみる〜
news_it_enj
0
260
[2026-09-11]SREは誰のもの?運用エンジニアが始める 「SRE領域への越境」とチームの進化の軌跡 〜Road to NEXT CRE
tosite
0
120
なぜSRE・セキュリティは評価されないのか?守りの組織を事業成長エンジンに変えた実践
cscengineer
PRO
3
2.4k
DEFCON34-Write-up_HYCu-MYCu
daikiokazaki
0
140
omasushiというライブラリを作った
polidog
PRO
0
190
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
450
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
150
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
1
230
Featured
See All Featured
First, design no harm
axbom
PRO
2
1.3k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Producing Creativity
orderedlist
PRO
348
41k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
240
A designer walks into a library…
pauljervisheath
211
25k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
380
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
The SEO Collaboration Effect
kristinabergwall1
1
550
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
270
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
Transcript
Linuxカーネルの インタフェースは変わりうる? Aug. 25th, 2026 Satoru Takeuchi X: satoru_takeuchi 1
Linuxカーネルのインタフェースの種類 • ユーザが意識する外部インタフェース(e.g. システムコール, sysfs, procfs) ◦ ◦ ◦ ◦
• 一般的なユーザが使用するようなものは通常互換性は保たれ続ける 開発初期の機能は変わることもある 誰も使ってないなどの理由によって稀に削除されることもある 詳細は公式ドキュメントを参照 ▪ Documentation/ABI/README カーネルのサブシステムが内部で使うインタフェース(API) ◦ ◦ 変わりうると明言されている (Documentation/process/stable-api-nonsense.rst) これをもって外部インタフェースが変わり得ると誤解している人が多い 2
カーネルモジュール用にexportされているAPIも変わる • • Linuxはカーネルの機能をカーネルモジュールという形で挿入できる Linuxのソースに同梱されていなくてもカーネルモジュールは作れる ◦ • • • Linuxに同梱ではないカーネルモジュールを
out-of-treeモジュールと呼ぶ カーネルモジュールを作るためにLinuxはAPIをexportしている このAPIもカーネルバージョンが違えば変わりうる カーネルバージョンが変わるとout-of-treeモジュールがビルドできなくなった…とい うことはザラに起きる ◦ 追従が大変! 3
例: 2012年に私が教育用に書いたカーネルモジュール … struct timer_list mytimer; #define MYTIMER_TIMEOUT_SECS 10 static
void mytimer_fn(unsigned long arg) { printk(KERN_ALERT "10 secs passed.\n"); } static int mymodule_init(void) { init_timer(&mytimer); mytimer.expires = jiffies + MYTIMER_TIMEOUT_SECS*HZ; mytimer.data = 0; mytimer.function = mytimer_fn; add_timer(&mytimer); } … return 0; 4
2018年に出たv4.18でビルドできなくなっていた! • • コンパイラ「init_timer()なんて関数は無い」 なぜだ!? 5
調査結果 • • init_timer()はセキュリティホールを生みやすいなどの欠点があった 2017年9月にinit_timer()の代替となるtimer_setup()という関数ができた ◦ • https://github.com/torvalds/linux/commit/686fef928bba6be13cabe639f154af7d72b63120 しばらくは新旧インタフェースが共存していて、2017年11月にinit_timer()は削除さ れた
◦ https://github.com/torvalds/linux/commit/7eeb6b893bd28c68b6d664de1d3120e49b855cdb 6
このようなことが起きたときの対処 • カーネルソース内の機能 ◦ ◦ ◦ • インタフェースを変えた人が全呼び出し箇所を置き換えることがある init_timer()のように新旧インタフェースをしばらく共存させて、いずれ全部新しいほうで置き換えるこ とがある
どちらにせよ、いずれ対応される out-of-treeモジュール ◦ ◦ ◦ 気づかないうちにビルドできなくなっていることがある 定期的に追従できているか確認する必要がある 公式カーネルに取り込むと比較的楽ができる 7
まとめ • • • Linuxのユーザ向け外部インタフェースは滅多に変わらない 開発者向け内部インタフェースは頻繁に変わる out-of-treeドライバ開発者は変化に追従するのが大変 8