Penguin
Blame: modules.conf(5)
EditPageHistoryDiffInfoLikePages
Annotated edit history of modules.conf(5) version 1, including all changes. View license author blame.
Rev Author # Line
1 perry 1 MODULES.CONF
2 !!!MODULES.CONF
3 NAME
4 DESCRIPTION
5 SEMANTICS
6 SYNTAX
7 DEFAULT CONFIGURATION
8 ALTERNATIVE CONFIGURATION FILE
9 SEE ALSO
10 AUTHOR
11 ----
12 !!NAME
13
14
15 modules.conf - configuration file for loading kernel modules
16 !!DESCRIPTION
17
18
19 The behavior of __modprobe(8)__ (and __depmod(8)__ )
20 can be modified by the (optional) configuration file
21 __/etc/modules.conf.__
22
23
24 The configuration file consists of a set of lines.
25 All empty lines, and all text on a line after a '#', will be
26 ignored.
27 Lines may be continued by ending the line with a ''.
28 The remaining lines should all conform to one of the
29 following formats:
30
31
32 [[add] above module module_list
33 alias alias_name result
34 [[add] below module module_list
35 define VARIABLE WORD
36 depfile=A_PATH
37 else
38 elseif EXPRESSION
39 endif
40 if EXPRESSION
41 include PATH_TO_CONFIG_FILE
42 insmod_opt=GENERIC_OPTIONS_TO_INSMOD
43 install module command ...
44 keep
45 [[add] options module MODULE_SPECIFIC_OPTIONS
46 path=A_PATH
47 path[[TAG]=A_PATH
48 generic_stringfile=A_PATH
49 pcimapfile=A_PATH
50 isapnpmapfile=A_PATH
51 usbmapfile=A_PATH
52 parportmapfile=A_PATH
53 ieee1394mapfile=A_PATH
54 pnpbiosmapfile=A_PATH
55 [[add] probe name module_list
56 [[add] probeall name module_list
57 prune filename
58 post-install module command ...
59 post-remove module command ...
60 pre-install module command ...
61 pre-remove module command ...
62 remove module command ...
63 persistdir directory_name
64 All arguments to a directive will be processed to handle shell meta-characters, which means that
65
66
67 path[[misc]=/lib/modules/1.1.5?/local
68 path[[net]=/lib/modules/`uname -r`/net
69 __DANGER:__ Applying shell expansion to user supplied input is a major security risk. Modutils code only does meta expansion via shell commands for trusted data. Basically this means only for data in the config file. Even that assumes that the user cannot run modprobe as root while supplying their own config file. Programs (including the kernel) that invoke modutils programs as root with user supplied input must pass exactly one user supplied parameter and must set safe mode or risk creating local root exploits. See ''modprobe'' for details on safe mode.
70
71
72 Directives may be repeated multiple times. Note that some
73 directives can have an optional prefix: ''add.'' When
74 this prefix is used, the new module_list will be
75 __added__ to the previous module_list instead of
76 replacing it.
77 !!SEMANTICS
78
79
80 __A_PATH__ is the fully qualified path to the target. It
81 is possible to use shell meta-characters in __A_PATH__
82 including command output, such as ''uname -r'' and
83 ''kernelversion.''
84 These two commands are also understood internally in these
85 utilities as meaning the version number of the current
86 kernel and the current kernel version respectively (e.g.:
87 2.2.3 and 2.2).
88
89
90 __WORD__ is a sequence if non-white characters. If '
91 __WORD__ will then be expanded w.r.t.
92 meta-characters. If the expanded result gives more than one
93 word then only the first word of the result will be
94 used.
95
96
97 EXPRESSION below can be:
98
99
100 ''WORD compare_op WORD''
101
102
103 where compare_op is one of ==, !=,
104
105
106 ''-n WORD compare_op WORD''
107
108
109 where compare_op is one of ==, !=,
110
111
112 ''WORD''
113
114
115 If the expansion of WORD fails, or if the expansion is
116
117
118 ''-f FILENAME''
119
120
121 Test if the file FILENAME exists.
122
123
124 ''-k''
125
126
127 Test if
128
129
130 ''! EXPRESSION''
131
132
133 A negated expression is also an expression.
134 !!SYNTAX
135
136
137 This is a description of the legal directives.
138
139
140 ''define VARIABLE WORD''
141
142
143 Do a ''putenv('' Variables can
144 be created and modified by this directive. The variables
145 will be available in the environment, which makes them
146 usable for all commands executed in the current
147 session.
148
149
150 ''depfile=A_PATH''
151
152
153 This is the path to the dependency file that will be created
154 by __depmod__ and used by __modprobe__ to find the
155 modules and their dependent modules. Normally the default
156 value should be used, see below.
157
158
159 ''if EXPRESSION''
160
161
162 If the expression is evaluated to be __TRUE__ then all
163 directives up to the matching ''else, elseif'' or
164 ''endif'' are processed. Otherwise they are ignored.
165 ''if'' directives may be nested up to an internal maximum
166 of 20.
167 Note: please avoid having any __path__ directives
168 conditionally processed. Since __modprobe__ has enough
169 built-in
170 __path__ directive will gain you nothing but confusion.
171 Really.
172
173
174 ''else''
175
176
177 If the previous matching ''if'' or ''elseif''
178 directive evaluated its expression to be __FALSE__ then
179 the directives enclosed by the (optional) ''else''
180 directive and its matching ''endif'' directive will be
181 processed.
182
183
184 ''elseif EXPRESSION''
185
186
187 If the previous matching ''if'' or ''elseif''
188 directives evaluated their expression to be __FALSE__ and
189 if the expression for this directive evaluates to
190 __TRUE__ then the directives up to the next matching
191 ''elseif, else'' or ''endif'' directive will be
192 processed.
193
194
195 ''endif''
196
197
198 This directive ends the chain of matching ''if, elseif''
199 or ''else'' directive(s) controlling the conditional
200 processing of configuration file directives.
201
202
203 if EXPRESSION
204 any config lines
205 elseif EXPRESSION
206 any config lines
207 else
208 any config lines
209 endif
210 The ''else'' and ''elseif'' directives are optional.
211
212
213 ''include PATH_TO_CONFIG_FILE''
214
215
216 To handle different platforms or configurations with a
217 single configuration file can be quite complex. With the use
218 of the ''include'' directive, conditionally processed by
219 ''if'' directives, this is now easier to
220 handle.
221
222
223 ''insmod_opt=GENERIC_OPTIONS_TO_INSMOD''
224
225
226 If insmod should need some special options, not specified
227 elsewhere, this directive makes it possible to add such an
228 option, to be used for every invocation. The standard
229 default options to insmod does normally not have to be
230 modified unless some special situation needs to be
231 handled.
232
233
234 ''keep''
235
236
237 If this word is found on a line __before__ any lines that
238 contain the __path__ descriptions, the default set of
239 paths will be saved, and thus added to. Otherwise the normal
240 behavior is that the default set will be __replaced__ by
241 the set of paths in the configuration file.
242
243
244 ''path=A_PATH''
245
246
247 ''path[[TAG]=A_PATH''
248
249
250 The __A_PATH__ argument specifies an additional directory
251 to search for modules. The __path__ directive can carry
252 an optional tag. This tells us a little more about the
253 purpose of the modules in this directory and allows some
254 automated operations by __modprobe.__ The tag is appended
255 to the
256 __
257 One very useful tag is __boot,__ which can be used to
258 mark all directories containing modules that should be
259 loaded at boot-time.
260 Note that you must specify the __keep__ directive to
261 prevent any __path__ directives from over-riding the
262 default paths.
263
264
265 ''generic_stringfile=A_PATH''
266
267
268 This is the path to the generic_string file that will be
269 created by __depmod__ and used by install scripts that
270 need string information from modules. Normally the default
271 value should be used, see below. ''pcimapfile=A_PATH''
272 This is the path to the pcimap file that will be created by
273 __depmod__ and used by install scripts to find the module
274 that supports a pci device. Normally the default value
275 should be used, see below.
276
277
278 ''isapnpmapfile=A_PATH''
279
280
281 This is the path to the isapnpmap file that will be created
282 by __depmod__ and used by install scripts to find the
283 module that supports an ISA PNP device. Normally the default
284 value should be used, see below.
285
286
287 ''usbmapfile=A_PATH''
288
289
290 This is the path to the usbmap file that will be created by
291 __depmod__ and used by install scripts to find the module
292 that supports an USB device. Normally the default value
293 should be used, see below.
294
295
296 ''parportmapfile=A_PATH''
297
298
299 This is the path to the parportmap file that will be created
300 by __depmod__ and used by install scripts to find the
301 module that supports an parport device. Normally the default
302 value should be used, see below.
303
304
305 ''ieee1394mapfile=A_PATH''
306
307
308 This is the path to the ieee1394map file that will be
309 created by __depmod__ and used by install scripts to find
310 the module that supports an ieee1394 device. Normally the
311 default value should be used, see below.
312
313
314 ''pnpbiosmapfile=A_PATH''
315
316
317 This is the path to the pnpbiosmap file that will be created
318 by __depmod__ and used by install scripts to find the
319 module that supports an pnpbios device. Normally the default
320 value should be used, see below.
321
322
323 ''alias alias_name result''
324
325
326 The
327
328
329 alias iso9660 isofs
330 makes it possible to write __modprobe iso9660__ although there is no object file for such a module available.
331 Note that the line:
332
333
334 alias some_module off
335 will make modprobe ignore requests to load that module. Another special alias is:
336
337
338 alias some_module null
339 which will make requests for some_module always succeed, but no module will actually be installed. This can be used as a base for stacks created via the ''above'' and ''below'' directives.
340
341
342 It is possible to have a large number of levels of ''alias'' directives, since all aliases will be recursively expanded in order to find the physical module actually referred to. There is an arbitrary limit of 1000 on alias depth to detect loops like:
343
344
345 alias a b
346 alias b a
347 If the final result of an ''alias'' mapping does not match the name of any module then modprobe applies probe and probeall mappings to the result. If those do not succeed then the module is not found. This makes constructs like this give sensible results (from devfs).
348
349
350 alias /dev/sg* /dev/sg
351 probeall /dev/sg scsi-hosts sg
352 It is legal for an alias to map module A to module B and for module A to exist at the same time but this construct is ambiguous and is __not__ recommended. For historical reasons, the kernel sound system has a module called sound.o but the sound developers also want an alias from sound to the module for the user's sound card, e.g. __
353
354
355 ''[[add] probe name module_list''
356
357
358 ''[[add] probeall name module_list''
359
360
361 These directives can only be used when ''name'' is the
362 name of the module requested on the command line of
363 __modprobe.__ The effect is that when a request for
364 ''name'' is made, the modules in module_list will be
365 tried, in the specified order. The difference between the
366 directives is that ''probe'' will continue until the
367 first successful module insertion, while ''probeall''
368 will continue until the end of the list. The exit status
369 reflects whether any module has been successfully installed
370 or not. The optional ''add'' prefix adds the new list to
371 the previous list instead of replacing it.
372
373
374 ''prune filename''
375
376
377 The top level module directory for a kernel install contains
378 files which are not modules. These include modules.dep,
379 modules.generic_string, modules.pcimap, modules.isapnpmap,
380 modules.usbmap, modules.parportmap, modules.ieee1394map,
381 modules.pnpbiosmap, the build symlink to the kernel source
382 tree and any other files that the install process wants to
383 save from a kernel build. To prevent __depmod__ issuing
384 warnings about
385 __depmod__ has a
386 built in prune list which cannot be removed because it lists
387 files which will exist for any kernel build. If you add your
388 own files to the top level modules directory, add a
389 ''prune'' statement for each ''filename''.
390 __Note:__ The prune list is only used when scanning the
391 top directory of a ''path'', and only if the directory
392 contains at least one subdirectory from the standard list of
393 subdirectory names, i.e. it appears to be a top level
394 directory built from a kernel install. The ''prune'' list
395 has no effect on subdirectories of a
396 ''path''.
397
398
399 ''[[add] options [[-k] module
400 [[MODULE_SPECIFIC_OPTIONS]''
401
402
403 All module names, including aliased names, can have their
404 own ''options'' directives. Options specified for an
405 alias have higher priority than the options specified for
406 more
407 ''options'' directives. Options given on the
408 command line have the highest priority. If there is
409 ''-k'' before the module name, then the module won't be
410 autocleaned even if __modprobe__ has been invoked with
411 the ''-k'' autoclean option. The optional ''add''
412 prefix adds the new list to the previous list instead of
413 replacing it. If the result of an ''alias'' is not a real
414 module then any ''options'' that were constructed from
415 the ''alias'' chain are discarded before invoking
416 probe[[all]. If any of the ''MODULE_SPECIFIC_OPTIONS''
417 contain characters that are special to the shell (e.g.
418 space, comma, parentheses) then the option must be enclosed
419 in '
420 ''
421
422
423 abc='
424
425
426 ''[[add] above module module_list''
427
428
429 This directive makes it possible for one module to
430 lsmod(8)__ command. The ''above'' directive is
431 useful for those circumstances when the dependencies are
432 more complex than what can be described in the
433 __modules.dep__ dependency file. This is an optimized
434 case of the ''post-install'' and ''pre-remove''
435 directives. Note that failure of installing the module will
436 not influence the exit status of __modprobe.__ The
437 optional ''add'' prefix adds the new list to the previous
438 list instead of replacing it.
439
440
441 ''[[add] below module module_list''
442
443
444 This directive makes it possible for one module to
445 lsmod(8)__
446 command. The ''below'' directive is useful for those
447 circumstances when the dependencies are more complex than
448 what can be described in the __modules.dep__ dependency
449 file. This is an optimized case of the ''pre-install''
450 and ''post-remove'' directives. Note that failure of
451 installing the module will not influence the exit status of
452 __modprobe.__ The optional ''add'' prefix adds the new
453 list to the previous list instead of replacing
454 it.
455
456
457 The following directives are useful for (optionally)
458 executing specific commands when loading and unloading a
459 module. Note that even aliased module names can have these
460 directives, which will be executed in the proper order
461 together with any directives for the unaliased module
462 name.
463
464
465 ''pre-install module command''
466
467
468 Execute ''command'' before installing the specified
469 module. See the ''below'' directive as well.
470
471
472 ''install module command''
473
474
475 Execute ''command'' instead of the default __insmod__
476 when installing the specified module.
477
478
479 ''post-install module command''
480
481
482 Execute ''command'' after installing the specified
483 module. See the ''above'' directive as well.
484
485
486 ''pre-remove module command''
487
488
489 Execute ''command'' before removing the specified module.
490 See the ''above'' directive as well.
491
492
493 ''remove module command''
494
495
496 Execute ''command'' instead of the default (built-in)
497 __rmmod__ when removing the specified
498 module.
499
500
501 ''post-remove module command''
502
503
504 Execute ''command'' after removing the specified module.
505 See the ''below'' directive as well.
506
507
508 ''persistdir''=directory_name
509
510
511 When __rmmod__ removes a module that contains persistent
512 module parameters, it stores the (possibly) modified
513 parameters underneath ''directory_name''. When
514 __modprobe__ loads a module that contains persistent
515 module parameters, it looks under ''directory_name'' for
516 any previous values for those parameters. You must set
517 ''persistdir'' to the name of a directory that is
518 readable when modules are loaded and is writable when
519 modules are unloaded, the default value is
520 /var/lib/modules/persist. Many Linux distributions load
521 their modules before mounting filesystems, this can cause
522 problems for persistent data. If /var is a separate
523 partition and it is mounted after modules are loaded then
524 __insmod__ has nowhere to read persistent data from. You
525 have two choices when /var is on a separate
526 partition.
527
528
529 1) Specify ''persistdir'' pointing at a directory in the
530 root partition, say /lib/modules/persist. This assumes that
531 the root partition is writable when __rmmod__
532 runs.
533
534
535 2) Load any filesystem related modules first, mount the /var
536 partition then load the rest of the modules. This assumes
537 that the filesystem modules have no persistent
538 data.
539 !!DEFAULT CONFIGURATION
540
541
542 If the configuration file '/etc/modules.conf' is missing, or
543 if any directive is not overridden, the following defaults
544 are assumed:
545
546
547 depfile=/lib/modules/`uname -r`/modules.dep
548 generic_stringfile=/lib/modules/`uname
549 -r`/modules.generic_string pcimapfile=/lib/modules/`uname
550 -r`/modules.pcimap isapnpmapfile=/lib/modules/`uname
551 -r`/modules.isapnpmap usbmapfile=/lib/modules/`uname
552 -r`/modules.usbmap parportmapfile=/lib/modules/`uname
553 -r`/modules.parportmap ieee1394mapfile=/lib/modules/`uname
554 -r`/modules.ieee1394map pnpbiosmapfile=/lib/modules/`uname
555 -r`/modules.pnpbiosmap
556
557
558 path[[boot]=/lib/modules/boot
559 path[[toplevel]=/lib/modules/`uname -r`
560 path[[toplevel]=/lib/modules/`kernelversion`
561 path[[toplevel]=/lib/modules/default
562 path[[toplevel]=/lib/modules
563
564
565 persistdir=/var/lib/modules/persist
566
567
568 There are also a set of default ''alias'' and
569 ''options'' directives. Since this set is continuously
570 extended, no list will be given here. The (current) default
571 set can be viewed by using the __modprobe -c__ command
572 with an empty __/etc/modules.conf__ file.
573
574
575 All ''options'' directives specify the options needed for
576 a module, as in:
577
578
579 modprobe de620 bnc=1
580 These options will be overridden by any options given in the __/etc/modules.conf__ file, and on the __modprobe__ command line.
581
582
583 Remember that it is possible to have an ''options''
584 directive for aliased module names as well as for the
585 non-aliased name. This is useful for e.g. the dummy
586 module:
587
588
589 alias dummy0 dummy
590 options dummy0 -o dummy0
591 !!ALTERNATIVE CONFIGURATION FILE
592
593
594 For historical reasons, if /etc/modules.conf does not exist,
595 modutils will read /etc/conf.modules instead. However the
596 use of this historical name is deprecated and it should be
597 replaced with /etc/modules.conf. This version of modutils
598 issues a warning message if /etc/conf.modules exists, later
599 versions will give an error message and refuse to load
600 modules.
601 !!SEE ALSO
602
603
604 depmod(8), modprobe(8), insmod(8)
605 !!AUTHOR
606
607
608 Bjorn Ekwall
609 ----
This page is a man page (or other imported legacy content). We are unable to automatically determine the license status of this page.