undefined!のメッセージが表示されました。lkmは問題なく動作しましたが何故ということで調べてみた結果です。CONFIG_MODVERSIONSで作成されていないのに、LKMのコンパイルではCONFIG_MODVERSIONSが設定されていますよ。CONFIG_MODVERSIONSでカーネルをコンパイルすると、EXPORT_SYMBOLしているシンボルは、/usr/src/linux/Module.symversに書き出されます。オリジナルなLKMのコンパイルも、カーネルがLKMをコンパイルするのとまったく同じで、通常はカーネルのMakefileへの橋渡するMakefileを通して行ったりします。カーネルMakefileでは、scripts/Makefile.modpostへ橋渡ししています。この時CONFIG_MODVERSIONSが設定されていたら、オプション-mでmodpostを起動することになります。modpostはmodpost.cから作成されていて、/usr/src/linux/Module.symversを参照することで、LKMで使用されているシンボルがカーネル内にあるかどうかをチェックします。-mで起動すると、LKMで使用しているシンボルにmodule_layout()を無理やり追加します。module_layout()は空の関数です。undefined!とのメッセージが表示されるわけです。*tp){}EXPORT_SYMBOL(module_layout);#endif以前Kernel2でCONFIG_MODVERSIONSを調べていた時、MakefileにCONFIG_MODVERSIONSを設定してLKMをコンパイルしていました。現在セルフコンパイルしたKernel3にしており、前のCONFIG_MODVERSIONSを設定していたmakefileでLKMを作成したために表示されたようです。Makefileをそのまま使うので、このエラーメッセージが発生す事はないと思いますが、表示されるとマジック番号が違っている可能性があります。insmodできないようですと、マジック番号をチェックされたらいいかと思います。エラーメッセージのmodule_layoutとはまったく関係ありません。:modpost.cのmainです。1とし、read_symbols()でモジュールで使われているカーネルシンボルを取得します。1ならalloc_symbol()でmodule_layoutを追加し、check_exports()でModule.symversとの照合を行います。mod->unres);}カーネルがCONFIG_MODVERSIONSでコンパイルされているかどうかは、/usr/src/linux/Module.symversにmodule_layoutの有無を調べることが可能でもあるわけです。ノースAdsense広告情報が設定されていません。