我的hello world设备:
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void) {
printk(KERN_ALERT "hello world\n");
return 0;
}
static void hello_exit(void) {
printk(KERN_ALERT "goodbye world\n");
}
module_init(hello_init);
module_exit(hello_exit);
如何让我的驱动程序在启动时自动加载?
我可以使用insmod
成功手动加载它,但我希望它在重启后自动加载。我需要使用Kbuild
并在make menuconfig
中选择它,还是以其他方式执行此操作?
答案 0 :(得分:3)
在基于systemd的系统上,有/lib/systemd/system/systemd-modules-load.service
哪个
[...] reads files from the above directories
which contain kernel modules to load during
boot in a static list
有关该systemd服务使用的目录列表,请参阅here。
您只需添加一个.conf文件,其中包含您要在引导时加载的模块的名称。该模块必须正确安装在/lib/modules
下,并且可以modprobe
加载。
答案 1 :(得分:0)
在/lib/modules/<kernel version>
如果在On Debian / Ubuntu Systems上,则将模块名称添加到/etc/modules
;如果在RH / Fedora / CentOS系统上,则将模块名称添加到/etc/modules.conf