Slide 1

Slide 1 text

18行のLinuxカーネルモジュールを 作ってみる Nov. 28th, 2023 Satoru Takeuchi X: satoru_takeuchi 1

Slide 2

Slide 2 text

今回話すこと ● Linuxのカーネルモジュールを作ってカーネル開発の入口の入口に立つ ● Ubuntu 22.04.3で実験 2

Slide 3

Slide 3 text

そもそもカーネルモジュールとは ● Linuxカーネルの機能の一つ ● システムの動作中にカーネルに機能を組み込む ● 組み込まれた機能はlsmodコマンドでリストできる ● カーネル本体を拡張するのは大変 ● 単純なカーネルモジュールを作るくらいなら簡単 3

Slide 4

Slide 4 text

カーネル開発にはお作法がある ● Kbuildという独自のビルドフレームワークに沿ったMakefileを書く ○ 頑張ってKbuildを理解する必要はなくてコピペでいい ○ Building External Modules ■ https://github.com/torvalds/linux/blob/master/Documentation/kbuild/modules.rst ● モジュールの作者、ライセンス、簡単な説明などを書く ● カーネルモジュールのコードを書く ○ 所定のシグネチャを持つ初期化関数と終了関数を書く ○ あとは自由 ○ C言語なのでちょっと大変かも ■ 最近はRustで書ける(そのうち紹介するかもしれない ) 4

Slide 5

Slide 5 text

この動画で作るもの: helloモジュール 1. ロード時に”Hello world!\n”という文字列をカーネルログに出力 2. たった18行 5

Slide 6

Slide 6 text

まとめ ● Linuxのカーネルモジュールは凄く簡単なものならすぐ作れる ● ソース ○ https://github.com/satoru-takeuchi/youtube-sample/0061-linux-kernel-module 6