暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux中使用lspci查看硬件信息

TIAP 2021-09-08
2062

在桌面或服务器上运行Linux时,有时需要识别该系统中的硬件。用于此的一个命令是lspci。它通过显示连接到PCI总线的所有设备来工作。它由pciutils软件包提供,可用于多种基于Linux和BSD的操作系统。


基本用法

常规用户运行lspci时显示的信息可能由于访问权限而受到限制。使用sudo运行命令可以提供完整的信息。

单独运行lspci会列出PCI总线及其连接的设备。以下是一个例子,它是一个基于AMD Phenom CPU的系统,所以它有一个AMD芯片组。它还有一个Atheros无线控制器和一个Nvidia图形卡。列出了所有硬件设备的详细信息,如供应商、名称和型号:

    $ sudo lspci
    00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] RS880 Host Bridge
    00:02.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] RS780 PCI to PCI bridge (ext gfx port 0)
    00:04.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 0)
    00:05.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 1)
    00:11.0 SATA controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode]
    00:12.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
    00:12.1 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller
    00:12.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller
    00:13.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
    00:13.1 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller
    00:13.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller
    00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 SMBus Controller (rev 3c)
    00:14.1 IDE interface: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 IDE Controller
    00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 LPC host controller
    00:14.4 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 PCI to PCI Bridge
    00:14.5 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI2 Controller
    00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor HyperTransport Configuration
    00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Address Map
    00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor DRAM Controller
    00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Miscellaneous Control
    00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Link Control
    01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)
    01:00.1 Audio device: NVIDIA Corporation GK107 HDMI Audio Controller (rev a1)
    02:00.0 Network controller: Qualcomm Atheros AR9287 Wireless Network Adapter (PCI-Express) (rev 01)


    详细输出

    添加-v选项会增加每个设备的详细程度。你可以使用-vv或-vvv来获取更多的设备细节。在此级别,lspci显示各种子系统和内存地址、中断请求(IRQ)号以及所有设备的其他功能。输出非常长。大家可以在自己的系统上试一试。


    用grep搜索

    有时你想缩小搜索范围。例如,RPM Fusion网站提供了安装Nvidia图形驱动程序的说明。它们从使用grep命令识别图形卡开始。这是我在笔记本电脑上看到的:

      $ sudo lspci | grep -e VGA
      00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)
      $ sudo lspci | grep -e 3D
      01:00.0 3D controller: NVIDIA Corporation GM108M [GeForce MX130] (rev a2)


      上面的grep命令显示media center PC上的一个VGA设备,但没有显示3D设备。

        $ sudo lspci | grep -e VGA
        01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)
        $ sudo lspci | grep -e 3D
        $


        按供应商ID搜索

        还有一种方法不需要grep。假设我想确定是否存在任何其他Nvidia设备。有必要多了解一点。我使用-nn选项显示供应商和设备ID号。此选项显示我的VGA卡、供应商ID和设备ID:

          $ sudo lspci -nn | grep -e VGA
          01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1)


          设备名称后带有冒号分隔数字的括号集显示供应商和设备ID。输出表明英伟达(Nvidia Corporation)生产的设备的供应商ID为10de。

          -d选项显示来自指定供应商、设备或类ID的所有设备。这里是我系统中所有英伟达设备(带着-nn选项包括供应商ID):

            $ sudo lspci -nn -d 10de:
            01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1)
            01:00.1 Audio device [0403]: NVIDIA Corporation GK107 HDMI Audio Controller [10de:0e1b] (rev a1)


            从输出中可以看到,除了一个图形卡,还有一个Nvidia音频设备。它们实际上都是同一个Nvidia GeForce GTX 650卡的一部分,但这是一个很好的例子。


            内核模块

            与PCI硬件设备一起,lspci可以显示使用-k选项加载的内核驱动程序模块。将此选项添加到lspci命令中,以查看有关Nvidia设备的多条信息。

              $ sudo lspci -nn -k -d 10de:
              01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1)
              Subsystem: eVga.com. Corp. GK107 [GeForce GTX 650] [3842:2650]
              Kernel driver in use: nvidia
              Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia
              01:00.1 Audio device [0403]: NVIDIA Corporation GK107 HDMI Audio Controller [10de:0e1b] (rev a1)
              Subsystem: eVga.com. Corp. GK107 HDMI Audio Controller [3842:2650]
              Kernel driver in use: snd_hda_intel
              Kernel modules: snd_hda_intel


              显示另外两行:正在使用的内核驱动程序和内核模块。第二个列表列出了支持该设备的可用模块。


              新设备和供应商不断进入市场。如果你看到一个设备被列为未知,你的PCI设备ID数据库可能已过时。有两种检查方法。-Q选项使用DNS查询中央数据库。当然,这需要网络连接。

                $ sudo lspci -Q


                还可以通过运行update-pciids命令来更新本地PCI ID数据库。

                  $ sudo update-pciids
                  Downloaded daily snapshot dated 2021-08-22 03:15:01



                  文章转载自TIAP,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                  评论