lspciでPCIバスデバイスの情報を確認する
若干追加、修正しました。
lspciは、PCIバスに接続されているデバイスの情報をリストにして出力するコマンド。
これが、ちょっと掘り下げてみたら結構「深い」ことが分かったので、例によって記録。
lspciの表示結果例は以下のようになる。
# lspci
00:00.0 Host bridge: Intel Corp. 5000P Chipset Memory Controller Hub (rev b1)
00:02.0 PCI bridge: Intel Corp. 5000 Seres Chipset PCI Express x4 Port 2(rev b1)
00:03.0 PCI bridge: Intel Corp. 5000 Seres Chipset PCI Express x4 Port 3(rev b1)
:
:
00:15.0 Host bridge: Intel Corp. 5000 Seres Chipset FBD Registers (rev b1)
00:16.0 Host bridge: Intel Corp. 5000 Seres Chipset FBD Registers (rev b1)
:
:
02:00.0 PCI bridge: Broadcom: Unknown device 0103(rev c3)
:
:
13:00.0 Ethernet controller: Intel Corp. 82571EB Gigabit Ethernet Controller (rev 06)
13:00.1 Ethernet controller: Intel Corp. 82571EB Gigabit Ethernet Controller (rev 06)
:
表示内容は先頭から順に、以下の内容となる(・・・でいいと思うが)。
PCI識別番号(PCI機器に割り当てられている識別番号)
クラス名(デバイスの種類)
ベンダー名
デバイス名(ICチップの型番)
ちなみに先頭の値、”00:15.0″等のPCI識別番号は、左から順に
バス番号、デバイス番号、ファンクション番号
という区分になっている。
(「バス、スロット、機能」と表現する場合もあるみたいだ)
こちらを参照させてもらったところ、これらのlspciの表示は/proc/bus/pci/配下のカーネルがハードウェアから得た情報を元に、/usr/share/hwdata/pci.ids(ハードウェア情報のDB)と照合し、マッチしたものを整形して出力したもの、なのだそうだ。
/proc/bus/pci/配下、/proc/bus/pci/devices(PCIデバイスの設定レジスタ)の中身を見て
みると、意味不明な数値の羅列にしか見えないのだが当然ちゃんと意味があって、ここには
クラスIDやデバイスID、ベンダーIDの情報が記述されている。
2カラム目の前半がベンダーIDで後半がデバイスID、だそうだ。
# cat /proc/bus/pci/devices
:
0050 80861229 …. …. …. ←8086がベンダーID、1229がデバイスID
:
これを元にpci.idsを確認すると、デバイスIDとベンダーIDに対応した内容が格納されて
いるのが分かる・・・らしい。
自分は段々、何がなんだか分からなくなってきたけれど。
でもせっかくなので、このpci.idsの見方のポイントを書いておこう。
以下の書式に沿って情報が格納されている模様。
# Syntax:
# vendor vendor_name
device device_name <- - single tab
subvendor subdevice subsystem_name <- - two tabs
“vendor”はベンダーID、”device”はデバイスIDに相当すると思われる。
また、表示されるのはほとんど”single tab”の行だけみたいだ。
ちなみにpci.idsファイルに登録がないIDの場合はデバイス名がUnknownと表示されるらしい。
・・・はぁ〜、こういう仕組みになっているのですね。
コマンドのオプションを少々説明すると、例によって-vは詳細情報を出力する。
便利な使い方が、-sオプションで名デバイスを指定すればそのデバイスの詳細のみを確認
できること。
# lspci -s 00:11.0 -v
また、「-d ベンダーID:デバイスID -v」で、指定したベンダーIDとデバイスIDを持つ
デバイスのみ詳細表示する。以下のように、ベンダーIDのみの指定も可。
# lspci -d 8086: -v
ちなみに-bオプションは「バスから見た表示をする」とのことだけど、出力結果の何が
違うのか分からなかった・・・
今回、こちらの記事表示結果から読み解け! ハードウェア構成の調査も参考にさせてもらった。
あと蛇足ながら、ハードウェアの情報を取得するためのlshwというツールがあることを
発見したので、メモ。
lshw入手先
うぅーむ、lspci、深いですw
関連記事
LinuxでCPUの搭載数を調べる
dmidecodeでハードウェアの情報を取得する
scsi_infoでSCSIデバイスの情報を確認する
Linuxにおけるudev、hald、lsusbなど
Linux記事一覧はこちらをどうぞ
↓ ↓ ↓
Linux-index