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.
→
Satoru Takeuchi
PRO
August 25, 2026
Technology
35
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
340
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
Go 1.27 の標準パッケージに uuid が入った!のでいろいろ喋る / go_127_std_go_uuid
convto
3
650
RelayerというPHPのフレームワークを作った
polidog
PRO
0
130
AI時代に、人は何を、どう学ぶのか #pbl_pub / What and How Do We Learn in the AI Era?
takaking22
1
240
長期運営で肥大化したExcelマスターデータの解消に向けた移行事例
gree_tech
PRO
0
350
英語が話せなくてもKubeConスタッフに参加した話
yusuke427
2
1.1k
コーチングの奥義 何もしないテクニック
jinwatanabe
0
150
作って理解するCoding Agent 〜フレームワークに頼らないピュア Python での実装〜
takapy
3
1.1k
Kiro Crew で始める マルチエージェント開発
miu_crescent
PRO
0
170
会社紹介資料 / Sansan Company Profile
sansan33
PRO
24
430k
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
0
730
Invisible to AI? Making TYPO3 Sites Quotable by AI Search Systems
wolfgangwagner
0
250
猫付きpingコマンドを自作
uyuki234
0
290
Featured
See All Featured
Ruling the World: When Life Gets Gamed
codingconduct
0
310
A Tale of Four Properties
chriscoyier
163
24k
Designing for humans not robots
tammielis
254
26k
Raft: Consensus for Rubyists
vanstee
141
7.6k
Un-Boring Meetings
codingconduct
0
390
How to train your dragon (web standard)
notwaldorf
97
6.8k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
240
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.2k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
730
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
Side Projects
sachag
455
43k
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