8

私のOS Ubuntu 12.04。このカーネル モジュールを作成し、insmod および rmmod コマンドを使用しましたが、/var/log メッセージには何もありません。どうすればこの問題を解決できますか?

/*  
*  hello-1.c - The simplest kernel module.
*/
#include <linux/module.h>   /* Needed by all modules */
#include <linux/kernel.h>   /* Needed for KERN_INFO */

int init_module(void)
{
   printk(KERN_INFO "Hello world 1.\n");

    /* 
    * A non 0 return means init_module failed; module can't be loaded. 
    */
    return 0;
 }

 void cleanup_module(void)
 {
   printk(KERN_INFO "Goodbye world 1.\n");
 }
4

5 に答える 5

1

syslogデーモン プロセスが実行されているかどうかを確認してください。これは、printk メッセージをカーネル リング/ログ メッセージ バッファから/var/log/messagesにコピーするプロセスであるためです。printk メッセージは、dmesgユーティリティ/コマンドを使用して確認できます。メッセージは /var/log/messages にあります。正しいログレベルが設定されている場合、printk メッセージがすぐにコンソールに表示されます。dmesg を使用したり、/var/log/messages をチェックインする必要はありません。printk デバッグ メッセージは、/var/log/syslogの一部になることもあります。

于 2013-05-10T03:36:21.123 に答える
0

まず、このコマンドを使用して、モジュールが正しくロードされているかどうかを確認する必要があります

lsmod | grep "hello-1" //hello-1 is the name of your module

カーネルモジュールを作成したため、メッセージが出力されます。カーネルとそのモジュールからのメッセージは /var/log/syslog にあります。または、dmesg コマンドを使用してこれらの種類のメッセージを表示できます。モジュールが「Hello World 1.」を出力するので、次のコマンドを使用してモジュールからのメッセージを表示する必要があります。

dmesg | grep "Hello World 1." 
于 2016-03-26T07:37:47.697 に答える
0

次のコマンドを入力して、カーネル バッファを印刷しようとしました。 dmesg
これにより、書き込まれたデータが印刷されます。printk

于 2019-01-17T11:01:29.673 に答える