베어본 Linux 장치 드라이버 모듈을 로드하려고 하는데 dmesg에서 이 문제가 계속 발생합니다.
module dummydriver: .gnu.linkonce.this_module section size must match the kernel's built struct module size at run time
모듈을 로드하려고 하면 다음 메시지가 나타납니다.
insmod: ERROR: could not insert module dummydriver.ko: Invalid module format
내가 알 수 있는 한 내 커널 버전은 모듈을 빌드하는 데 사용하는 버전과 일치하며 아래와 같이 Pop OS 22.04를 실행하고 있습니다 uname -r
.
6.5.6-76060506-generic
- 드라이버 코드:
#include <linux/module.h> #include <linux/version.h> #include <linux/kernel.h> static int __init driver_init(void) { printk(KERN_INFO "bababooey :D"); return 0; } static void __exit driver_exit(void) { printk(KERN_INFO "bababooey :("); } module_init(driver_init); module_exit(driver_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("dude"); MODULE_DESCRIPTION("driver");
- 파일 생성:
obj-m = dummydriver.o KVERSION = $(shell uname -r) all: make -C /lib/modules/$(KVERSION)/build M=$(shell pwd) modules clean: make -C /lib/modules/$(KVERSION)/build M=$(shell pwd) clean
- 출력의 경우:
make -C /lib/modules/6.5.6-76060506-generic/build M=/home/david/Programming/dummydriver modules make[1]: Entering directory '/usr/src/linux-headers-6.5.6-76060506-generic' CC [M] /home/david/Programming/dummydriver/dummydriver.o MODPOST /home/david/Programming/dummydriver/Module.symvers CC [M] /home/david/Programming/dummydriver/dummydriver.mod.o LD [M] /home/david/Programming/dummydriver/dummydriver.ko make[1]: Leaving directory '/usr/src/linux-headers-6.5.6-76060506-generic'
모듈에 서명하고 보안 부팅을 끄려고 시도했지만 여전히 dmesg에서 초기 오류가 발생합니다. 누구든지 제안 사항이 있으면 감사하겠습니다.