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
Satoru Takeuchi
PRO
August 25, 2026
Technology
110
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
80
あなたの知らないバージョン命名規則
sat
PRO
3
930
Rook: Intro and Deep Dive with Ceph
sat
PRO
1
74
Machine Check Exception
sat
PRO
2
72
バイナリダンプの模様を読む
sat
PRO
0
120
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
110
114-ファイルのshallow_copy.pdf
sat
PRO
2
63
113-Btrfsのスナップショット.pdf
sat
PRO
0
48
システム強制終了時にファイルシステムの整合性を保つ~ コピーオンライト編 ~
sat
PRO
0
81
Other Decks in Technology
See All in Technology
『SAR衛星データ解析入門』のご紹介とその応用
syuchimu
0
140
Optunaの最新リリースv5.0について
pfn
PRO
0
140
野良MCPサーバーを排除せよ!MCPサーバーのガバナンス
yukiogawa
1
150
導入から定着へ ~コーディングエージェントを日常業務に組み込む実践知~
yukisakai1225
0
190
企画を Software Factory-ready にする——開発が高速になったとき、PdMの仕事はどう変わったか
yachibit
1
130
Let's Change Our World—Again
snoozer05
PRO
5
330
Classmethod Company Deck
satoshi7
1
810
AI コーディングと人間の認知スループット / CTO Night & Day 2026 Morning Session / AI Coding and Human Cognitive Throughput
prog893
5
1.5k
生成AI時代、PMは事業責任者に進化するともっと面白い〜PMだからこそ事業構造を動かせる時代に〜
kakehashi
PRO
0
240
SAENM ~Jupyterで残すPoCの試行錯誤、未来の自分と仲間を助ける記録!~
terapyon
0
170
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
1.1k
AWSセキュリティで活用するAI機能
cmusudakeisuke
1
190
Featured
See All Featured
Claude Code のすすめ
schroneko
67
230k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
Practical Orchestrator
shlominoach
192
12k
Optimising Largest Contentful Paint
csswizardry
37
4k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
540
Mobile First: as difficult as doing things right
swwweet
225
10k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
420
Building AI with AI
inesmontani
PRO
1
1.3k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
790
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
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