Linking Modules on Demand
A module can be automatically linked when the functionality it provides is requested and automatically removed afterward.
For instance, suppose that the MS-DOS filesystem has not been linked,
either statically or dynamically. If a user tries to mount an MS-DOS
filesystem, the mount( ) system call normally
fails by returning an error code, since MS-DOS is not included in the
file_systems list of registered filesystems.
However, if support for automatic linking of modules has been
specified when configuring the kernel, Linux makes an attempt to link
the MS-DOS module, and then scans the list of registered filesystems
again. If the module is successfully linked, the mount( ) system call can continue its execution as if the MS-DOS
filesystem were present from the beginning.
The modprobe Program
To automatically link a module, the kernel creates a kernel thread to
execute the modprobe
external program,[141] which takes care of possible
complications due to module dependencies. The dependencies were
discussed earlier: a module may require one or more other modules,
and these in turn may require still other modules. For instance, the
MS-DOS module requires another module named fat
containing some code common to all filesystems based on a
File Allocation Table (FAT). Thus, if it is not already present, the
fat module must also be automatically linked into the running kernel when the MS-DOS module is requested. Resolving dependencies and finding modules is a type ...