在启动时加载linux内核模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在启动时加载linux内核模块相关的知识,希望对你有一定的参考价值。

我已经为研究项目编写了一个内核模块,它是连接到Raspberry Pi的七段显示器的驱动程序(我对内核开发很新)。我想永久安装模块并在编译时在启动时加载它,所以我将install目标添加到我的Makefile中,允许用户直接编译和安装它。

我发现所有内核模块都位于/lib/modules/<kernel version>/kernel内部,所以我想我只需将已编译的模块复制到一个子目录中,并在modules.ordermodules.dep文件中列出该模块。但是,这种方法不起作用,因为我找不到任何资源,我有点绝望。

这就是我的Makefile目前的样子:

# 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

如何告诉内核它应该在启动时加载模块sevenseg.ko

答案

tldr;

# echo 'my-module-name' >> /etc/modules

更长的解释:

请参阅insmodmodprobemodprobe.conf上的文档。

这是一个体面的教程:https://www.cyberciti.biz/faq/linux-how-to-load-a-kernel-module-automatically-at-boot-time/

以上是关于在启动时加载linux内核模块的主要内容,如果未能解决你的问题,请参考以下文章

内核模块的加载如何在 linux 中工作?

linux内核模块中调用shell脚本

linux模块编写

内核模块编译

启动和内核管理-面试题

20135327--linux内核分析 实践二