Neben den höheren Datenraten unterstützt PCI auch die Hardwareerkennung. Jedes PCI-Gerät enthält einen Code, der seinen Typ, seinen Hersteller und sein Modell angibt. Diese Informationen können über den Befehl lspci abgefragt werden.
lspci [OPTIONEN]
Die Informationen über die PCI-Busse liefert der Kernel über das virtuelle Verzeichnis /proc/bus/pci. Die Schnittstelle existiert seit Kernelversion 2.1.82. Das Verzeichnis enthält für jeden Bus ein Unterverzeichnis mit Informationsdateien für die Geräte und eine Datei /proc/bus/pci/device, die eine Liste aller PCI-Geräte enthält.
enterprise:~ # lspci 00:00.0 Host bridge: VIA Technologies, Inc. VT82C693A/694x [Apollo PRO133x] (rev 02) 00:01.0 PCI bridge: VIA Technologies, Inc. VT82C598/694x [Apollo MVP3/Pro133x AGP] 00:04.0 ISA bridge: VIA Technologies, Inc. VT82C686 [Apollo Super South] (rev 22) 00:04.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE (rev 10) 00:04.2 USB Controller: VIA Technologies, Inc. USB (rev 10) 00:04.3 USB Controller: VIA Technologies, Inc. USB (rev 10) 00:04.4 Host bridge: VIA Technologies, Inc. VT82C686 [Apollo Super ACPI] (rev 30) 00:04.5 Multimedia audio controller: VIA Technologies, Inc. VT82C686 AC97 Audio Controller (rev 20) 00:0a.0 Ethernet controller: Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 08) 01:00.0 VGA compatible controller: nVidia Corporation NV5M64 [RIVA TNT2 Model 64/Model 64 Pro] (rev 15)
Am Anfang jeder Zeile ist die PCI-ID angegeben, die die Position des jeweiligen Geräts auf dem PCI-Bus wiedergibt. Hersteller, Typ und Modell der Karte werden in Form von ID-Nummer abgespeichert. Eine Tabelle dieser Nummern und ihrer Zuordnung zu Herstellern, Typen und Modellen befindet sich in der Datei /usr/share/pci.ids.
Optionen | |
-b | Darstellung der IRQ und Adressen aus Sicht des PCI-Bus |
-d [HID]:[GID] | Zeigt nur die Geräte mit angegeben Hersteller- und Geräte-ID. |
-i DATEI | Benutzt eine andere Datei als PCI-ID-Datenbank. |
-m | Ausgabe im maschinenlesbaren Format |
-n | Zeigt nur die Hersteller- und Geräte-Codes an |
-p DIR | Benutzt ein anderes Verzeichnis für die PCI-Bus-Informationen |
-s [B:][S][.F] | Zeigt nur die Geräte mit den spezifizierten Bus, Slot und Funktion. Alle Nummern sind hexadezimal. |
-t | Darstellung in Baumform |
-v | Ausführlichere Informationen |
-vv | Sehr ausführliche Informationen |
-x | Hexadezimaler Dump der 64 Bytes des PCI-Konfigurationsspeichers |
Um ausführlichere Informationen zu bekommen, können Sie den Schalter -v verwenden.
enterprise:~ # lspci -v 00:00.0 Host bridge: VIA Technologies, Inc. VT82C693A/694x [Apollo PRO133x] (rev 02) Subsystem: Asustek Computer, Inc.: Unknown device 8023 Flags: bus master, medium devsel, latency 0 Memory at e4000000 (32-bit, prefetchable) [size=64M] Capabilities: [a0] AGP version 2.0 00:01.0 PCI bridge: VIA Technologies, Inc. VT82C598/694x [Apollo MVP3/Pro133x AGP] (prog-if 00 [Normal decode]) ...Ähnliche Informationen erhalten Sie ebenfalls über eine Schnittstelle aus dem Verzeichnis /proc. Die virtuelle Datei /proc/pci zeigt Ihnen ebenfalls Informationen aus dem PCI-Bus. Diese sind im Gegensatz zu /proc/bus/pci/devices für Menschen lesbar gestaltet.
Für eine bessere Übersicht der PCI-Busse können Sie sich mit dem Schalter -t eine baumartige Struktur der Verbindung anzeigen lassen.
enterprise:~ # lspci -t -[00]-+-00.0 +-01.0-[01]----00.0 +-04.0 +-04.1 +-04.2 +-04.3 +-04.4 +-04.5 \-0a.0
Das obige Beispiel ist etwas langweilig. Allein vom AGP-Port zweigt ein PCI-Bus ab. Dies ist natürlich die Grafikkarte.
Um die Informationen zu sehen, die die PCI-Geräte zurückgeben ohne die Übersetzung aus der PCI-Geräte-Datenbank zu benutzen, können Sie den Schalter -n verwenden.
enterprise:~ # lspci -n 00:00.0 Class 0600: 1106:0691 (rev 02) 00:01.0 Class 0604: 1106:8598 00:04.0 Class 0601: 1106:0686 (rev 22) 00:04.1 Class 0101: 1106:0571 (rev 10) 00:04.2 Class 0c03: 1106:3038 (rev 10) 00:04.3 Class 0c03: 1106:3038 (rev 10) 00:04.4 Class 0600: 1106:3057 (rev 30) 00:04.5 Class 0401: 1106:3058 (rev 20) 00:0a.0 Class 0200: 8086:1229 (rev 08) 01:00.0 Class 0300: 10de:002d (rev 15)