This file describes which modules can be automatically loaded at boot time
with Hotplug and what to do with the ones which cannot be loaded by Hotplug.

The following classes of modules will be loaded automatically by the 2.6
kernel itself or the hotplug initscript:

* The modules that directly correspond to some ISAPNP, PCI or USB hardware
  will be loaded by hotplug initscript. Such modules are called "detectable"
  below. To verify if the module is detectable, check for the presence of the
  MODULE_DEVICE_TABLE macro in its source code. If you don't have enough skills
  to do that, there is another way. Compile and install the modules. Find the
  compiled module in the /lib/modules/`uname -r` directory.
  Execute the following command:

    modinfo /path/to/this/module.ko

  If you see an alias that begins with "pci:" or "usb:", then the module
  is detectable. For example, the snd-fm801.ko module is detectable because it
  has a "pci:v00001319d00000801sv*sd*bc04sc01i*" alias.

* The modules that are listed in the modinfo output as dependencies of
  detectable modules will be loaded automatically by hotplug scripts. For
  example, the detectable snd-fm801.ko module depends upon snd-pcm,
  snd-opl3-lib, snd-mpu401-uart, snd and snd-tea575x-tuner modules. They will
  be loaded automatically by Hotplug if a ForteMedia-based soundcard is
  present in the system.

* Filesystem modules (e.g., vfat.ko), NLS character sets (e.g., nls-koi8-r.ko)
  and most network protocol drivers (e.g., ipv6.ko) are loaded automatically
  by the kernel upon the first need.

* Character and block device drivers are loaded automatically even without the
  Hotplug package installed when an application opens the existing device node
  without a loaded driver. This is controlled by the aliases in
  /lib/modules/`uname -r`/modules.alias (generated automatically) and
  /etc/modprobe.conf (created manually) files that begin with char-major and
  block-major. However, this relies upon the device node being already present
  even when the module is not loaded, and this is not the case with Udev. For
  example, the following modules can be loaded automatically on first demand
  when Udev is not used: lp, ppp-generic. They will not be loaded
  automatically when Udev is used.

* Devfsd also can load modules on demand. However, since devfs is deprecated,
  this is not covered here.

* Almost everything else is not loaded automatically. For example, the
  following modules will not be loaded automatically: ide-cd, snd-pcm-oss

There are several solutions for using such undetectable drivers:

* Compile them directly into the kernel, not as modules. If you seem to be
  unable to do this, it's because you selected some dependency of such a
  driver as a module.

* Use a distribution-provided script to load these modules at boot time
  unconditionally. On Debian systems, it's sufficient to put their names in
  the /etc/modules file.

* Add a line to the /etc/modprobe.conf file that tells module-init-tools about
  a "missed dependency" between modules, e.g.:

    install snd-pcm modprobe -i snd-pcm ; modprobe snd-pcm-oss ; true

  This way, the OSS compatibility module will be loaded automatically for
  all PCI soundcards supported by ALSA. Note, however, that this solution
  depends upon snd-pcm.ko being a module. More examples of such
  "dependencies" are shown below:

    install snd-seq modprobe -i snd-seq ; modprobe snd-seq-oss ; true
    install parport modprobe -i parport ; modprobe lp ; modprobe ppdev ; true
    install mptbase modprobe -i mptbase ; modprobe mptscsih ; modprobe mptctl ; modprobe mptlan ; true
    install usb-storage modprobe -i usb-storage ; modprobe sd-mod ; true

  As you can see, some detectable module or its dependency is put on the
  left, and its undetectable helpers are enumerated then. Note however that
  this approach doesn't help you to load modules like nbd.ko that don't depend
  upon any hardware at all.

