我正在使用 Puppet 在我的系统上自动执行一些配置(但是,这与此无关)。对于一组机器,我想在启动时加载内核模块。最优雅的方式似乎是/etc/modules
在单独的行上编辑和添加一个。但是,为了更易于维护,我想在“ .d
”目录结构中使用单独的文件,而不是让 Puppet 编辑文件。
对于 modprobe 和指定选项或将模块列入黑名单,有/etc/modprobe.d/
,但在启动时使用单个新文件实际加载模块的最优雅方法是什么?基本上,我正在寻找不存在的/etc/modules.d/
目录。
有什么建议么?
答案1
您正在寻找的目录是
/etc/modules-load.d
例如,要始终加载nf_conntrack_pptp
内核模块,请添加nf_conntrack_pptp
到/etc/modules-load.d/pptp.conf
。文件名并不重要,但我猜惯例或要求是以 结尾.conf
。
这是针对较旧的 Ubuntu 版本(没有 systemd)使用 中的 SysVinit 脚本实现的/etc/init.d/kmod
。对于较新的 systemd 版本(15.04+),systemd 会处理此问题。阅读文档man 5 modules-load.d
。
答案2
您应该能够将额外的 .conf 文件放入 /etc/modprobe.d/ 中以进行模块加载(即使其中的默认文件都是关于黑名单内容的)。
您可能只需将模块名称单独放在一行上,或者如果您需要更复杂的行为,您可以在行首使用“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
答案3
当使用文件/etc/modules.d你必须使用的目录安装指示。
由于“安装”需要[模块名称] [命令]
install your_module /bin/true
会起作用 ;)