다음을 수행하는 기본 Linux 커널 모듈을 만들었습니다.
static __init int init(void)
{
printk(KERN_DEBUG "Banana");
return 0;
}
그리고 물론:
module_init(init);
이상한 점은 다음을 통해 모듈을 삽입한 후 "Banana" 문자열을 찾을 수 없다는 것입니다.
insmod banana_module.ko
주문하다
dmesg -k | grep Banana
아무것도 반환하지 않습니다.
그런데 모듈을 뺐다가 다시 꽂아보니 찾을 수 있더군요. 그러다가 발견한 바나나는 이전 바나나와 현재 삽입된 바나나 두 개였습니다. 플러시 문제 때문인가요? 나는 이 동작이 약간 이상하다고 생각하며 인터넷에서 비슷한 질문을 찾을 수 없습니다.
그런데, 이 문제는 VM이 있는(VM 없이) 데스크톱과 노트북 모두에서 발생합니다.
그렇다면 왜 커널은 바나나를 좋아하지 않습니까?
답변1
문제가 어디에 있는지 알아냈습니다.
커널 메시지 끝에 종료 문자 \n을 지정하지 않았습니다. 무시하면 위에서 설명한 대로 동작합니다. 그 이유는 커널 메시지가 완료 시에만 인쇄되는 레코드로 처리되기 때문입니다. 자세한 내용은 다음을 참조하세요.printk 문제에 관한 기사