游乐游手机版
首页/系统平台/文章详情

Linux下lspci命令查看PCI设备信息详解

时间:2026-06-08 07:33
许多用户在通过lspci命令查看显卡或网卡时,常会遇到一个现象:如果不加sudo直接运行,输出的设备信息会不完整,厂商名称、驱动状态等关键字段可能显示为[device]或直接空白。这背后是Linux内核的PCI权限管理机制在起作用。 简单来说,普通用户的进程默认只能访问 sys bus pci de

许多用户在通过lspci命令查看显卡或网卡时,常会遇到一个现象:如果不加sudo直接运行,输出的设备信息会不完整,厂商名称、驱动状态等关键字段可能显示为[device]或直接空白。这背后是Linux内核的PCI权限管理机制在起作用。

简单来说,普通用户的进程默认只能访问/sys/bus/pci/devices目录下的简化设备树信息。而厂商ID、设备ID、内存地址范围(BAR)、中断号(IRQ)等关键硬件配置,都保存在内核的PCI配置空间中,对这些数据的读取需要更高的权限。因此,只有通过sudo lspci命令才能获取完整的底层硬件细节。此外,一些较新的Linux发行版(例如Ubuntu 22.04及以上版本)默认禁用了旧的/proc/bus/pci接口,这可能导致即使使用了sudo,某些深度调试选项(如-x-vv)也会报错“Cannot read configuration space”。如果仅需在脚本中识别设备型号,可以使用lspci -mm命令,它以机器可读的格式输出,对权限要求相对宽松。

Linux怎么查看PCI设备信息 Linux下lspci硬件检测详解

为何普通用户运行lspci看不到显卡或网卡的完整信息?

根本原因在于权限控制。设备的厂商名、驱动状态、内存地址等关键信息,都受到内核PCI配置空间的访问限制。普通用户默认只能读取/sys/bus/pci/devices路径下的基础设备树结构,获取的是简化数据。因此,没有sudo权限时,许多字段会显示不全。

  • 只有执行 sudo lspci 才能访问完整的PCI配置空间,从而获得设备ID、BAR地址、中断号等底层信息。
  • 部分发行版(例如 Ubuntu 22.04及以上)默认禁用了/proc/bus/pci接口,此时即便使用sudo-x-vv参数也可能出现报错:Cannot read configuration space
  • 如果仅需识别设备型号,lspci -mm(机器可读格式)对权限要求较低,非常适合在脚本中调用。

lspci -vlspci -vv的实际差异是什么?

这两个选项的详细程度存在本质区别。-v(verbose)输出的信息已经足够实用,涵盖了驱动模块名、IRQ中断号、内存/IO地址范围以及PCI Capabilities等运维和调试的常用字段。而-vv(very verbose)则更进一步,它将展开PCIe的扩展能力寄存器、ACS(访问控制服务)控制位、AER(高级错误报告)配置等深度调试内容,这些信息在日常问题排查中很少用到。

  • lspci -v 可以显示 Kernel driver in use: iwlwifi 这样的关键信息,足以判断驱动是否已加载。
  • lspci -vv 可能展示 Root Port ACS Capability: Src Valid, Trans Blind, End Blind, Rcvr Redir,这类信息仅在排查PCIe设备直通(如KVM虚拟机透传GPU)时才需要关注。
  • 这两个选项都依赖内核开启CONFIG_PCI_DEBUG,部分精简内核(例如某些容器宿主机)在编译时可能未启用该选项,导致-vv的输出异常简略。

如何快速定位NVIDIA显卡对应的内核模块和设备ID?

最直接的方法是组合使用-k-nn参数。-k用于显示内核驱动信息,-nn则直接输出设备的厂商ID和设备ID,便于查阅官方文档或匹配驱动白名单。

  • 执行 sudo lspci -k -nn | grep -A 3 -i nvidia,输出中会同时显示类似 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP104 [GeForce GTX 1080] [10de:1b80] (rev a1) 以及 Kernel modules: nvidiafb, nouveau, nvidia 的行。
  • 需注意区分两个字段:Kernel driver in use: 表示当前实际工作的模块(例如nvidia),而 Kernel modules: 列出的是内核检测到的、所有可能支持该设备的模块。
  • 如果 Kernel driver in use 显示为空,则表明设备未被任何模块绑定。此时应检查nvidia.ko是否已加载(使用lsmod | grep nvidia),或者是否存在驱动冲突(例如nouveau开源驱动未被加入黑名单)。

