ドライバのロード・アンロード
ドライバをビルドしただけでは、まだそのドライバは使えません。
使えるようにするためには、ドライバをロードしてやる必要があります。
ドライバのロードはinsmodコマンドにより行います。
koファイルがあるディレクトリに移動し、下記コマンドを実行します。
# insmod hello.ko
ドライバのロードはランレベル3以降でも行えます。
それはつまり、OSの再起動なしにドライバのロード・アンロードができるということです。
ただし、insmodコマンドはroot権限で実行する必要があります。
ドライバが正常にロードされたかどうかの確認はlsmodコマンドで行えます。
# lsmod Module Size Used by hello 5504 0 ~以下省略~
lsmodコマンドは現在ロードされているカーネルモジュールを出力します。
ドライバはカーネルモジュールに含まれるので、正常にロードできていれば出力されます。
lsmodコマンドで確認できる内容は下記表になります。
列名 | 意味 |
---|---|
Module | ドライバ名 |
Size | メモリ上のドライバサイズ |
Used | 参照カウンタ |
by | 依存ドライバ |
ドライバのアンロードはrmmodコマンドにより行います。
# rmmod hello
rmmodコマンドで指定するパラメータはドライバファイル名ではなく、ドライバ名となります。
ドライバ名はlsmodコマンドのModule列で確認できます。
ドライバのロードはinsmodコマンドだけでなく、modprobeコマンドでも行えます。
insmodコマンドはカレントディレクトリにあるドライバをロードするためのものです。
それに対し、modprobeコマンドは「/lib/modules/`uname -r`」からドライバを探します。
modprobeコマンドはLinux起動時に自動的にドライバをロードさせたいときなど、rcスクリプトでよく使用されます。