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
Satoru Takeuchi
PRO
August 25, 2026
Technology
34
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
あなたの知らないバージョン命名規則
sat
PRO
2
330
Rook: Intro and Deep Dive with Ceph
sat
PRO
1
59
Machine Check Exception
sat
PRO
2
54
バイナリダンプの模様を読む
sat
PRO
0
77
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
64
114-ファイルのshallow_copy.pdf
sat
PRO
2
45
113-Btrfsのスナップショット.pdf
sat
PRO
0
28
システム強制終了時にファイルシステムの整合性を保つ~ コピーオンライト編 ~
sat
PRO
0
66
システム強制終了時に ファイルシステムの整合性を保つ ~ ジャーナリング編 ~
sat
PRO
2
73
Other Decks in Technology
See All in Technology
[potatotips #96] Give Your AI Agent the Flutter Playbook
korodroid
0
150
NANDでも描画したい!
nichica906
3
620
作って理解するCoding Agent 〜フレームワークに頼らないピュア Python での実装〜
takapy
3
1.1k
猫付きpingコマンドを自作
uyuki234
0
290
LLM Internals: 언어 모델의 계보와 알고리즘 진화 (2023~2026)
inureyes
PRO
1
890
三人寄ればチューリング完全
puhitaku
6
3k
AI画像認識を活用したゲーム内決済処理検証の自動化
gree_tech
PRO
0
360
AWS Blocks が楽しい #ゆるWeb札幌
tacck
PRO
0
120
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
6
1.6k
35分でわかるEffective Platform Engineering
nwiizo
5
620
医療の現場を変革に挑戦した半年間の軌跡 - PythonとAIで現場を変える / From Code to Care
soudai
PRO
1
580
フィジカルAIの知識ゼロの僕でも AIを使えばここまでできた
tatsuya1970
0
150
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Evolving SEO for Evolving Search Engines
ryanjones
0
260
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Amusing Abliteration
ianozsvald
1
260
Prompt Engineering for Job Search
mfonobong
0
410
Raft: Consensus for Rubyists
vanstee
141
7.6k
Being A Developer After 40
akosma
91
590k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
エンジニアに許された特別な時間の終わり
watany
108
250k
How to build a perfect <img>
jonoalderson
1
5.9k
Accessibility Awareness
sabderemane
1
180
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
430
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