我正在尝试学习linux和内核开发。
我能够构建该模块,但无法加载它。
HelloWorld.c
/*
* hello-1.c - The simplest kernel module.
*/
#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_INFO */
int init_module(void)
{
printk(KERN_INFO "Hello world 1.\n");
/*
* A non 0 return means init_module failed; module can't be loaded.
*/
return 0;
}
void cleanup_module(void)
{
printk(KERN_INFO "Goodbye world 1.\n");
}
这是我的制作文件:
KERNEL_SOURCE := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
obj-m += HelloWorld.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
在执行insmod加载模块权限时被拒绝。我什至尝试用root以及modprobe来做,但是没有用。
我也尝试过Link,但问题还是一样。
希望我能得到一些帮助。我正在使用ubuntu 18.04LTS。
答案 0 :(得分:0)
首先,请确保在makefile
中毕竟有一个制表符:并且干净:没有空格
然后保存并运行命令make
之后,通过以下命令插入内核。
$ sudo insmod file_name.ko
最后,显示。
$ dmesg | tail -1
答案 1 :(得分:0)