「lspci」に代わるものはありますか?

「lspci」に代わるものはありますか?

lspcipetalinuxでは実装されていません。それでは代替案がありますか?lspci出力ファイルを読むことができますか?

答え1

文書が/proc/bus/pci/devices役に立つかもしれません:

$ cut -f1,2,18 /proc/bus/pci/devices 
0000    808627a0
0008    808627a1        pcieport
00d8    808627d8        snd_hda_intel
00e0    808627d0        pcieport
00e1    808627d2        pcieport
00e2    808627d4        pcieport
00e3    808627d6        pcieport
00e8    808627c8        uhci_hcd
00e9    808627c9        uhci_hcd
00ea    808627ca        uhci_hcd
00eb    808627cb        uhci_hcd
00ef    808627cc        ehci_hcd
00f0    80862448
00f8    808627b9
00f9    808627df        ata_piix
00fa    808627c5        ahci
00fb    808627da        i801_smbus
0100    10027149        radeon
0200    8086109a        e1000e
0300    80864227        iwl3945
1500    104cac56        yenta_cardbus

フォルダには/sys/bus/pci/devices詳細が含まれていますが、より広範囲です。

答え2

sysfsファイルシステムから同様の情報を取得できます(たとえば、/sys/device/pci0000:00下にシンボリックリンクもあります)/sys/class/pci_buslspcilspciを使用してシステムでこれを確認し、慣れることができる出力対応についていくつかの手がかりを提供するので、まずこれについて説明します。

以下は編集されたlscpi出力です。

00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller (rev 09)
00:19.0 Ethernet controller: Intel Corporation 82579V Gigabit Network Connection (rev 04)
00:1c.0 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 1 (rev c4)
00:1c.3 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 4 (rev c4)
00:1c.4 PCI bridge: Intel Corporation 82801 PCI Bridge (rev c4)
00:1c.6 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 7 (rev c4)
00:1c.7 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 8 (rev c4)
03:00.0 SATA controller: ASMedia Technology Inc. ASM1062 Serial ATA Controller (rev 01)
04:00.0 PCI bridge: ASMedia Technology Inc. ASM1083/1085 PCIe to PCI Bridge (rev 03)
06:00.0 Network controller: Qualcomm Atheros AR9485 Wireless Network Adapter (rev 01)
07:00.0 USB controller: ASMedia Technology Inc. ASM1042 SuperSpeed USB Host Controller

通知は00:1c.0.3、.4、.6、.7、03:00.0、04:00.0、06:00.0、07:00.0です.これは当てはまります。後者は前者に接続された装置である。/sys/class/pci_busノードへのシンボリックリンクは/sys/devices/pci0000:00次のとおりです。

0000:03 -> 0000:00:1c.3
0000:04 -> 0000:00:1c.4
0000:06 -> 0000:00:1c.6
0000:07 -> 0000:00:1c.7

コンテンツに関する情報だけを望む場合、これについてあまり考える必要はありませんが、これらの対応が出力lspciに関連する可能性が高いため、言及します。

これらのノード(ディレクトリ)内には、subsystem_deviceテキスト形式の16ビット(4桁)16進コードを含むファイルがあります0x84casubsystem_vendorにも同様の16進コードがありますが、device後者は私たちには役に立ちません(注:いいえシステムの内部ラベルであるデバイスによって提供されるデバイスID)電子は十分に具体的ではありません(しかし、まだ役に立つかもしれません。以下を参照)。

これらのコードのリストは増え続けているので、見つけるのに良い場所は次のとおりです。オンラインデータベース。例からすべてのリストを取得するには:

> find /sys/devices/pci0000:00 -name subsystem_device -exec cat '{}' \;
0x84ca
0x84ca
0x84ca
0x84ca
0x84ca
0x849c
0x84ca
0x84fb
0x84ca
0x84b7
0x84ca
0x1080
0x84ca
0x850d
0x84ca
0x8488
0x84ca
0x84ca
0x84ca
0x84ca
0x84ca

find.0x084caは数回繰り返されます。データベースで「デバイス検索」を検索したところ、これがIntelの「450NX PCIsetメモリおよびI/Oコントローラ」であることがわかりました。このように繰り返される理由は、その中に他のものが挿入されているからです。

これらすべてを扱うことなくショートカットを使用して、私のWi-Fiコントローラが何であるかを見てみましょう。 /sys/class/net3つのシンボリックリンクを一覧表示します。

em1
lo
wlp6so

ifconfig出力などに使用されるタグ名に対応します。wlp6soリンクをたどってもpci0000:00/0000:00:1c.6/0000:06:00.0/net/wlp6s0デバイスを識別するのに役立ちません。subsystem_deviceツリーには2つのルートノードがあります。pci0000:00/0000:00:1c.61つ目は0x84ca(やはりコントローラ)、もう1つはです0000:06:00.00x850d

ここでは、データベースに欠落している項目があるという事実に遭遇します。追加する情報を送信できるフォームがありますが、もちろん今は役に立ちません。

「pci 0x850d」のオンライン検索が表示されます。Linuxカーネルソースコードへの参照1はカーネルがこれらのコードを使用して適切なドライバをロードするためです。これは私たちに何かを伝えます(表面的にはASUSTEKのWi-Fiチップです)。これはsubsystem_vendor、同じディレクトリにあるノードを見ると、別の方法で推論できます(データベースで「ベンダー検索」を実行すると、Asustekがオンラインになることがわかります)。 :) 0x1043) これがWi-Fiインターフェースを意味することを考えてみましょう。2 OEM(Original Equipment Manufacturer)がAtherosという手がかりもあります。これは、実際にはlscpi06:00ネットワークコントローラ:Qualcomm Atheros AR9485ワイヤレスネットワークアダプタ(Revision 01)」と記載されているath9kドライバのソースコードであるためです。

ソースコードを見ずにlspci文字列を取得するためにデバイスに直接問い合わせるとします。カーネルは固有のデバイスIDを使用してドライバをロードし、その情報が役に立たないため、これを行わないことがあります。


1. この結果に基づいて調べるより良い場所は、grep -Rカーネルソースツリーのディレクトリを使用することです。drivers/見つからなければどうせドライバーもいないのです。

2. もちろん、ドライバがロードされておらず、インターフェイスが閉じられていればそれほど明確ではありませんが、IDはまだ残ります。/sys/devices/...

関連情報