5

I am automating some configurations on my systems using Puppet (however, that is not really relevant here). For a group of machines I want to load a kernel module at boot time. The most elegant way seems to edit /etc/modules and add one on an individual line. However, I would like to use separate files in a ".d" directory structure for easier maintainability, rather than having Puppet editing a file.

For modprobe and specifying the options for or blacklisting modules, there's /etc/modprobe.d/, but what's the most elegant way for actually loading modules at boot time using a single new file? Basically, I'm looking for the non-existing /etc/modules.d/ directory.

Any suggestions?

gertvdijk
  • 69,607

3 Answers3

3

The directory you are looking for is

/etc/modules-load.d

For example, to always load the nf_conntrack_pptp kernel module, add nf_conntrack_pptp to /etc/modules-load.d/pptp.conf. The filename doesn't matter, but I'm guessing the convention or requirement is that it ends in .conf.

This is implemented for older Ubuntu versions (without systemd) using a SysVinit script in /etc/init.d/kmod. For newer systemd-versions (15.04+), systemd handles this. Read the documentation man 5 modules-load.d.

gertvdijk
  • 69,607
Adam Monsen
  • 2,181
1

You should be able to put additional .conf files in /etc/modprobe.d/ to do module loading as well (even though the default files in there are all about blacklisting things).

You may be able to just put the module name on a line by itself, or if you need more complex behaviour, you can use 'install' at the beginning of a line. From the manpage:

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

  • Are you sure about that "to do module loading as well"? Does not seem to work for me. I've put a file in /etc/modprobe.d/mymodule.conf containing one line acpiphp, but the module isn't loaded on reboot. Same when prepending it with install. Additionally, when modprobing manually, now getting warnings: WARNING: /etc/modprobe.d/mymodule.conf line 1: ignoring bad line starting with 'acpiphp' – gertvdijk Dec 12 '12 at 20:49
  • I'm not sure about putting it on a line by itself, but I'm positive that you can load modules using a line that starts with "install". – ImaginaryRobots Dec 12 '12 at 21:03
  • Nope, as I said, same when prepending with install: WARNING: /etc/modprobe.d/mymodule.conf line 1: ignoring bad line starting with 'install' – gertvdijk Dec 12 '12 at 21:07
  • you might have to write your own startup script, at that point. – ImaginaryRobots Dec 13 '12 at 22:05
-1

When using a file in /etc/modules.d directory you have to use install directive.

Since "install" is expecting [module_name] [command]

install your_module /bin/true

will do the trick ;)