linux为PCI、USB设备找到合适的驱动

对于是否使用非得使用basename readlink这样的工具,也不一定,自己可以去/sys目录下去找。

http://hi.baidu.com/deep_pro/blog/item/415ec217bdead20c4b90a77d.html

这些操作都是我很久以前就想知道的,但是一直没有找到合适的资料,
终于在 《linux 内核技术手册》上看到了
做一个记录
1、确定网卡驱动
网卡只知道eth0 这样的设备名,如何确定到具体的驱动呢?
[root@localhost ~]# basename `readlink /sys/class/net/eth0/device/driver/module`
e100
这说明e100正是eth0使用的模块名
(我拿的IBM R32 ,很古老的本本的)

之后你可以在内核源码目录里搜索相关配置,以便新内核也能使用该模块
find -type f -name Makefile |xargs grep e100
得到
./drivers/net/Makefile:obj-$(CONFIG_E100) += e100.o
很明显,只要配置上CONFIG_E100,就能启用该模块

2、查找一个usb设备吧
但是USB鼠标不像网卡那么被人熟知,它的设备名是什么呢?
既然是HID输入设备,自然是/dev/input/eventX了
但是x是多少就不知道了。我也不明白为什么会有这么多的没用的event设备
只能尝试 od /dev/input/event0 这样,晃动鼠标看看能够读取到什么
这样确定我的event1是键盘,event2是指点棒,event3是USB鼠标
[root@localhost ~]# basename `readlink /sys/class/input/event3/device/driver/module`
usbhid
[root@localhost ~]# basename `readlink /sys/class/input/event1/device/driver/module`
atkbd
[root@localhost ~]# basename `readlink /sys/class/input/event2/device/driver/module`
psmouse

之后的步骤同上

以上都是已经找到驱动的情况,那么如果已有的Linux尚未识别的设备,查找驱动就不一眼了

3、未知PCI设备找驱动
这里还是以网卡为例
[root@localhost ~]# lspci |grep -i  ethernet
02:08.0 Ethernet controller: Intel Corporation 82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller (rev 42)

注意其总线ID 02:08.0 ,能够确定其在sys文件系统中的位置
[root@localhost ~]# cd /sys/bus/pci/devices/0000/:02/:08.0/
[root@localhost 0000:02:08.0]# cat vendor 
0x8086
[root@localhost 0000:02:08.0]# cat device 
0x1031
得到了供应商 0x8086和设备ID 0x1031 

现在为其查找驱动,在内核目录中
[root@localhost 2.6.23.1-42.fc8-i686]# grep -i 0x8086 include/linux/pci_ids.h 
#define PCI_VENDOR_ID_INTEL             0x8086

于是支持这个网卡的驱动肯定会用这个宏PCI_VENDOR_ID_INTEL,并且使用了设备ID 0x1031 

[root@localhost linux-2.6.15.6]# grep -Rl PCI_VENDOR_ID_INTEL *|grep 1031
drivers/net/eepro100.c: { PCI_VENDOR_ID_INTEL, 0x1031, PCI_ANY_ID, PCI_ANY_ID, },

直接定位到eepro100.c 

4、未知USB设备
还是USB鼠标举例吧,虽然不大可能找不到驱动,通过热插拔,很容易定位到USB设备
[root@localhost ~]# lsusb
Bus 002 Device 002: ID 15d9:0a33  
Bus 002 Device 001: ID 0000:0000  
Bus 003 Device 001: ID 0000:0000  
Bus 001 Device 001: ID 0000:0000  
[root@localhost ~]# lsusb
Bus 002 Device 001: ID 0000:0000  
Bus 003 Device 001: ID 0000:0000  
Bus 001 Device 001: ID 0000:0000  

ID为0000:0000  的设备是USB主控制器,可以忽略不计,这个鼠标是
Bus 002 Device 002: ID 15d9:0a33 
同PCI设备一样的道理,这里也要搜索 VID和PID ,同样的过程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值