デスクトップまたはサーバーでLinuxを実行している場合、そのシステムのハードウェアを識別する必要がある場合があります。これに使用されるコマンドの1つは、lspci
です。 。 PCIバスに接続されているすべてのデバイスを表示することで機能します。これはpciutilsパッケージによって提供され、さまざまなLinuxおよびBSDベースのオペレーティングシステムで利用できます。
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
基本的な使用法
通常のユーザーがlspci
を実行したときに表示される情報 アクセス許可により制限される場合があります。 sudo
を使用してコマンドを実行する 全体像を提供します。
lspci
を実行しています それ自体で、PCIバスとそれに接続されているデバイスを一覧表示します。これが私のメディアセンターPCからの例です。これはAMDPhenomCPUベースのシステムであるため、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のWebサイトには、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
上記のコマンドは、メディアセンターPCに1つの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を示します。出力は、NvidiaCorporationによって製造されたデバイスのベンダー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オーディオデバイスがあることがわかります。これらは両方とも実際には同じNvidiaGeForce 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
2つの追加行が表示されます:使用中のカーネルドライバ およびカーネルモジュール 。 2つ目は、デバイスをサポートするために使用できるモジュールを示しています。
最新の状態に保つ
新しいデバイスとベンダーが絶えず市場に参入しています。 不明としてリストされているデバイスが表示された場合 、PCIデバイスIDデータベースが古くなっている可能性があります。確認する方法は2つあります。 -Q
オプションはDNSを使用して中央データベースにクエリを実行します。もちろん、これにはネットワーク接続が必要です。
$ sudo lspci -Q
コマンドupdate-pciids
を実行して、ローカルPCIIDデータベースを更新することもできます。 。
$ sudo update-pciids
Downloaded daily snapshot dated 2021-08-22 03:15:01
ハードウェアの詳細
もちろん、lspci
は、システム上のハードウェアとソフトウェアのクエリに役立つLinuxで使用可能な多くのコマンドの1つにすぎません。 Linux上のハードウェアの詳細については、USBデバイスに関する私の記事を参照してください:このUSBIDリポジトリを使用してLinux上のより多くのデバイスを認識してください。