在启动时启动驱动程序的正确方法是什么?

在启动时启动驱动程序的正确方法是什么?

我成功了(全文这里)关于安装一些以太网卡根据文档,必须是手动启动:

# modprobe e1000bp

我希望在以下时间执行此驱动程序启动开机时间

是什么正确的方法为了达成这个?

我考虑过将命令添加到/etc/rc.local,但对于 PPTP 或 OpenVPN 连接,还有另一种方法应该更干净,所以我想知道是否可以为驱动程序启动指定相同的方法。

答案1

在 Debian 及其衍生产品(Ubuntu、Mint、elementary 等)上,模块列于/etc/modules(每行一个,您可以指定参数)在引导时加载。

在基于 systemd 的系统上,模块列出在/etc/modules-load.d/*.conf(每行一个)在启动时加载。

但是,您通常不需要显式加载模块。对于大多数硬件,Linux会自动检测硬件并加载适当的模块。 Linux 通过存储的数据库找到正确的模块,该数据库由模块源代码中的声明填充。/lib/modules/VERSION/modules.alias这个答案解释了完整的过程。

.ko将您编译的文件放在下面的某个位置(无论如何您都需要这样做才能找到它)并以 root 身份运行。这将更新数据库。之后,当内核检测到硬件时(或者更确切地说,当模块加载过程开始时,因为硬件在引导期间早期被检测到),该模块将在启动期间自动加载。/lib/modules/VERSION/modprobedepmod -amodules.aliases

如果您的硬件也受发行版提供的模块支持,但发行版的驱动程序有错误,那么我认为没有一种简单的方法可以强制使用其中一个模块。在这种情况下,您应该添加您编译的模块,并通过添加一行来/etc/modules将标准模块列入黑名单blacklist MODULE_NAME/etc/modprobe.conf

答案2

我会将驱动程序放入/etc/modules(Debian、Ubuntu、Mint 等)或/etc/modules.conf(Fedora、RHEL、CentOS、Arch Linux 等)文件中。

相关内容