This file describes the strategy for dynamically loadable modules in the Linux kernel. This is not a technical description on the internals of module, but mostly a sample of how to compile and use modules. In this kernel you also have a possibility to create modules that are less dependent on the kernel version. This option can be selected during "make config", by enabling CONFIG_MODVERSIONS. Note: If you enable CONFIG_MODVERSIONS, you will need some utilities from the latest module support package: "modules-1.1.8*.tar.gz"! Anyway, your first step is to compile the kernel, as explained in the file README. It generally goes like: make config make dep make clean make zImage or make zlilo In "make config", you select what you want to include in the kernel. You will generally select the minimal set that is needed to boot: The filesystem of your root partition A scsi driver, but see below for a list of SCSI modules! Normal hard drive support Net support (CONFIG_NET) TCP/IP support (CONFIG_INET), but no drivers! plus those things that you just can't live without... What has been left out is generally loadable as a modules. The set of modules is rapidly increasing, but so far these are known: Most filesystems: minix, xiafs, msdos, umsdos, sysv, isofs Some SCSI drivers: aha1542, in2000 Some ethernet drivers: plip, slip, dummy, de600, de620 3c501, 3c509 eexpress, depca, ewrk3, apricot Most CDROM drivers: aztcd: Aztech,Orchid,Okano,Wearnes cm206: Philips/LMS CM206 gscd: Goldstar GCDR-420 mcd, mcdx: Mitsumi LU005, FX001 optcd: Optics Storage Dolphin 8000AT sbpcd: Matsushita/Panasonic CR52x, CR56x, CD200, Longshine LCS-7260, TEAC CD-55A sonycd535: Sony CDU-531/535, CDU-510/515 Some misc modules: lp: line printer binfmt_elf: elf loader When you have made the kernel, you create the modules by doing: make modules This will compile all modules and update the modules directory. In this directory you will then find a bunch of symbolic links, pointing to the various object files in the kernel tree. As soon as you have rebooted the newly made kernel, you can install and remove modules at will with the utilities: "insmod" and "rmmod". Now, after you have made all modules, you can also do: make modules_install This will copy all newly made modules into subdirectories under "/lib/modules/kernel_release/", where "kernel_release" is something like 1.1.83, or whatever the current kernel version is... Nifty features: If you have installed the utilities from "modules-1.1.8*.tar.gz", you will have access to two new utilities: "modprobe" and "depmod" Using the modprobe utility, you can load any module like this: /sbin/modprobe module without paying much attention to which kernel you are running. To use modprobe successfully, you generally place the following command in your /etc/rc.d/rc.S script. /sbin/depmod -a This computes the dependencies between the different modules. Then if you do, for example /sbin/modprobe umsdos you will automatically load _both_ the msdos and umsdos modules, since umsdos runs piggyback on msdos. Written by: Jacques Gelinas Bjorn Ekwall