
以下を実行する基本的なLinuxカーネルモジュールを作成しました。
static __init int init(void)
{
printk(KERN_DEBUG "Banana");
return 0;
}
そしてもちろん:
module_init(init);
奇妙なことは、次のようにモジュールを挿入した後に「Banana」文字列が見つからないことです。
insmod banana_module.ko
注文する
dmesg -k | grep Banana
何も返しません。
ところで、モジュールを抜いて再び差し込んでみると見つけることができましたね。それから発見されたバナナは、以前のバナナと現在挿入されているバナナの2つでした。フラッシュの問題のためですか?私はこの動作が少し奇妙だと思っており、インターネット上で同様の質問を見つけることができません。
ところで、この問題は、VMがある(VMなし)デスクトップとラップトップの両方で発生します。
それでは、なぜカーネルはバナナが好きではないのですか?
答え1
問題がどこにあるのか調べました。
カーネルメッセージの末尾に終了文字\ nが指定されていません。無視すると、上記のように動作します。これは、カーネルメッセージが完了時にのみ印刷されるレコードとして扱われるためです。詳細については、次を参照してください。printk問題に関する記事