Linux设备驱动框架、配置文件及加载
.Wub131 { display:none; }
本讲主要概述Linux设备驱动框架、驱动程序的配置文件及常用的加载驱动程序的方法;并且介绍Red Hat Linux安装程序是如何加载驱动的,通过了解这个过程, 我们可以自己将驱动程序放到引导盘中;安装完系统后,使用kudzu自动配置硬件程序。
54com.cn
Linux设备驱动概述
中国网管联盟www.bitscn.com
1. 内核和驱动模块
中国网管联盟www、bitsCN、com
操作系统是通过各种驱动程序来驾驭硬件设备,它为用户屏蔽了各种各样的设备,驱动硬件是操作
系统最基本的功能,并且提供统一的操作方式。正如我们查看屏幕上的文档时,不用去管到底使用nVIDIA芯片,还是ATI芯片的显示卡,只需知道输入命令
后,需要的文字就显示在屏幕上。硬件驱动程序是操作系统最基本的组成部分,在Linux内核源程序中也占有较高的比例。
网管网bitsCN.com
Linux内核中采用可加载的模块化设计(LKMs ,Loadable Kernel Modules),一般情况下编译的Linux内核是支持可插入式模块的,也就是将最基本的核心代码编译在内核中,其它的代码可以选择是在内核中,或者编译为内核的模块文件。 中国网管联盟www.bitscn.com
如果需要某种功能,比如需要访问一个NTFS分区,就加载相应的NTFS模块。这种设计可以使内核文件不至于太大,但是又可以支持很多的功能,必要时动态地加载。这是一种跟微内核设计不太一样,但却是切实可行的内核设计方案。
中国网管联盟www.bitscn.com
我们常见的驱动程序就是作为内核模块动态加载的,比如声卡驱动和网卡驱动等,而Linux最
基础的驱动,如CPU、PCI总线、TCP/IP协议、APM(高级电源管理)、VFS等驱动程序则编译在内核文件中。有时也把内核模块就叫做驱动程序,
只不过驱动的内容不一定是硬件罢了,比如ext3文件系统的驱动。
网管联盟www.bitsCN.com
理解这一点很重要。因此,加载驱动时就是加载内核模块。下面来看一下有关模块的命令,在加载驱动程序要用到它们:lsmod、modprob、insmod、rmmod、modinfo。 54ne.com
lsmod 列出当前系统中加载的模块,例如:
54ne.com
中国网管联盟www.bitscn.com
#lsmod (与cat /proc/modules 得出的内容是一致的)
Module Size Used by Not tainted
radeon 115364 1
agpgart 56664 3
nls_iso8859-1 3516 1 (autoclean)
loop 12120 3 (autoclean)
smbfs 44528 2 (autoclean)
parport_pc 19076 1 (autoclean)
lp 9028 0 (autocle
相关文档:
我用的Java版本为1.4,用1.5的时候说是有不安全的操作,无法编译、运行。
下载最新版本,BRITE.tar.gz
$ gunzip BRITE.tar.gz
$ tar xvf BRITE.tar
$ cd BRITE/
$ make all
编译完成,运行BRITE
$ ./brite &
主要的问题 ......
当linux中的C api函数发生异常时,一般会将errno变量(需include
errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因,在实际编程中用这一招解决了不少原本看来莫名其妙的问题。但是
errno是一个数字,代表的具体含义还要到errno.h中去阅读宏定义,而每次查阅是一件很繁琐的事情。有下面几种方法 ......