리눅스에서 printk함수를 사용하고 싶습니다.

orionlight111의 이미지

안녕하세요.

리눅스모듈프로그램에서 printk함수 사용하는 방법을 알고 싶습니다.
아래와 같이 모듈적재시 printk로 문자열을 출력하게 하였는데 콘설창에 문자열이
출력되지 않습니다. 또 /var/log/message파일에도 출력내용이 없습니다.
echo 8 /proc/sys/kernel/printk 하면 console창에 나온다고 했는데
그렇게 해도 않됩니다. 왜 그럴까요? 조언 좀 주세요.

#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
 
....
int __init init_print(void)
{
   printk(KERN_ALERT "Hello!");
   return 0;
}
...
 
module_init(init_print);
승원의 이미지

일단, printk(KERN_ALERT "Hello!");를 printk(KERN_ALERT "Hello!\n");으로 고쳐보시기 바랍니다.

그리고 printk로 출력하는 내용은 콘솔에 출력되기 때문에 gnome-terminal 같은 일반 X-Window 터미널에서는 보이지 않는다는 점을 알아 두시기 바랍니다.

그리고 echo 8 /proc/sys/kernel/printk는 echo 8 > /proc/sys/kernel/printk를 잘못 적으신 것 같군요. 하지만, KERN_ALERT은 priority가 아주 높기 때문에 이 문제와는 상관이 없을 것입니다.