debian wheezy 7.5 で最初のロード可能なカーネル モジュールを作成しようとしています。Web 上のさまざまなチュートリアルのサンプル コードをいくつか試してみましたが、思ったほどうまくいきません。
これが私のコードです:
#include <linux/module.h>
#include <linux/kernel.h>
void cleanup_module(void)
{
printk(KERN_INFO "exit LKM...");
}
int init_module(void)
{
printk(KERN_INFO "loading LKM...");
return 0;
}
そして、私はこのようなMakefileでそれをコンパイルしています
obj-m += lkm.o
all:
sudo make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
したがって、問題なくコンパイルされますが、「$ sudo insmod lkm.ko」でLKMをロードしてからログメッセージを調べると、「exit LKM ...」が返されるため、insmodがcleanup_moduleシステムコールを呼び出すようですinit_module の代わりに。"$ sudo rmmod lkm"を使用すると、ログ メッセージに"loading LKM.."が返されます。だから私はこれがなぜなのか本当に分かりません。私がウェブで見つけたのは、insmodがinit_module()などを介してLKMをロードすることだけです...
何がうまくいかなかったのか本当にわからないので、そのための助けや説明をいただければ幸いです。
ありがとう