Upgrade to Pro — share decks privately, control downloads, hide ads and more …

18行のLinuxカーネルモジュールを 作ってみる

18行のLinuxカーネルモジュールを 作ってみる

以下動画のテキストです
https://youtu.be/U6cCXndBDVU

Satoru Takeuchi

November 28, 2023
Tweet

More Decks by Satoru Takeuchi

Other Decks in Technology

Transcript

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide