Module init tools 3 12
Release date: 2010-06-07
This release of module-init-tools contains a number of bug fixes (hangs, crashes, etc.) and some new features (devnames, softdeps, and enhanced module overrides).
- devnames. Kay Sievers implemented support for "devname" alias entries in depmod. These are special aliases that are added by kernels after 2.6.35 (inclusive). These aliases are created in response to modules specifying the device names that they will create when loaded at runtime. This way, other tools - such as udev - can automatically load modules whenever certain node entries in /dev are accessed, without having to wait for the module to be loaded in order to first create the device node entry. This on-demand module loading can reduce the number of statically loaded non-probed modules on boot.
- softdeps. Andreas Robinson (with feedback from Alan Jenkins - who found several memory leaks and implemented support for renaming modules in softdeps) implemented softdeps. These will hopefully replace most existing uses of "install" and "remove" commands in the future by giving the modprobe utility an ability to handle implicit dependencies. These are other modules that do not have an explicit symbol dependency upon another module, but nonetheless should generally be loaded at the same time (whether before or after is determined through "pre" and "post" qualifiers). This also allows other utilities to explicitly determine such dependencies by driving modprobe, rather than attempting to parse the mess of "install" and "remove" commands that have sprung up over time. In future, these "install" and "remove" commands will likely be completely removed, unless it can be shown that there is a compelling use for them on modern distributions.
- Overrides. Module override commands can now use full regular expressions.
This release contains fixes for the following bugs (mostly Debian bugs):
- modinfo. A fix to elfops correctly handles modules with a bad .modinfo section (such as some well-known proprietary kernel modules from certain third parties). The previous "fix" actually was not complete.
- install. The install command could become stuck in a loop if modprobe were unable to determine whether it were already loaded (for example, if sysfs is not mounted).
- remove. Do not run remove commands for modules that are not loaded (similar behavior to install commands not running for modules that are not loaded).
- /sys/module/<module>/initstate. This appeared first in 2.6.20. If it is missing, don't necessarily assume the module is not in the kernel, and fallback to the old /proc/modules parsing code to determine module initstate.
- options. Various miscellaneous options were covered in the documentation, but not actually operating in short form (the long getopt version was working as described).
- various memory leaks. Alan Jenkins did a good job of working with valgrind (and other tools) to detect some memory leaks and post patches for them.
- removal of modules will now attempt to remove unused modules first, in order to ensure we don't leave various modules lying around after doing a remove operation.
- modprobe configuration commands are now stored in a configuration struct to allow for new commands to be added more easily in the future.
- Documentation. Various miscellaneous documentation cleanup. There is a lot more underway at the moment, for the next release.