[解決済み] insmod エラー: './hello.ko' を挿入: -1 無効なモジュール形式".
質問
LDD3に従って最初のドライバモジュールであるhello worldモジュールを作成したところです。しかし、残念ながらこのようなエラーに遭遇しました。
insmod: error inserting './hello.ko': -1 Invalid module format.
Ubuntu 11.04でやっている、私の環境です。
$ uname -r
2.6.38-8-generic
こんな感じでカーネルソースを取得します。
sudo apt-cache search linux-source
linux-source - Linux kernel source with Ubuntu patches
linux-source-2.6.38 - Linux kernel source for version 2.6.38 with Ubuntu patches
$sudo apt-get install linux-source-2.6.38
私の /usr/src:
$ls /usr/src/
linux-headers-2.6.38-8 linux-source-2.6.38 vboxguest-5.0.10
linux-headers-2.6.38-8-generic linux-source-2.6.38.tar.bz2
そして、カーネルをコンパイルします。
$sudo cp /boot/config-2.6.38-8-generic ./.config
$sudo make menuconfig -- load the .config file
$make
$make modules
そして、私のカーネルモジュールをコンパイルします。
$make -C /usr/src/linux-source-2.6.38/linux-source-2.6.38 M=`pwd` modules
をMakefileに追加しました。
obj-m := hello.o
で、最後にモジュールを挿入すると
$sudo insmod hello_world.ko
insmod: error inserting 'hello_world.ko': -1 Invalid module format
dmesgで見つけたもの。
hello: disagrees about version of symbol module_layout
で、何が問題なんだ?
また、気がついたのですが
linux-header is -2.26.38-generic
とソースコードのバージョンが-2.26.38になっていますが、これが問題なのでしょうか? しかし、私は本当に
linux-source-2.26.38-generic
のパッケージがあります。
のステータスを更新しました。 lib/moduels/$(name -r)/build/Makefile のファイルが、私の実行中のカーネルバージョンを示していることがわかりました。
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 38
EXTRAVERSION = .2
そこで、linux-2.6.38.2をダウンロードしてコンパイルしてみましたが、やはり同じエラーです。
また、/boot/config-$(uname -r)に一行があることがわかりました。
CONFIG_VERSION_SIGNATURE="Ubuntu 2.6.38-8.42-generic 2.6.38.2"
どなたか、この意味をご存知でしょうか?私がビルドしているカーネルのコンフィグファイルには見当たりません。
解決方法を教えてください。
カーネルモジュールをビルドするカーネルと、モジュールを挿入するカーネルのバージョンは同じであるべきです。もし、このことに気を使いたくなければ、以下の Makefile を使ってください。
obj−m += hello−world.o
all:
make −C /lib/modules/$(shell uname −r)/build M=$(PWD) modules
clean:
make −C /lib/modules/$(shell uname −r)/build M=$(PWD) clean
これで、ビルドしてモジュールを挿入してみることができます。
この行の前に、可能であればrootになることをお勧めします。
<ブロッククオート$sudo cp /boot/config-2.6.38-8-generic ./.config
$su
#cp /boot/config-2.6.38-8-generic ./.config
#insmod hello_world.ko
また、以下の make ファイルを使用することもできます。
TARGET := hello-world
WARN := -W -Wall -Wstrict-prototypes -Wmissing-prototypes
INCLUDE := -isystem /lib/modules/`uname -r`/build/include
CFLAGS := -O2 -DMODULE -D__KERNEL__ ${WARN} ${INCLUDE}
CC := gcc-3.0
${TARGET}.o: ${TARGET}.c
.PHONY: clean
clean:
rm -rf ${TARGET}.o
関連
-
[解決済み】環境変数TERMが設定されていない件
-
[解決済み】PytorchがCUDAは利用できないと言う件
-
[解決済み] chmod: 'my_script.sh' のパーミッションを変更しました。操作が許可されていない
-
[解決済み] Bashスクリプトでスクリプトファイル名を知るには?
-
[解決済み] MongoDBへの接続が拒否された errno 111
-
[解決済み] svn diffコマンドの使用
-
[解決済み] FIN_WAIT1とはどのような意味ですか?
-
[解決済み] 圧縮データが無効です。
-
[解決済み] Linux/Ubuntu のセットです。不正なオプション -o pipefail
-
[解決済み] Tarエラーです。アーカイブ内の予期しないEOF
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Makefile:1: ***セパレータがありません。停止します。
-
[解決済み】スラッシュとrsyncコマンド
-
[解決済み] Gccコンパイル "オブジェクトファイルのサフィックスを計算できない: コンパイルできない"
-
[解決済み] at&tアセンブリの「push」と「pushq」の違いは何ですか?
-
[解決済み] ls -l の "total" が表示されるファイルサイズの合計にならないのはなぜですか?[クローズド]
-
[解決済み] 共有ライブラリの読み込み中にエラーが発生しました: libncurses.so.5:
-
[解決済み] awk や sed を使って特定の文字を削除する
-
[解決済み] ユーザーデータスクリプトは私のカスタムAMIでは動作しませんが、標準のAmazon linuxでは動作しています。
-
[解決済み] readChar(con, 5L, useBytes = TRUE)でのエラー:接続を開くことができません。
-
[解決済み] アセンブリの制約