LoginSignup
7
4

More than 3 years have passed since last update.

カーネルモジュールってなに?

Posted at

勉強前のイメージ

カーネルのデフォルトだけでは動かんから、
モジュールを読み込んで改造していくイメージ。

調査

カーネルモジュールとは

カーネルの機能を拡張するためのバイナリファイルです。
例としては、ディスク・ネットワークカード等をLinuxカーネルで使用可能にするためのデバイスドライバなどがあります。
デバイスドライバは各ハードウェアベンダーから提供されることが多いです。

初期のUNIX系OSでは新しいハードウェアを使うにはカーネルの再構築が必要でしたが、
現在のLinuxカーネルは、必要ありません。
起動時に常駐カーネルがメモリにロードされ、必要に応じてロード・アンロードが出来るようになっています。

サーバ内のモジュールを確認

lsmod コマンドを使用します

# lsmod
Module                  Size  Used by
vboxsf                 81052  1 
vboxvideo              35867  0 
ip6t_rpfilter          12595  1 
ip6t_REJECT            12625  2 
nf_reject_ipv6         13717  1 ip6t_REJECT
ipt_REJECT             12541  2 
nf_reject_ipv4         13373  1 ipt_REJECT
xt_conntrack           12760  11 
ebtable_nat            12807  1 
  • Module : ロードされているカーネルモジュール
  • Size : カーネルモジュールのサイズ
  • Used by : 使用カウント数・参照しているモジュールの一覧

モジュールのロード

  • 依存関係を考慮する場合
    • modprobe コマンド
  • 依存関係は考慮しない場合
    • insmod コマンド

上記コマンドの違いは、
modprobe コマンドでは、依存関係があるモジュールがあれば事前にロードを行います。
insmod コマンドでは、指定されたモジュールのみをロードします。

モジュールのアンロード

rmmod コマンドを使用
-r オプションを付けることによって、依存するモジュールも削除します。
削除する際にモジュールが使用されている場合はエラーになります。

モジュールの依存関係リストを更新

基本的には実行しないのですが、モジュールファイルの追加や削除入れ替えなどで依存関係がおかしくなっている可能性がある場合に使用されることが多いです。
depmod コマンドでモジュールの依存関係リストを更新することが出来ます。

勉強後のイメージ

カーネル(心臓部のイメージ)の増築みたいな感じだから、再起動したりせんとあかんのかなって思ってたけど、コマンドでいけるのね。
昔はプログラムをコンパイルとか必要だったみたい。
なんか簡単そうな感じ。

参考

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4