Modules failing to load at boot time

  • 7005784
  • 19-Apr-2010
  • 08-Nov-2012

Environment

Novell Open Enterprise Server 2 (OES 2) Linux
Novell Open Enterprise Server 1 (OES 1) Linux
SUSE Linux Enterprise Server 11
SUSE Linux Enterprise Server 10
SUSE Linux Enterprise Server 9
SUSE Linux Enterprise Desktop 11
SUSE Linux Enterprise Desktop 10

Situation

Some modules requested for loading at boot time in the ram disk (/boot/initrd) or after the filesystem is active are not loading. In some cases no error message is documented. In other cases, the errors are logged in /var/log/messages, /var/log/boot.msg or dmesg output.

Comparing the /etc/sysconfig/kernel modules with the lsmod command show some modules are missing. A sample /etc/sysconfig/kernel follows:

hostname:~ # sed -e '/^#/d;/^$/d;/^[[:space:]]*$/d' /etc/sysconfig/kernel
INITRD_MODULES="processor thermal ahci fan jbd ext3 edd"
DOMU_INITRD_MODULES="xennet xenblk"
MODULES_LOADED_ON_BOOT=""
ACPI_DSDT=""
SKIP_RUNNING_KERNEL=""

You can check if the /etc/sysconfig/kernel modules are loaded with the following command line script:
--snip--
#!/bin/bash
. /etc/sysconfig/kernel
for i in $INITRD_MODULES $DOMU_INITRD_MODULES $MODULES_LOADED_ON_BOOT
do
  if ! lsmod | grep"^$i[[:space:]]"&>/dev/null; then
    echo $i
  fi
done; echo
--snip--

thermal
xennet
xenblk

In this case the thermal kernel driver was requested in INITRD_MODULES, but is currently not loaded. Since the server is not running Xen, thexennet and xenblk drivers would not be necessary.

Resolution

The module may not have been copied into the ram disk, errored out when attempting to load, or was unloaded by the system administrator.

Ram Disk
1. Make sure the all necessary modules are included in the /etc/sysconfig/kernel.
2. Run mkinitrd command to rebuild the ram disk with the modules
3. Watch the mkinitrd output to ensure all the modules are listed in the Kernel Modules: line. Additional module dependencies will be included as needed, and the DOMU_INITRD_MODULES will be included if Xen is in use.

hostname:~ # mkinitrd

Kernel image:   /boot/vmlinuz-2.6.27.45-0.1-default
Initrd image:   /boot/initrd-2.6.27.45-0.1-default
Root device:    /dev/disk/by-id/ata-WDC_WD1600BJKT-75F4T0_WD-WXD0A9983092-part6 (/dev/sda6) (mounted on / as ext3)
Resume device:  /dev/disk/by-id/ata-WDC_WD1600BJKT-75F4T0_WD-WXD0A9983092-part5 (/dev/sda5)
Kernel Modules: hwmon thermal_sys processor thermal dock scsi_mod libata ahci fan jbd mbcache ext3 edd crc-t10dif sd_mod usbcore ohci-hcd ehci-hcd uhci-hcd ff-memless hid usbhid
Features:       block usb resume.userspace resume.kernel
Bootsplash:     splash (1024x768)
24073 blocks

Load Error
If the module does not load due to an error, check the following for reasons why. Correct any problems logged.
1. dmesg output
2. /var/log/messages
3. /var/log/boot.msg

Unsupported modules on SLES11 are not allowed by default and will not log any errors.
TID7002793: Unsupported kernel modules in SLES11
TID7000554: Unsupported kernel modules are not loaded automatically on SLES9

You should also check the modules themselves to ensure they are installed and not damaged in anyway. Use the rpm -V command to validate the kernel RPM package. If any of the modules that are not loading show up as modified, you should reinstall the kernel package.

hostname:~ # uname -r
2.6.27.45-0.1-default
hostname:~ # rpm -qa | grep kernel-default\*
kernel-default-extra-2.6.27.45-0.1.1
kernel-default-base-2.6.27.45-0.1.1
kernel-default-2.6.27.45-0.1.1
hostname:~ # rpm -V kernel-default
hostname:~ # rpm -V kernel-default-base
.......T  c /etc/modprobe.d/generic_serial-blacklist
.......T  c /etc/modprobe.d/module-renames
hostname:~ # rpm -V kernel-default-extra

System Administrator
If the system administrator has unloaded the module, just reboot the server or use the modprobe command to reload the driver.

hostname:~ # modprobe thermal

If you determine that their are unnecessary modules, you can remove them from the /etc/sysconfig/kernel file and rebuild the ram disk with mkinitrd.