《Linux操作系统的驱动框架及驱动加载.docx》由会员分享,可在线阅读,更多相关《Linux操作系统的驱动框架及驱动加载.docx(11页珍藏版)》请在优知文库上搜索。
1、1.inux驱动框架及驱动加载本讲主要概述1.inUX设备驱动框架、驱动程序的配置文件及常用的加载驱动程序的方法:并且介绍RedHat1.inux安装程序是如何加载驱动的,通过了解这个过程,我们可以自己将驱动程序放到引导盘中:安装完系统后,运用kudzu臼动配置硬件程序。1.inux设备驱动概述1 .内核和驱动模块操作系统是通过各种驱动程序来驾驭硬件设备,它为用户屏蔽了各种各样的设备,驱动硬件是操作系统最基本的功能,并且供应统一的操作方式。正如我们查看屏箱上的文档时,不用去管究竟运用nVIDIA芯片,还是ATl芯片的显示卡,只需知道输入吩咐后,须要的文字就显示在屏幕上。硬件驱动程序是操作系统最
2、基本的组成部分,在1.inUX内核源程序中也占有较高的比例。1.inux内核中采纳可加我的模块化设计(1.KMs,1.oadableKernelM(XluIcs),一般状况卜编译的1.inUX内核是支持可插入式模块的,也就是将最基本的核心代码编译在内核中,其它的代码可以选择是在内核中,或者编译为内核的模块文件。假如须要某种功能,比如须要访问一个NTFS分区,就加载相应的NTFS模块。这种设计可以使内核文件不至于太大,但是又可以支持许多的功能,必要时动态地加载。这是一种跟微内核设计不太一样,但却是切实可行的内核设计方案。我们常见的驱动程序就是作为内核模块动态加载的,比如声卡驱动和网卡驱动等,而1
3、.inux最基础的驱动,如CPU、PCl总线、TCP/IP协议、APM(高级电源管理)、VFS等驱动程序则编译在内核文件中。有时也把内核模块就叫做驱动程序,只不过驱动的内容不肯定是硬件罢了,比如ext3文件系统的驱动。理解这一点很重要。因此,加载驱动时就是加载内核模块。下面来看一下有关模块的吩咐,在加载驱动程序要用到它们:1Smod、modprobinsmod、rmmod、modinfoIsmod列出当前系统中加载的模块,例如:#1snod(与catprocmoiules得出的内容是样的)ModuleSizeUsedbyNotIaintedradeon1153641agpgarl566643n
4、lsjso8859-l35161(autoclean)loop121203(autoclean)srnbfs445282(autoclean)parport-pc19076I(autoclean)lp90280(autoclean)parport370881(autoclean)|parport_pclpaulofs13364O(auloclean)(unused)ds87042yenta-socket137602pcmcia-core571840dsyenta_sockettg3551121sg369400(autoclean)sr_mod181040(autoclean)microcode
5、47240(autoclean)ide-scsi122080scsi-moi1089683sgsjnodide-scsiide-cd356800cdrom336960lsr_modevtty1将字符串“hellotiyl”输出到devtyl代表的第一个虚拟限制台上,此时按“Alt+Fl”可以看到该字符出现在屏幕上,这个特别的文件就代表着我们的第一虚拟限制台。filedevtty1/dcv/ttyl:characterspecial(4/1)由上可以看到,它的类型为CharaCter型(字符型)设备文件,主设备号为4,辅设备号为1。同样,devtly2代表着其次个虚拟限制台,是CharaCter
6、设备,编号为(4/2)。当将devcdrom加载到mncdrom中时,只要访问mntcdrom系统就会FI动引入到devcdrom对应的驱动程序中,访问实际的数据。有关设备文件的编号可以看内核文档/usr/src/linux-2.*/DOCUmentatiOn/devices.txt文件(在Kernel的源文件解包后的DOCUmemaIiOn竹目中),其中具体叙述了各种设备文件编号的意义。3.运用/proc朽目中的文件监视驱动程序的状态通过设备文件怎样访问到相应的驱动程序呢?它们中间有一个桥梁,那就是PrOC文件系统,它一般会被加载到/proc书目。访问设备文件时,操作系统通常会通过查找/pr
7、。C书目下的值,确定由哪些驱动模块来完成任务.假如PrOC文件系统没有加载,访问设备文件时就会出现错误。1.inux系统中proc文件系统是内核虚拟的文件系统,其中全部的文件都是内核中虚拟出来的,各种文件事实上是当前内核在内存中的参数。它就像是特地为访问内核而打开的一扇门,比如访问procCPUinfO文件,事实上就是访问目前的CPU的参数,每一次系统启动时系统都会通过etcfstab中设置的信息Fl动将proc文件系统加载到/proc书目下:# grepprocZetcZfstabnone/procprocdefaults00此外,也可以通过mount吩咐手动加载:# mount-tproc
8、none/proc通过/proc节目下的文件可以访问或更改内核参数,可以通过/proc书目查询驱动程序的信息。卜面先让我们看一卜7proc书目中的信息:# IsZprocI47255032510052485292cryptokcorepartitions1447945044511052505293deviceskmsgpci248105075512252525295dmaksynsself348205079513252545345driverIoadavgslabinfo448315080515152566execdonainslocksstat431649105081516052587fbIvmswaps4317491250825170526270filesystemsndstatsys431849245083518052718fsnem