我为研究项目编写了一个内核模块,它是连接到Raspberry Pi的七段显示器的驱动程序(我对内核开发很新)。我想永久安装模块并在编译时在引导时加载它,因此我将install
目标添加到我的Makefile
,这允许用户直接编译和安装它。
我发现所有内核模块都位于/lib/modules/<kernel version>/kernel
内的某个位置,所以我想我只需将已编译的模块复制到一个子目录中,并在modules.order
和{{1}中列出该模块}文件。然而,这种方法不起作用,因为我找不到任何资源,我有点绝望。
这就是我的Makefile目前的样子:
modules.dep
如何告诉内核它应该在启动时加载模块# All source files are inside the src directory
obj-m := src/sevenseg.o
all:
make -C /lib/modules/$(shell uname -r)/build EXTRA_CFLAGS=-I$(PWD)/src M=$(PWD) modules
mv src/sevenseg.ko .
install:
make -C /lib/modules/$(shell uname -r)/build EXTRA_CFLAGS=-I$(PWD)/src M=$(PWD) modules
mkdir -p /lib/modules/$(shell uname -r)/kernel/drivers/sevenseg
cp src/sevenseg.ko /lib/modules/$(shell uname -r)/kernel/drivers/sevenseg
echo "kernel/drivers/sevenseg/sevenseg.ko:" >> /lib/modules/$(shell uname -r)/modules.dep
echo "kernel/drivers/sevenseg/sevenseg.ko" >> /lib/modules/$(shell uname -r)/modules.order
insmod src/sevenseg.ko
make clean
clean:
rm -rf src
?
答案 0 :(得分:0)
tldr;
# echo 'my-module-name' >> /etc/modules
更长的解释:
请参阅insmod
,modprobe
和modprobe.conf
上的文档。
这是一个不错的教程:https://www.cyberciti.biz/faq/linux-how-to-load-a-kernel-module-automatically-at-boot-time/