10.1.1 什么是模块

模块是内核的一部分(通常是设备驱动程序),但是并没有被编译到内核里面去。它们被分别编译并连接成一组目标文件,这些文件能被插入到正在运行的内核,或者从正在运行的内核中移走,进行这些操作可以使用insmod(插入模块)rmmod(移走模块)命令,或者,在必要的时候,内核本身能请求内核守护进程(kerned)装入或卸下模块。 这里列出在Linux内核源程序中所包括的一些模块:

·      文件系统: minix, xiafs, msdos, umsdos, sysv, isofs, hpfs,

           smbfs, ext3,nfsproc

·      大多数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-H94A

       sbpcd:     Matsushita/Panasonic CR52x, CR56x, CD200,

                  Longshine LCS-7260, TEAC CD-55A

       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”表示不安装这种设备。