학습/리눅스

리눅스 커널 모듈 설치와 에러 해결 방법

roquen4145 2025. 2. 18. 17:53

리눅스 커널 모듈 개발을 위해 샘플 코드를 빌드하고 설치하려고 했는데 아래와 같은 에러가 발생했습니다.

module hello_world: .gnu.linkonce.this_module section size must match the kernel's built struct module size at run time

 

구글링을 통해 여러 방법들 ( 리눅스 헤더 설치, build-essential 설치 등)을 시도해보다가

해결방법을 찾아서 공유합니다.

 

 

해결방법

해결방법은 리눅스 헤더 재설치였습니다. 아래와 같은 명령어를 사용합니다.

sudo apt install --reinstall linux-headers-$(uname -r)

샘플 리눅스 커널 모듈 소스

hello_world.c

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>

MODULE_LICENSE("GPL");
MODULE_AUTHOR("roquen4145");
MODULE_DESCRIPTION("A simple hello world module");
MODULE_VERSION("0.1");

static int __init hello_world_init(void) {
    printk(KERN_INFO "Hello, World!\n");
    return 0;
}

static void __exit hello_world_exit(void) {
    printk(KERN_INFO "Goodbye, World!\n");
}

module_init(hello_world_init);
module_exit(hello_world_exit);

 

Makefile

obj-m += hello_world.o

all:
	make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules

clean:
	make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) clean

 

빌드 및 설치 방법

make
sudo insmod hello_world.ko
# 결과 확인
sudo dmesg | tail

 

커널 모듈 제거

sudo rmmod hello_world
반응형