Linux是基于模块的,任何的驱动都是模块化的:
管理模块的命令:
1、列出系统中任何已加载的模块的大小和名称等:
lsmod或cat /proc/modules
ty@tonylinux:~$ lsmod
Module Size Used by
rfcomm 40216 0
l2cap 26244 5 rfcomm
bluetooth 50020 4 rfcomm,l2cap
ppdev 9220 0
radeon 116000 1
........
ty@tonylinux:~$ cat /proc/modules
rfcomm 40216 0 - Live 0xf8dee000
l2cap 26244 5 rfcomm, Live 0xf8db2000
bluetooth 50020 4 rfcomm,l2cap, Live 0xf8dc2000
ppdev 9220 0 - Live 0xf8d88000
.........
2、modinfo 查看模块信息:
modinfo 能够查看模块的信息,通过查看模块信息来判定这个模块的用途。
ty@tonylinux:~$ modinfo bluetooth
filename: /lib/modules/2.6.15-27-386/kernel/net/bluetooth/bluetooth.ko
author: Maxim Krasnyansky <maxk@qualcomm.com>, Marcel Holtmann <marcel@holtmann.org>
description: Bluetooth Core ver 2.8
version: 2.8
license: GPL
alias: net-pf-31
vermagic: 2.6.15-27-386 preempt 486 gcc-4.0
depends:
srcversion: 7EE5558C84FD3DB2B68971C
3、modprobe 挂载新模块连同新模块相依赖的模块
modprobe 我们常用的功能就是挂载模块,在挂载某个内核模块的同时,这个模块所依赖的模块也被同时挂载;这是于insmod挂载模块有区别的地方。当然modprobe 也有列出内核任何模块,更有移除模块的功能;下在我们举个例子说一说咱们常用的功能和参数;
modprobe -c
odprobe -c 能够查看modules 的配置文档,比如模块的别名是什么等;
modprobe -l 是列出内核中任何的模块,包括已挂载和未挂载的;通过modprobe -l ,我们能查看到我们所需要的模块,然后根据我们的需要来挂载;
[root@localhost beinan]# modprobe 模块名 注:挂载一个模块;
root@localhost beinan]# modprobe -r 模块名 注:移除已加载的模块,和rmmod 功能相同;
4、rmmod 移除已挂载模块
rmmod 模块名
5、depmod 创建模块依赖关系的列表
这个模块管理工具是创建模块依赖关系的列表,有几个参数我们注意一下就行了,现在的的Linux 发行版所用的内核是2.6x版本,是自动解决依赖关系,所以这个命令知道就行了;模块之前也有依赖关系,比如我们想驱动USB 移动硬盘,现在有两种驱动,一种是udev ,在内核中有,但现在不太稳定;另一种办法是用usb-storage驱动,而usb-storage 依赖的模块是scsi 模块,所以我们要用usb-storage 的模块,也得把scsi 安装该命令为modules.dep 文档或映射文档创建依赖关系,modules.dep文档位于 /lib/modules/2.6.15-27-i386;这是我的电脑的目录文档。
6、insmod 挂载模块
insmod 这个工具,和modprobe 有点类似,但功能上没有modprobe 强,modprobe 在挂载模块是不用指定模块文档的路径,也不用带文档的后缀.o 或.ko ;而insmod 需要的是模块的所在目录的绝对路径,并且一定要带有模块文档名后缀的(modulefile.o 或modulesfile.ko );
[root@localhost beinan]# insmod /lib/modules/2.6.11-1.1369_FC4/kernel/drivers/net/tg3.ko
模块的配置文档 modules.conf 或 modprobe.conf
内核模块的开机自动挂载模块一般是位于一个配置文档,一般的Linux发行版本都有 /etc/modules.conf 或 /etc/modprobe.conf 。比如Fedora Core 4.0 内核模块开机自动加载文档是 /etc/modprobe.conf ;在这个文档中,一般是写入模块的加载命令或模块的别名的定义等;比如我们在modules.conf 中可能会发行类似的一行 ;
通过源码编译驱动一般是./configure ;make;make install ,有时程式不提供./configure ,我们能够make或make install ,或执行make;make install ;假如不能make install ,则需要我们自己复制.o或.ko文档到 /lib/modules/内核版本/kernel/目录 或 /lib/modules/内核版本/kernel/drivers 目录中相应的驱动目录;
这个还是自己尝试吧,说也说不清楚,碰到问题后就知道怎么弄了;具体的还是驱动的REAME和INSTALL为准。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




