Index NOTE: To better understand this article, check out the previous articles in this series. Introduction Source Code Drivers Security Configuration Part 1 Configuration Part 2 Configuration Part 3 Configuration Part 4 Configuration Part 5 Configuration Part 6 Configuration Part 7 Configuration Part 8 Configuration Part 9 Configuration Part 10 Configuration Part 11 Configuration Part 12 Configuration Part 13 Configuration Part 14 Configuration Part 15 Configuration Part 16 Configuration Part 17 Configuration Part 18 Configuration Part 19 Configuration Part 20 Configuration Part 21 Configuration Part 22 Configuration Part 23 Compiling and Installing Modules Patches Types of Kernels Aloha! Now that we have our new kernel installed, we may have a module we wish to manipulate. Modules allow users to get extra hardware support without making a new kernel. For example, if a kernel is made without HFS support, a user can still use the HFS filesystem without making a new kernel. Just in case you do not fully understand modules, Window's equivalent to Linux's modules are called drivers. As an analogy - Linux is to Windows as module is to driver. However, many people still call modules "drivers". That is fine, people and search engines know what you mean. Sometimes, modules are referred to as Loadable Kernel Modules (LKMs) because they can be loaded without changing the kernel. Modules are stored under /lib/modules/ this directory has a directory for each installed kernel. The module files themselves end in ".ko" which stands for "Kernel Object". NOTE: Not all “.ko” files are modules. Linux also uses “.ko” for Linux's analogy of Window's “.dll” files. To access the module directory (via command-line) of the currently active kernel, type this command - /lib/modules/$(uname -r)/. The "$(uname -r)" will be replaced by the output of "uname -r", so the user does not need to know or memorize the name/version of the active kernel. This folder is well organized. In ./kernel/, these are the following directories. arch - Architecture specific modules crypto - Cryptography modules drivers - Many modules are stored here and are sorted by hardware type. For example, ATA modules are under the "ata" folder. fs - Filesystem modules are kept here. For instance, the module file for the Minix filesystem is /lib/modules/$(uname -r)/kernel/fs/minix/minix.ko lib - The library routines are stored under this directory mm - Modules for managing memory and debugging the kernel are stored here net - Network modules are stored here sound - This is an obvious one Some other folders may exist. For instance, I have a "ubuntu" directory which contains modules specific to Ubuntu or were added by the Ubuntu developers. When managing modules, Root privileges must be used. So, use "sudo" or login as Root. To load a module, use this command (when logged in as Root. Otherwise, remember sudo.) Code: modprobe <MODULE> For illustration, to use the HFS+ filesystem, load its module. Code: modprobe hfsplus Include the "-v" parameter for verbose messaging and "-s" sends error messages to the syslog. To see what modules the desired module requires, use "--show-depends" as a parameter. To remove a module, use "-r". To get information about a module, use the "modinfo <MODULE>" command. You may notice information about aliases. Some modules have an alias which can be used to reference the module. The real name and alias each work well. Use which ever you remember better. The "lsmod" command lists the currently load modules. This is helpful when users need to ensure a module is loaded. Some modules can be given special parameters before they are loaded. To view these parameters (and aliases) for a specific module, use this command Code: modprobe -c | grep <MODULE> To set a parameter for a module at runtime (the module is already running/loaded), use this command Code: insmod MODULE PARAM_NAME=VALUE If you wish to load a module and also set the parameter at the same time, use this command Code: modprobe MODULE PARAM_NAME=VALUE Alternately, parameters can be set at runtime be changing files in /sys/module/. For illustration, to change a parameter for a bluetooth module, use something like this Code: sudo echo -n "VALUE" > /sys/module/bluetooth/parameters/FILENAME If a module has issues loading, like an "unknown symbol error", the module may still be able to be loaded by using the "-f" parameter. Use this parameter with caution. Code: modprobe -f <MODULE> To load modules from different kernel versions, use the same command above after you copy the module to the active kernel's module path. Or, try Code: insmod /PATH/TO/MODULE.ko Now, you can enjoy your kernel even more with module manipulation.