Linux设备驱动框架、配置文件及加载

2016-01-29 17:41 39 1 收藏

Linux设备驱动框架、配置文件及加载,Linux设备驱动框架、配置文件及加载

【 tulaoshi.com - Linux 】

本讲主要概述Linux设备驱动框架、驱动程序的配置文件及常用的加载驱动程序的方法;并且介绍Red Hat Linux安装程序是如何加载驱动的,通过了解这个过程, 我们可以自己将驱动程序放到引导盘中;安装完系统后,使用kudzu自动配置硬件程序。

Linux设备驱动概述

1. 内核和驱动模块

操作系统是通过各种驱动程序来驾驭硬件设备,它为用户屏蔽了各种各样的设备,驱动硬件是操作系统最基本的功能,并且提供统一的操作方式。正如我们查看屏幕上的文档时,不用去管到底使用nVIDIA芯片,还是ATI芯片的显示卡,只需知道输入命令后,需要的文字就显示在屏幕上。硬件驱动程序是操作系统最基本的组成部分,在Linux内核源程序中也占有较高的比例。

Linux内核中采用可加载的模块化设计(LKMs ,Loadable Kernel Modules),一般情况下编译的Linux内核是支持可插入式模块的,也就是将最基本的核心代码编译在内核中,其它的代码可以选择是在内核中,或者编译为内核的模块文件。

如果需要某种功能,比如需要访问一个NTFS分区,就加载相应的NTFS模块。这种设计可以使内核文件不至于太大,但是又可以支持很多的功能,必要时动态地加载。这是一种跟微内核设计不太一样,但却是切实可行的内核设计方案。

我们常见的驱动程序就是作为内核模块动态加载的,比如声卡驱动和网卡驱动等,而Linux最基础的驱动,如CPU、PCI总线、TCP/IP协议、APM(高级电源管理)、VFS等驱动程序则编译在内核文件中。有时也把内核模块就叫做驱动程序,只不过驱动的内容不一定是硬件罢了,比如ext3文件系统的驱动。

理解这一点很重要。因此,加载驱动时就是加载内核模块。下面来看一下有关模块的命令,在加载驱动程序要用到它们:lsmod、modprob、insmod、rmmod、modinfo。

lsmod 列出当前系统中加载的模块,例如:

#lsmod (与cat /proc/modules 得出的内容是一致的)Module Size Used by Not taintedradeon 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 (autoclean)parport 37088 1 (autoclean) [parport_pc lp]autofs 13364 0 (autoclean) (unused)ds 8704 2 yenta_socket 13760 2 pcmcia_core 57184 0 [ds yenta_socket]tg3 55112 1 sg 36940 0 (autoclean)sr_mod 18104 0 (autoclean)microcode 4724 0 (autoclean)ide-scsi 12208 0 scsi_mod 108968 3 [sg sr_mod ide-scsi]ide-cd 35680 0 cdrom 33696 0 [sr_mod ide-cd]nls_cp936 124988 1 (autoclean)nls_cp437 5148 1 (autoclean)vfat 13004 1 (autoclean)fat 38872 0 (autoclean) [vfat]keybdev 2976 0 (unused)mousedev 5524 1 hid 22212 0 (unused)input 5888 0 [keybdev mousedev hid]ehci-hcd 20104 0 (unused)usb-uhci 26412 0 (unused)usbcore 79392 1 [hid ehci-hcd usb-uhci]ext3 91592 2 jbd 52336 2 [ext3]

上面显示了当前系统中加载的模块,左边数第一列是模块名,第二列是该模块大小,第三列则是该模块使用的数量。

如果后面为unused,则表示该模块当前没在使用。如果后面有autoclean,则该模块可以被rmmod -a命令自动清洗。rmmod -a命令会将目前有autoclean的模块卸载,如果这时候某个模块未被使用,则将该模块标记为autoclean。如果在行尾的[ ]括号内有模块名称,则括号内的模块就依赖于该模块。例如:

cdrom 34144 0 [sr_mod ide-cd]

其中ide-cd及sr_mod模块就依赖于cdrom模块。

系统的模块文件保存在/lib/modules/2.4.XXX/kerne目录中,根据分类分别在fs、net等子目录中,他们的互相依存关系则保存在/lib/modules/2.4.XXX/modules.dep 文件中。

需要注意,该文件不仅写入了模块的依存关系,同时内核查找模块也是在这个文件中,使用modprobe命令,可以智能插入模块,它可

来源:https://www.tulaoshi.com/n/20160129/1502524.html

延伸阅读
标签: 电脑入门
想要使用RAID安装系统就需要先安装raid驱动,可是找不到raid驱动该怎么办,又该如何加载raid驱动呢?下面图老师小编就给大家介绍下Linux如何加载raid驱动,一起来了解下吧。 加载raid驱动步骤: 1、光盘启动进入安装界面,在boot:后面输入linux dd按回车 2、如果驱动不正确则提示:Failed to mount drive disk 如果驱动正确则提示加...
标签: 电脑入门
对于普通的不依赖于外置程序目录结构的注册表项目,可以用常规方法将修改项写成REG文件(可以直接从XP系统中导出,然后在其基础上修)。在外置程序目录下有个RegDoc.cmd,这个文件是毛桃用来注册外置程序文档关联的(就是改注册表),可以用记事本打开它,加入一行: 则PE加载外部配置时它会自动导入。 这是最简单的改注册表的方法。但是如果要修...
本例子为读取配置文件,一般用作读取参数 /*  * Created on 2004-9-21  *  * Java读取配置文件例子 */ package net.jspcn.test; import java.util.*; import java.io.*; /**  * @author whilvydy  * ...
[SETUP]CpuVendor=SamsungCpuChip=S3C4510CpuEndian=LITTLEFlashVendor=SiliconStorageTechnologyFlashChip=SST39LF/VF160RamAddress=0x00400000FlashAddress=0x00000000FlashWidth=16FlashChipsPerSector=1LittleEndian=1Sim1=SYSCFG:$E7FFFF90       \Sim2=EXTDBWTH:003002   \Sim3=ROMCON0:000060&...
标签: windows 操作系统
说起硬件配置文件,有很多朋友都忽略了它在Windows XP中所起的作用,其实如果利用得当的话,可以大大提高系统的工作效率。 什么是硬件配置文件 所谓硬件配置文件,是指在启动计算机时告诉Windows应该启动哪些设备,以及使用每个设备中的哪些设置的一系列指令。当用户第一次安装Windows时,系统会自动创建一个名为“Profile 1...

经验教程

222

收藏

50
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部