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 ...
Get Understanding the Linux Kernel, Second Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.