Penguin
Note: You are viewing an old revision of this page. View the current version.

Some notes regarding the modules system for Linux.

Stopping a module from being loaded during boot

First you will need to determine how the module is being loaded.

There are a couple of ways to blacklist a module, and depending on the method used to load it depends on where this is configured. (Based upon a Debian system).

HotPlug

The file /etc/hotplug/blacklist, and directory /etc/hotplug/blacklist.d/ contain a list of modules which will not be loaded by the Hotplug system.

localhost:# cat /etc/hotplug/blacklist.d/ieee1394
ohci1394
eth1394
ieee1394
sbp2

discover(8)?

There are two files for discover where you can blacklist a module, these are /etc/discover.conf and /etc/discover-autoskip.conf. The second one automatically gets included into the first and has the same internal format.

localhost:# cat /etc/discover-autoskip.conf
skip ohci1394
skip eth1394
skip ieee1394
skip sbp2

modprobe(8)

There are two ways to blacklist a module using modprobe(8) using the modprobe.conf(5) system, the first is to use its blacklisting system in /etc/modprobe.d/blacklist

localhost:# cat /etc/modprobe.d/blacklist
blacklist ieee1394
blacklist ohci1395
blacklist eth1394
blacklist sbp2

The second, more guaranteed method (for stubborn modules) is to use the following instead. Apparently an install primitive is the most powerfull in the config file, and will be used instead of the blacklist (even though they should be the same if not the other way around).

localhost:# cat /etc/modprobe.d/ieee1394
install ieee1394 /bin/true
install ohci1394 /bin/true
install eth1394 /bin/true
install sbp2 /bin/true

What on earth does that kernel module do?

Try this command. It parses the Kconfig files (displayed when using make menuconfig) found in your kernel source directory.

  • module="<module name>"; find -name 'Kconfig' -type f -exec awk 'BEGIN{RS="\nconfig|\nsource"}/'"$module"'/' {} \;

Example of Use:

staz@tokra:/usr/src/linux-source-2.6.20$ module="usbcore"; find -name 'Kconfig' -type f -exec awk 'BEGIN{RS="\nconfig|\nsource"}/'"$module"'/' {} \;
 USB
        tristate "Support for Host-side USB"
        depends on USB_ARCH_HAS_HCD
        ---help---
          Universal Serial Bus (USB) is a specification for a serial bus
          subsystem which offers higher speeds and more features than the
          traditional PC serial port.  The bus supplies power to peripherals
          and allows for hot swapping.  Up to 127 USB peripherals can be
          connected to a single USB host in a tree structure.

          The USB host is the root of the tree, the peripherals are the
          leaves and the inner nodes are special USB devices called hubs.
          Most PCs now have USB host ports, used to connect peripherals
          such as scanners, keyboards, mice, modems, cameras, disks,
          flash memory, network links, and printers to the PC.

          Say Y here if your computer has a host-side USB port and you want
          to use USB devices.  You then need to say Y to at least one of the
          Host Controller Driver (HCD) options below.  Choose a USB 1.1
          controller, such as "UHCI HCD support" or "OHCI HCD support",
          and "EHCI HCD (USB 2.0) support" except for older systems that
          do not have USB 2.0 support.  It doesn't normally hurt to select
          them all if you are not certain.

          If your system has a device-side USB port, used in the peripheral
          side of the USB protocol, see the "USB Gadget" framework instead.

          After choosing your HCD, then select drivers for the USB peripherals
          you'll be using.  You may want to check out the information provided
          in <file:Documentation/usb/> and especially the links given in
          <file:Documentation/usb/usb-help.txt>.

          To compile this driver as a module, choose M here: the
          module will be called usbcore.

It's certainly not perfect (awk expression could do with a bit of tweaking) and unfortunately some of the Kconfig menu items do not specify what the name of the kernel module is.


CategoryKernel