当前位置:首页 > 行业动态 > 正文

如何利用‘lspci’命令来查看Linux系统中的PCI设备信息?

“lspci” 是一个用于列出所有PCI设备的命令,常用于Linux系统中以获取硬件信息。

lspci命令详解

lspci是Linux系统中一个强大的命令行工具,用于显示系统中所有PCI总线设备的信息,PCI(Peripheral Component Interconnect)是一种常见的计算机总线标准,用于连接各种外部设备(如网卡、显卡、声卡等)到计算机主板上,通过运行lspci命令,可以查看系统中安装的PCI设备的详细信息,包括设备的厂商信息、设备ID、驱动程序信息等,这对于硬件识别、故障排除以及系统优化都非常有用。

如何利用‘lspci’命令来查看Linux系统中的PCI设备信息?  第1张

lspci的基本用法

lspci的基本语法如下:

lspci [选项]

在没有指定任何选项的情况下,lspci会显示一个简单的设备列表,要获得更详细的信息或特定类型的输出,需要使用不同的选项。

常用选项及说明

1、基础显示模式

m:以向后兼容并且机器可读的方式转储设备信息。

mm:以机器可读的方式转储设备信息,以便脚本解析。

t:以树形结构显示pci设备的层次关系,包含所有总线、桥梁、设备和它们之间的连接。

2、显示选项

n:显示pci设备的厂商和设备代码。

v:显示所有设备的详细信息。

vv:以更加详细的方式显示设备信息。

k:显示处理每个设备的内核驱动程序以及能够处理该设备的内核模块,默认情况下,当v以正常的输出模式打开时。

x:显示配置空间标准部分的十六进制转储(CardBus桥的前64字节或128字节)。

xxx:显示整个PCI配置空间的十六进制转储,当您试图读取配置空间的某些部分时,只有当几个PCI设备崩溃时,它才可用,而且只适合root用户,这种行为可能没有违反PCI标准,但至少非常愚蠢,这样的设备很少见,所以您不必太担心。

xxxx:显示扩展(4096字节)PCI配置空间在PCIX2.0和PCI Express总线上可用的十六进制转储。

b:以总线为中心的视图,显示由pci总线上的卡看到的所有irq编号和地址,注意,不是有内核看到的。

D:始终显示PCI域号,默认情况下,lspci在只有域0的机器上略过它们。

3、解析ID为名称的选项

n:将PCI供应商和设备代码显示为编号,而不是在PCI ID列表中查找它们。

nn:显示pci供应商和设备的代码和名字。

q:如果在本地pci.id文件中找不到设备,则使用DNS查询中央PCI ID数据库,如果DNS查询成功,结果将缓存在~/.pciidscache中,即使q不再给出,也会在后续运行中识别,请在自动脚本中使用此开关时要小心,以避免数据库服务器超载。

qq:和“q”一样,但是本地缓存被重置。

Q:查询中央数据库,即使是本地也有缓存数据可查,如果您怀疑显示的条目是错误的,请使用此方法。

4、选择设备的选项

s [域]:[总线]:[插槽].[功能]:只显示指定域中的设备(如果您的计算机有几个主机桥接器,它们可以共享公共总线编号空间,或者每个设备可以自己寻址PCI域;域编号为0到ffff)、总线编号(0到ff)、插槽编号(0至1f)、功能编号(0至7),地址可以省略或设置为“*”,这两者都意味着“任何值”,所有数字都是十六进制的。“0:”表示总线0上的所有设备,“0”表示设备0在任何总线上的所有功能,“0.3”在所有总线上选择设备0的第三功能,“4”仅显示每个设备的第四个功能。

d [厂商:设备]:显示指定厂商和设备的信息,厂商号和设备号都是十六进制。

5、其他选项

i:指定pci设备编号文件,默认文件是/usr/share/hwdata/pci.ids。

p:使用指定文件作为PCI ID的映射文件,默认使用/lib/Module/kernel_version/Modes.pcimap。

M:调用总线映射模式,它对所有pci设备,包括配置错误的桥后面的设备进行彻底扫描,此选项只在直接硬件访问模式下提供有意义的结果,通常需要根权限,总线映射程序只扫描pci域0。

A:库支持多种方法来访问PCI硬件,默认情况下,它使用第一个可用的访问方法,但您可以使用此选项覆盖此决定,你可以使用A help来先看可用的方法。

O =:库的行为由多个命名参数控制,此选项允许设置任何参数的值,使用Ohelp获取已知参数及其默认值的列表。

H1:通过Intel配置机制1直接访问硬件。

H2:通过Intel配置机制2直接访问硬件。

F:与其访问真正的硬件,不如从先前运行的lspci x生成的给定文件中读取设备及其配置寄存器的值列表,这对于分析用户提供的错误报告非常有用,因为您可以任何方式显示硬件配置,而不需要使用更多转储请求来干扰用户。

G:提高库的调试级别。

示例用法

1、以机器可读的方式显示

   lspci m

输出示例:

   00:00.0 "Host bridge" "Intel Corporation" "440FX  82441FX PMC [Natoma]" r02 "" ""
   00:01.0 "ISA bridge" "Intel Corporation" "82371SB PIIX3 ISA [Natoma/Triton II]" "" ""
   00:01.1 "IDE interface" "Intel Corporation" "" ""

2、以树形结构显示设备层次关系

   lspci t

输出示例:

   [0000:00]+00.0
           +01.0[01]+00.0
           |            
0