模块是内核的一部分(通常是设备驱动程序),但是并没有被编译到内核里面去。它们被分别编译并连接成一组目标文件,这些文件能被插入到正在运行的内核,或者从正在运行的内核中移走,进行这些操作可以使用insmod(插入模块)或rmmod(移走模块)命令,或者,在必要的时候,内核本身能请求内核守护进程(kerned)装入或卸下模块。
这里列出在Linux内核源程序中所包括的一些模块:
· 文件系统: minix, xiafs, msdos, umsdos, sysv,
isofs, hpfs,
smbfs, ext3,nfs,proc等
· 大多数SCSI 驱动程序: (如: aha1542, in2000)
· 所有的SCSI 高级驱动程序: disk, tape, cdrom, generic.
· 大多数以太网驱动程序: ( 非常多,不便于在这儿列出,请查看
./Documentation/networking/net-modules.txt)
· 大多数 CD-ROM 驱动程序:
aztcd:
Aztech,Orchid,Okano,Wearnes
cm206: Philips/LMS CM206
gscd: Goldstar
GCDR-420
mcd, mcdx: Mitsumi LU005, FX001
optcd: Optics Storage Dolphin
8000AT
sjcd: Sanyo CDR-H
sbpcd: Matsushita/Panasonic
CR52x, CR56x, CD200,
Longshine LCS-7260, TEAC CD
sonycd535:
Sony CDU-531/535, CDU-510/515
· 以及很多其它模块, 诸如:
lp:
行式打印机
binfmt_elf:
elf 装入程序
binfmt_java:
java 装入程序
isp16:
cd-rom 接口
serial:
串口(tty)
这里要说明的是,Linux内核中的各种文件系统及设备驱动程序,既可以被编译成可安装模块,也可以被静态地编译进内核的映象中,这取决于内核编译之前的系统配置阶段用户的选择。通常,在系统的配置阶段,系统会给出三种选择(Y/M/N),“Y”表示要某种设备或功能,并将相应的代码静态地连接在内核映像中;“M”表示将代码编译成可安装模块,“N”表示不安装这种设备。