ドライバのバージョン確認
ドライバをビルドした環境のカーネルバージョンと、そのドライバをロードする環境のカーネルバージョンが異なると、insmod(ドライバをロードするコマンド)でエラーが発生します。
必ず両バージョンは一致させる必要があります。
開発マシンと動作マシンが同じであるなら問題ありませんが、異なるとそのようなエラーに遭遇することが多いので、注意が必要です。
ドライバをビルドした環境のカーネルバージョンはmodinfoコマンドにより確認できます。
# modinfo hello.ko filename: hello.ko license: Dual BSD/GPL srcversion: 128F11CE82080B148485924 depends: vermagic: 2.6.18-238.el5 SMP mod_unload 686 REGPARM 4KSTACKS gcc-4.1
いくつか項目が出力されますが、今回着目するのは、「vermagic」項目になります。
「vermagic」項目の内容を分割すると下表のようになります。
内容 | 意味 |
---|---|
2.6.18-238.el5 | ビルドした環境のカーネルバージョン |
SMP | マルチプロセッサ対応 |
mod_unload | ドライバアンロード可能 |
686 | 対応するアーキテクチャ |
4KSTACKS | カーネルスタックを8KBから4KBにする |
「SMP」はマルチプロセッサ対応を意味します。
最近のCPUはマルチコアとなっているため、「SMP」がつくことがほとんどです。