サンプルデバイスドライバのビルドエラー:insmodモジュールの形式が正しくありません。

サンプルデバイスドライバのビルドエラー:insmodモジュールの形式が正しくありません。

@チュートリアルに従っています。http://www.embeddedsystemonline.com/home/embedded-system/embedded_linux/lab3-linux-device-driver

このチュートリアルのステップ7では

$ cd /usr/src/kernels/linux-2.6.20.1/drivers/char/examples
$ /sbin/insmod hello1.ko

その後、次のエラーが発生します(以降sudo /sbin/insmod hello1.ko

insmod: error inserting 'hello1.ko': -1 Invalid module format

lsmod コマンドを使用してカーネルにモジュールが表示されることはありません。

答え1

を実行せずにコマンドを実行してみてくださいsudo。代わりにルートになってみてください。

$ sudo su -
$ /sbin/insmod hello1.ko

dmesgまた、何が間違っているかを示す他のメッセージがあることを確認してくださいmodinfo

$ modinfo /dir/to/mod/hello1.ko

答え2

以下を確認してください。

  1. 同じバージョンのカーネルソースコードを使用してカーネルソースコードを参照できます。ここ
  2. 同じカーネルを使用して現在インストールされているカーネルの構成は、通常ここで見つけることができます。

    /proc/config.gz
    /boot/config
    /boot/config-*
    
  3. 正しいコンパイルツールチェーンを使用してください。

答え3

正しいカーネルバージョンのヘッダーをインストールして問題を解決しました。

答え4

ランニング:

make clean

その後、もう一度実行してください。

make

関連情報