Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1052776
  • 博文数量: 836
  • 博客积分: 43880
  • 博客等级: 大将
  • 技术积分: 5485
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-20 17:36
文章分类

全部博文(836)

文章存档

2011年(1)

2008年(835)

我的朋友

分类: LINUX

2008-08-20 18:26:52


本讲主要概述Linux设备驱动框架、驱动程序的配置文件及常用的加载驱动程序的方法;并且介绍RedHatLinux安装程序是如何加载驱动的,通过了解这个过程,我们可以自己将驱动程序放到引导盘中;安装完系统后,使用kudzu自动配置硬件程序。 Linux设备驱动概述 1.内核和驱动模块 操作系统是通过各种驱动程序来驾驭硬件设备,它为用户屏蔽了各种各样的设备,驱动硬件是操作系统最基本的功能,并且提供统一的操作方式。正如我们查看屏幕上的文档时,不用去管到底使用nVIDIA芯片,还是ATI芯片的显示卡,只需知道输入命令后,需要的文字就显示在屏幕上。硬件驱动程序是操作系统最基本的组成部分,在Linux内核源程序中也占有较高的比例。 Linux内核中采用可加载的模块化设计(LKMs,LoadableKernelModules),一般情况下编译的Linux内核是支持可插入式模块的,也就是将最基本的核心代码编译在内核中,其它的代码可以选择是在内核中,或者编译为内核的模块文件。 如果需要某种功能,比如需要访问一个NTFS分区,就加载相应的NTFS模块。这种设计可以使内核文件不至于太大,但是又可以支持很多的功能,必要时动态地加载。这是一种跟微内核设计不太一样,但却是切实可行的内核设计方案。 我们常见的驱动程序就是作为内核模块动态加载的,比如声卡驱动和网卡驱动等,而Linux最基础的驱动,如CPU、PCI总线、TCP/IP协议、APM(高级电源管理)、VFS等驱动程序则编译在内核文件中。有时也把内核模块就叫做驱动程序,只不过驱动的内容不一定是硬件罢了,比如ext3文件系统的驱动。 理解这一点很重要。因此,加载驱动时就是加载内核模块。下面来看一下有关模块的命令,在加载驱动程序要用到它们:lsmod、modprob、insmod、rmmod、modinfo。 lsmod列出当前系统中加载的模块,例如:
#lsmod(与cat/proc/modules得出的内容是一致的)
ModuleSizeUsedbyNottainted
radeon1153641
agpgart566643
nls_iso8859-135161(autoclean)
loop121203(autoclean)
smbfs445282(autoclean)
parport_pc190761(autoclean)
lp90280(autoclean)
parport370881(autoclean)[parport_pclp]
autofs133640(autoclean)(unused)
ds87042
yenta_socket137602
pcmcia_core571840[dsyenta_socket]
tg3551121
sg369400(autoclean)
sr_mod181040(autoclean)
microcode47240(autoclean)
ide-scsi122080
scsi_mod1089683[sgsr_modide-scsi]
ide-cd356800
cdrom336960[sr_modide-cd]
nls_cp9361249881(autoclean)
nls_cp43751481(autoclean)
vfat130041(autoclean)
fat388720(autoclean)[vfat]
keybdev29760(unused)
mousedev55241
hid222120(unused)
input58880[keybdevmousedevhid]
ehci-hcd201040(unused)
usb-uhci264120(unused)
usbcore793921[hidehci-hcdusb-uhci]
ext3915922
jbd523362[ext3]
1 2 3 4 5 6 下一页>>


下载本文示例代码
阅读(290) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~