是否有一个“.d”目录用于在启动时加载模块,与/ etc / modules相反?

我正在使用Puppet自动化我的系统上的一些配置(但是,这在这里并不真正相关)。 对于一组计算机,我想在启动时加载内核模块。 最优雅的方式似乎是编辑/etc/modules并在单独的行上添加一个。 但是,我想在“ .d ”目录结构中使用单独的文件以便于维护,而不是让Puppet编辑文件。

对于modprobe并指定或列入黑名单模块的选项,有/etc/modprobe.d/ ,但是使用单个新文件在启动时实际加载模块的最优雅方法是什么? 基本上,我正在寻找不存在的/etc/modules.d/目录。

有什么建议?

您要查找的目录是

 /etc/modules-load.d 

例如,要始终加载nf_conntrack_pptp内核模块,请将nf_conntrack_pptp添加到/etc/modules-load.d/pptp.conf 。 文件名无关紧要,但我猜测它的约定或要求是以.conf结尾。

这是使用/etc/init.d/kmod的SysVinit脚本为较旧的Ubuntu版本(没有systemd)实现的。 对于较新的systemd版本(15.04+),systemd处理此问题。 阅读文档man 5 modules-load.d

您应该能够在/etc/modprobe.d/中添加额外的.conf文件来进行模块加载(即使其中的默认文件都是关于黑名单的内容)。

您可以将模块名称单独放在一行上,或者如果您需要更复杂的行为,可以在行的开头使用“install”。 从联机帮助页:

 install modulename command... This is the most powerful primitive: it tells modprobe to run your command instead of inserting the module in the kernel as normal. 

http://manpages.ubuntu.com/manpages/precise/man5/modprobe.conf.5.html

/etc/modules.d目录中使用文件时,必须使用install指令。

由于“install”需要[module_name] [command]

 install your_module /bin/true 

会做的伎俩;)