使用lspci -s指定槽位时容易出错的地址格式

使用lspci -s按地址筛选设备时,经常遇到的陷阱是地址格式。PCI地址遵循domain:bus:slot.function的格式,但很多人容易忽略slot(插槽)和function(功能)的十六进制解析规则——它们并非简单的十进制数字,而是根据PCI规范定义的5位slot加3位function编码。

  • 例如,地址 0000:01:00.0 中,0000是domain,01是十六进制bus号,00是十六进制slot号,.0是function号。如果只写lspci -s 01:00.0,在存在多个根复合体(root complex)的系统中(例如某些服务器),可能会匹配到错误的PCI总线。
  • 稳妥的写法是带上domain部分:使用 lspci -s 0000:01:00.0。这样可以避免在双路服务器或使用了PCIe交换芯片的环境中发生误匹配。
  • 此外,function号不一定是.0。有些多功能设备(如某些NVMe SSD)可能拥有多个function(例如.0, .1)。如果漏掉.0后缀,命令可能静默失败(无任何输出)。

最后,有一个非常重要的细节经常被忽视:lspci的输出并非实时刷新。它读取的是内核在启动时枚举的PCI设备快照。这意味着,如果你热插拔了一个设备(例如通过Thunderbolt接口外接了一块GPU),直接运行lspci是看不到新设备的。你需要先通知内核重新扫描PCI总线:echo 1 > /sys/bus/pci/rescan,然后再执行lspci,新设备才会出现在列表中。

来源:https://www.php.cn/faq/2388523.html
上一篇Ubuntu安装MySQL 5.7低版本教程 下一篇Win10麦克风回声消除设置位置
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
SysMain磁盘占用高解决方法
系统平台 · 2026-06-09

SysMain磁盘占用高解决方法

近期,不少Win10用户反馈电脑突然变得卡顿,打开任务管理器后发现CPU或磁盘占用率居高不下,而占用资源的主要进程常指向一个名为“SysMain”的服务。这究竟是什么服务?如何有效解决它带来的系统资源占用问题?本文将从根源到解决方案,为你详细解析。 SysMain磁盘占用率高解决方法 实际上,Sys

Win10拖拽文件崩溃的解决方法
系统平台 · 2026-06-09

Win10拖拽文件崩溃的解决方法

当Windows 10系统在拖拽文件时突然卡死或崩溃,确实让人十分困扰。不过别着急,这类问题通常有迹可循,借助系统自带的排查工具就能找出“元凶”。下面这个排查路径,将帮助你精准定位导致故障的文件或程序。 Win10拖拽文件卡死崩溃的解决方法 解决问题的第一步,是打开系统的“控制面板”。你可以通过在任

Win10更新关闭后仍自动开启的解决方法和步骤
系统平台 · 2026-06-09

Win10更新关闭后仍自动开启的解决方法和步骤

Windows 10系统更新究竟该关闭还是开启?这无疑是许多用户心中的困扰。一方面,系统更新能及时提供安全补丁与新功能;另一方面,偶尔出现的新Bug或更新失败,也让人十分头疼。近期,甚至有用户反映更新服务被莫名禁用,导致无法正常更新。如果你也面临类似烦恼,别担心,以下两种方法能帮你彻底掌控Windo

Win10右键多余菜单项删除教程
系统平台 · 2026-06-09

Win10右键多余菜单项删除教程

Windows 10 的鼠标右键菜单过于冗长,里面充斥着大量用不上的选项?这确实是许多用户在日常操作中常遇到的困扰。臃肿的菜单不仅影响美观,更会拖慢你的操作效率。别担心,清除这些冗余条目并不复杂,下面介绍两种主流方法,你可以根据自己的偏好选择适合的方式。 方法一:借助安全软件工具(以360为例) 对

Win10电脑登录界面电源按钮消失快速解决方法
系统平台 · 2026-06-09

Win10电脑登录界面电源按钮消失快速解决方法

在使用Windows 10时,如果发现登录界面缺少电源按钮,只能通过物理按键强制关机,这确实会带来不小的困扰。别着急,这通常并非系统故障,而是一个容易被忽略的系统设置项。今天,我们就来彻底解决这个问题,让你在登录界面也能优雅地完成关机或重启操作。 核心原理其实非常简单:系统内部有一项策略,专门控制是