linux如何查看编译进内核的驱动,如何知道在运行的linux上是否有(编译/内核模块)设备驱动程序控制设备?...

我如何知道在运行的Linux上是否支持设备,如果有,哪个设备驱动程序控制它?

例如,服务器上的lspci(PowerEdge 2900)给出:

00:00.0 Host bridge: Intel Corporation 5000X Chipset Memory Controller Hub (rev 12)

00:02.0 PCI bridge: Intel Corporation 5000 Series Chipset PCI Express x4 Port 2 (rev 12)

00:03.0 PCI bridge: Intel Corporation 5000 Series Chipset PCI Express x4 Port 3 (rev 12)

00:04.0 PCI bridge: Intel Corporation 5000 Series Chipset PCI Express x4 Port 4 (rev 12)

00:05.0 PCI bridge: Intel Corporation 5000 Series Chipset PCI Express x4 Port 5 (rev 12)

00:06.0 PCI bridge: Intel Corporation 5000 Series Chipset PCI Express x8 Port 6-7 (rev 12)

00:07.0 PCI bridge: Intel Corporation 5000 Series Chipset PCI Express x4 Port 7 (rev 12)

00:08.0 System peripheral: Intel Corporation 5000 Series Chipset DMA Engine (rev 12)

00:10.0 Host bridge: Intel Corporation 5000 Series Chipset FSB Registers (rev 12)

00:10.1 Host bridge: Intel Corporation 5000 Series Chipset FSB Registers (rev 12)

00:10.2 Host bridge: Intel Corporation 5000 Series Chipset FSB Registers (rev 12)

00:11.0 Host bridge: Intel Corporation 5000 Series Chipset Reserved Registers (rev 12)

00:13.0 Host bridge: Intel Corporation 5000 Series Chipset Reserved Registers (rev 12)

00:15.0 Host bridge: Intel Corporation 5000 Series Chipset FBD Registers (rev 12)

00:16.0 Host bridge: Intel Corporation 5000 Series Chipset FBD Registers (rev 12)

00:1c.0 PCI bridge: Intel Corporation 631xESB/632xESB/3100 Chipset PCI Express Root Port 1 (rev 09)

00:1d.0 USB Controller: Intel Corporation 631xESB/632xESB/3100 Chipset UHCI USB Controller #1 (rev 09)

00:1d.1 USB Controller: Intel Corporation 631xESB/632xESB/3100 Chipset UHCI USB Controller #2 (rev 09)

00:1d.2 USB Controller: Intel Corporation 631xESB/632xESB/3100 Chipset UHCI USB Controller #3 (rev 09)

00:1d.3 USB Controller: Intel Corporation 631xESB/632xESB/3100 Chipset UHCI USB Controller #4 (rev 09)

00:1d.7 USB Controller: Intel Corporation 631xESB/632xESB/3100 Chipset EHCI USB2 Controller (rev 09)

00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev d9)

00:1f.0 ISA bridge: Intel Corporation 631xESB/632xESB/3100 Chipset LPC Interface Controller (rev 09)

00:1f.1 IDE interface: Intel Corporation 631xESB/632xESB IDE Controller (rev 09)

00:1f.2 IDE interface: Intel Corporation 631xESB/632xESB/3100 Chipset SATA IDE Controller (rev 09)

01:00.0 PCI bridge: Intel Corporation 80333 Segment-A PCI Express-to-PCI Express Bridge

01:00.2 PCI bridge: Intel Corporation 80333 Segment-B PCI Express-to-PCI Express Bridge

02:0e.0 RAID bus controller: Dell PowerEdge Expandable RAID controller 5

04:00.0 PCI bridge: Broadcom EPB PCI-Express to PCI-X Bridge (rev c3)

05:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet (rev 12)

06:00.0 PCI bridge: Intel Corporation 6311ESB/6321ESB PCI Express Upstream Port (rev 01)

06:00.3 PCI bridge: Intel Corporation 6311ESB/6321ESB PCI Express to PCI-X Bridge (rev 01)

07:00.0 PCI bridge: Intel Corporation 6311ESB/6321ESB PCI Express Downstream Port E1 (rev 01)

07:01.0 PCI bridge: Intel Corporation 6311ESB/6321ESB PCI Express Downstream Port E2 (rev 01)

08:00.0 PCI bridge: Broadcom EPB PCI-Express to PCI-X Bridge (rev c3)

09:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet (rev 12)

0b:02.0 Multimedia audio controller: Creative Labs SB Audigy (rev 03)

0b:02.1 Input device controller: Creative Labs SB Audigy Game Port (rev 03)

0b:02.2 FireWire (IEEE 1394): Creative Labs SB Audigy FireWire Port

10:0d.0 VGA compatible controller: ATI Technologies Inc ES1000 (rev 02)我怎样才能找到:

哪个设备驱动程序(内核模块)控制每个设备?

哪个设备由在内核中编译的设备驱动程序控制(而不是作为模块)

哪个设备没有设备驱动程序(已编译或作为模块)?

这个脚本(改编自“Linux Kernel in a Nutshell”中的另一篇)部分解决了#1:

#!/bin/bash

for i in $(find /sys/ -name modalias); do

echo "----------------------------------"

modalias=$(cat $i)

echo "$(dirname $i) --> $modalias"

/sbin/modprobe --config /dev/null --show-depends $(cat $i) 2>&1

done但是它有一些问题:

我不知道自动转换方式

/sys/devices/pci0000:00/0000:00:1e.0/0000:10:0d.0 --> pci:v00001002d0000515Esv00001028sd000001B1bc03sc00i00

10:0d.0 VGA compatible controller: ATI Technologies Inc ES1000 (rev 02) LI>

在某些情况下,设备在MB内部,我甚至不知道找到设备真实名称的方法。例如:

/sys/devices/platform/dcdbas --> platform:dcdbas

/sys/devices/platform/iTCO_wdt --> platform:iTCO_wdt

/sys/devices/LNXSYSTM:00 --> acpi:LNXSYSTM:

/sys/devices/LNXSYSTM:00/device:00/PNP0C33:00 --> acpi:PNP0C33:PNP0C01:

/sys/devices/LNXSYSTM:00/device:00/PNP0A08:00 --> acpi:PNP0A08:PNP0A03:

/sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0d/PNP0200:00 --> acpi:PNP0200:和其他许多人。

当设备驱动程序编译进(或不存在)时,响应是FATAL: Module _XXXX_ not found.指示设备没有模块。

在某些情况下,驱动程序被编译(例如)

/sys/devices/platform/serial8250 --> platform:serial8250

FATAL: Module platform:serial8250 not found.

/sys/devices/platform/i8042 --> platform:i8042

FATAL: Module platform:i8042 not found.在其他情况下,驾驶员不存在。但我不知道一个办法来说明差异。

有人知道吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值