jump to navigation

How to disable loading of unnecessary kernel modules November 17, 2010

Posted by Tournas Dimitrios in Linux.

A previous article made a comprehensive description about kernel modules . Lets recap the basics , and then demonstrate how to prevent some modules to be loaded if they are not used by the kernel .

What exactly is a kernel module? A Kernel Module is a program that is not actually compiled into the Linux kernel but is loaded separately. Kernel modules enable you to extend the capabilities of the kernel without the need to build extra functionality directly into the kernel image. A good example is the device driver.

There are certain advantages with using kernel modules as opposed to having the drivers compiled into the kernel. They can be unloaded (rmmod) and reloaded (modprobe, insmod) at any time, allowing you to pass different parameters to them rather than specify them once on bootup as kernel parameters or update them without rebooting. The fewer drivers you need, the fewer modules you need to load and the less memory Linux needs to operate ( kernel parts are never swapped to the virtual memory ) . Also, to upgrade a modularized driver you just need to recompile the module, whereas if the driver is part of the kernel then you have to recompile the kernel. For hotpluggable buses like USB, the modules can be loaded on demand rather than all at once.

You can see what modules are already loaded into the kernel by running lsmod, which gets its information by reading the file /proc/modules

Many time it happens that there are lots of module gets loaded into memory and which are not required and hence its better if we disable loading of such module to enhance the performance of the system.

How to disable loading of unnecessary kernel modules

  • * Open the shell and type command lsmod to see what are the modules that are loaded.
  • * Check the value in section “used by“, if the value is “0” it means that the this kernel module is not been used by any of the application/process and it’s unnecessary occupying the space in the memory, the best way to know about such module to use google/bing search engine and if you feel that this module is not required you can simply unload it, for example if you don;t have the floppy drive then why to load floppy module🙂
  • * Ok, so you have figure out what all module you want to blocking loading at the time of booting, go to console and open file /etc/modprobe.d/blacklist and add the kernel module that you want to disable loading, example shown below where I am disabling the loading of floppy & ipv6 kernel module.

blacklist ipv6
blacklist floppy

This tip can also use it to disable ipv6 on linux unless you wanted to just add the line

blacklist ipv6


1. Passing parameters to the kernel at run-time time on Linux « Tournas Dimitrios - February 7, 2011

[…] article demonstrated how to pass parameters to the kernel at boot time . At run-time we can  load / unload kernel modules , or change some parameters to squeeze out a bit more performance  . The key point for tuning the […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s