如何在系统启动时加载设备驱动程序?

时间:2015-02-23 11:53:42

标签: linux-kernel linux-device-driver

我的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中选择它,还是以其他方式执行此操作?

2 个答案:

答案 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