# ls -F
bin@
dev/
etc/
linuxrc@
lost+found/
modules/
proc/
sbin/
tmp/
var/
# cd modules
# ls
module-info
modules.cgz
modules.dep
modules.pcimap
pcitable
|
其中modules.dep为模块的注册文件,同时有各种模块的依存关系。modules.cgz为cpio的打包文件,实际的各种驱动模块就在该文件中。我们可以通过以下命令解包:
# cpio -idmv < modules.cgz
|
由此可以看到,解包出来的目录2.4.21-4XXX。进入该目录下的i386目录,就可以看到当前启动盘中支持的所以驱动程序:
# ls
3c59x.o
3w-xxxx.o
8139cp.o
8139too.o
8390.o
aacraid.o
acenic.o
aic79xx.o
……
|
若希望在系统中加入需要的驱动程序,可以相应地修改这些文件,比如在modules.dep中加入该模块的名字和依存关系,将编译好的驱动模块文件加入modules.cgz中,这样就可以制定自己的安装光盘。
硬盘上的系统启动过程与上面类似,但是initrd的镜像文件要更简单些,一般在 initrd-2.4.XXX.img的虚拟文件系统中,只会在/lib目录下包含ext3.o jbd.o lvm-mod.o等少数文件,用来驱动硬盘上的ext3的文件系统。加载文件系统后,就可以使用/lib/modules/2.4.XXX/下的 modules.dep文件及Kernel目录中的各种驱动文件。
自动配置安装
如果安装完Linux系统后,又添加了新的硬件,那么系统必须载入正确的驱动程序才可以使用它。在Red Hat Linux中,可以使用kudzu来配置硬件。这是PnP设备的检测程序,当系统使用新硬件引导后,运行kudzu(默认会自动运行),如果新硬件被支持,那么它就会被自动检测到。该程序还会为它配置驱动模块,把结果写入到文件/etc/sysconfig/hwconf中,kudzu可以通过对比这个文件发现新安装的硬件,并进行配置;也可以通过编辑模块配置文件/etc/modules.conf来手工指定加载模块。
Kudzu服务默认每次启动时都要运行,如果需要缩短启动时间,使用下面命令可以停止系统启动时的kudzu服务:
如果要安装新的硬件,可以手动运行kudzu程序。
那么kudzu程序如何认识硬件的呢?可以查看/usr/share/hwdata/目录下的文件,根据这些文件中的PnP信息,kudzu可以识别各种硬件设备。
以上介绍了Linux下驱动程序的大体结构、主要的加载方式和相关配置文件,在安装Linux时加载驱动程序,并且根据需要定制自己的引导盘,在安装完成后安装新的、即插即用硬件。下一讲开始,我们将学习具体硬件驱动的安装方法。
-- 原文链接: http://tech.ccidnet.com/art/302/20050829/320759_1.html
|