Tôi có một mô-đun linux đơn giản mà tôi muốn xây dựng và chèn vào nhân, nhưng gặp một số sự cố ở phần 'sudo insmod <module_name>'.
Ubuntu đang chạy trên máy chủ Win10 thông qua VirtualBox.
Hai người bạn khác đã làm các bước tương tự và nó đã hiệu quả với họ.
Một cái có phiên bản kernel 5.11.0-40 trong khi cái kia có phiên bản giống như tôi, 5.11.0-41.
Mô-đun 'linux_module.c' trông như thế này:
#include <linux/kernel.h>
#include <linux/module.h>
MODULE_LICENSE("GPL");
__init int init_module(void)
{
printk (KERN_INFO "Xin chào thế giới từ linux_module\n");
trả về 0;
}
__exit void cleanup_module(void)
{
}
Tệp Makefile:
obj-m =
obj-m += linux_module.o
KVERSION = $(shell uname -r)
tất cả các mô-đun:
tạo các mô-đun -C /lib/modules/$(KVERSION)/build M=$(PWD)
dọn dẹp:
làm sạch -C /lib/modules/$(KVERSION)/build M=$(PWD)
Sử dụng 'make all' trả về cho tôi cái này:
tạo các mô-đun -C /lib/modules/5.11.0-41-generic/build M=/home/soberflow/Documents/BS/KernelModule/LinuxModule
make[1]: Nhập thư mục '/usr/src/linux-headers-5.11.0-41-generic'
CC [M] /home/soberflow/Documents/BS/KernelModule/LinuxModule/linux_module.o
MODPOST /home/soberflow/Documents/BS/KernelModule/LinuxModule/Module.symvers
CC [M] /home/soberflow/Documents/BS/KernelModule/LinuxModule/linux_module.mod.o
LD [M] /home/soberflow/Documents/BS/KernelModule/LinuxModule/linux_module.ko
make[1]: Rời khỏi thư mục '/usr/src/linux-headers-5.11.0-41-generic'
Tôi nhận được lỗi sau:
insmod: LỖI: không thể chèn mô-đun linux_module.ko: Định dạng mô-đun không hợp lệ
Với 'modprobe <module_name>' nó báo như sau:
modprobe: FATAL: Không tìm thấy mô-đun linux_module.ko trong thư mục /lib/modules/5.11.0-41-generic
Có ai có ý tưởng vấn đề có thể là gì không?