2011-04-01 9 views
2

みんなのカーネルを変更し、私は、LinuxのRed Hatのカーネルで動作する方法を学習しようとしている、私はカーネルから、いくつかの機能を変更しようとしました:Linuxの

/* 
* sys_execve() executes a new program. 
*/ 
asmlinkage int sys_execve(struct pt_regs regs) 
{ 
    int error; 
    char * filename; 



    filename = getname((char *) regs.ebx); 
    error = PTR_ERR(filename); 
    if (IS_ERR(filename)) 
     goto out; 

    printk("Hello World!"); // I added this function 

    error = do_execve(filename, (char **) regs.ecx, (char **) regs.edx, &regs); 
    if (error == 0) 
     current->ptrace &= ~PT_DTRACE; 
    putname(filename); 
out: 
    return error; 
} 

このシステムコールは、プログラムを実行し、私の質問なぜ私はターミナルにいて、例えば '日付'のような機能を書いている間、私は自分のこんにちは世界を受け取っていない、助けを前に感謝

答えて

3

/proc/kmsgにログされ、 syslog(8)

+0

何を追加する必要がありますか? – likeIT

+0

一般的に、カーネルは、コンソール( 'Ctrl' +' Alt' + 'F1')を除いて端末に直接書き込むのではなく、システムの起動時にしかそれをしません。文字列の先頭に '<>'で囲まれた数字であるログレベルを含め、 'syslogd'がどこに送るかを決定させます(' syslog.conf(5) '参照);これはsyslogパッケージがあなたの配布物に使われています)。これを変更したり、問題を強制しようとしないでください。興味深いロックとタイミングの問題があります(ログメッセージを書いている途中で 'Ctrl' +' s'を押すとどうなるか考えてください)。 – geekosaur

+0

私は、カーネルまたはデーモンのいずれかが、USBドライブを挿入または取り外したときに私のコンソールに書き込むことに気付きました。 –