Linux中國

在 Linux 上使用 lspci 命令查看硬體情況

當你在個人電腦或伺服器上運行 Linux 時,有時需要識別該系統中的硬體lspci 命令用於顯示連接到 PCI 匯流排的所有設備,從而滿足上述需求。該命令由 pciutils 包提供,可用於各種基於 Linux 和 BSD 的操作系統。

基礎用法

由於訪問許可權,普通用戶運行 lspci 時顯示的信息可能會受限,因此可以使用 sudo 運行命令,系統會給出完整的信息圖。

直接運行 lspci 命令會列出 PCI 匯流排及其連接的設備,下圖是在我的媒體中心 PC 上的演示樣例。圖中是一個基於 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 來獲取更多的設備細節。在 -v 級別,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)

下面(LCTT 譯註:原文為 「above」,應為作者筆誤)的 grep 命令在我的媒體中心 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 號。在我的媒體中心 PC 上,此選項會給出我的 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 的所有設備。以下是我系統中的所有 Nvidia 設備(保留 -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

可以看到額外顯示了兩行: 正在使用的內核驅動程序 Kernel driver in use 內核模塊 Kernel modules ,其中後者列出了可用於支持該設備的模塊。

同步最新狀態

新設備和供應商總是在不斷迭代。如果看到顯示為 unknown 的設備,說明你的 PCI 設備 ID 資料庫可能已過時。有兩種方法可以檢查更新。-Q 選項會使用 DNS 查詢中央資料庫,當然,這需要聯網。

$ sudo lspci -Q

你還可以通過運行命令 update-pciids 來更新本地 PCI ID 資料庫。

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

了解有關你的硬體的更多信息

當然,lspci 只是 Linux 中用於查詢系統硬體和軟體的諸多命令之一。讀者可以在閱讀關於 USB 設備的文章,了解有關 Linux 硬體的更多信息:使用此 USB ID 存儲庫識別 Linux 上的更多設備

via: https://opensource.com/article/21/9/lspci-linux-hardware

作者:Alan Formy-Duval 選題:lujun9972 譯者:unigeorge 校對:turbokernel

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國