debian wheezy 7.5에서 첫 번째로드 가능한 커널 모듈을 만들려고합니다. 웹에서 다른 튜토리얼의 샘플 코드를 시험해 보았지만 필자가 생각하는 것처럼 작동하지 않는다. 여기 insmod lkm.ko는로드 가능한 커널 모듈에서 init_module 대신 cleanup_module을 호출합니다.
내 코드입니다 : 그래서 그것은 잘 컴파일하지만#include <linux/module.h>
#include <linux/kernel.h>
void cleanup_module(void)
{
printk(KERN_INFO "exit LKM...");
}
int init_module(void)
{
printk(KERN_INFO "loading LKM...");
return 0;
}
나는 메이크 파일이
obj-m += lkm.o
all:
sudo make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
처럼 보이는 그것을 컴파일하고있어 나는 "$와 LKM을로드 할 때 sudo insmod lkm.ko " 그리고 로그 메시지를 살펴보면 "exit LKM ... ", 그래서 insmod가 init_module 대신 cleanup_module 시스템 호출을 호출하는 것처럼 보입니다. 같은 일이 발생하면 "$ sudo rmmod lkm"을 사용하면 "LKM로드 중 ..." 로그 메시지가 나타납니다. 그래서 정말로 이것이 왜, 그리고 내가 웹에서 찾은, 그 insmod init_module() 등을 통해 LKM을로드하는 것입니다 모르겠다 ...
나는 그것에 대한 몇 가지 도움이나 설명을 주시면 고맙겠 습니다만, 나는 정말로 잘못 된 것이 없다는 것을 알지 못하기 때문에.
다시 시도하십시오. 그러나 printk 문자열의 끝 부분에 줄 바꿈 문자를 넣으십시오. –
해결했습니다! 고마워요! 신참 실수였던 것 같아요. @ZanLynx 왜 내가 그걸 넣어야하는지 설명해 주시겠습니까? – henk