1.1设备驱动概述1.1.1设备驱动简介及驱动模块
操作系统是通过各类驱动程序来驾驭硬件设备的,它为用户屏蔽了各类各样的设备,驱动硬件是操作系统最基本的功能,而且提供统一的操作方法。设备驱动程序是内核的一部份linux修改文件名,硬件驱动程序是操作系统最基本的组成部份,在Linux内核源程序中也占有60%以上。为此linux命令chm,熟悉驱动的编撰是很重要的。
Linux内核中采用可加载的模块化设计(LKMs,LoadableKernelModules),通常情况下编译的Linux内核是支持可插入式模块的,也就是将最基本的核心代码编译在内核中,其他的代码可以选择在内核中linux系统驱动开发,或则编译为内核的模块文件。
常见的驱动程序也是作为内核模块动态加载的,例如声卡驱动和网卡驱动等,而Linux最基础的驱动,如CPU、PCI总线、TCP/IP合同、APM(中级电源管理)、VFS等驱动程序则直接编译在内核文件中。有时也把内核模块称作驱动程序,只不过驱动的内容不一定是硬件罢了,例如ext3文件系统的驱动。为此,加载驱动时就是加载内核模块。
这儿,首先列出一些模块相关命令。
lsmod列举当前系统中加载的模块,其中左侧第一列是模块名linux系统驱动开发,第二列是该模块大小,第三列则是该模块使用的数目。
rmmod是用于将当前模块卸载。
insmod和modprobe是用于加载当前模块,但insmod不会手动解决依存关系,而modprobe则可以按照模块间依存关系以及/etc/modules.conf文件中的内容手动插入模块。
mknod是用于创建相关模块。