Systemeinblicke mit Kommandozeilentools: dmidecode und lspci

·7 min·Andreas Haerter·

Hinweis: Dieser Artikel erschien vorab in in englischer Sprache im Fedora Magazin.

In unserer Serie ĂĽber Linux-Systemwerkzeuge werfen wir einen Blick auf wichtige Befehlszeilenprogramme, die Informationen ĂĽber die Hardware und den Status des Systems zur VerfĂĽgung stellen. Nach dem vorherigen Artikel ĂĽber ĂĽber lscpu und lsusb wenden wir uns nun dmidecode und lspci zu.

dmidecode – Dekodieren der DMI-Tabelle des Systems

dmidecode ist ein Befehlszeilenprogramm zum Abrufen detaillierter Informationen über die System-Hardware. Es liest dafür die DMI (Desktop Management Interface)-Tabelle aus, welche Daten enthält, die von der Firmware des Systems bereitgestellt werden. Dies umfasst Details zum BIOS, Prozessor, Speicher und anderen Hardware-Komponenten des Systems. Mit dmidecode kann man Einblicke in die Hardware-Ausstattung gewinnen, ohne vor Ort zu sein oder das Systemgehäuse öffnen zu müssen. Das Programm wird in Red Hat-Umgebungen wie Fedora Linux vom util-linux-Paket bereitgestellt.

Grundlegende Nutzung

FĂĽhren wir den dmidecode-Befehl aus, um einen Ăśberblick ĂĽber die DMI-Tabelle des Systems zu erhalten:

$ sudo dmidecode

Man erhält eine umfassende Liste von DMI-Tabelleneinträgen.

Um die Ausgabe auf spezifische Informationen zu beschränken, können verschiedene Optionen verwenden werden. Insbesondere die Angabe eines Typs mittel -t number ist zielführend:

$ sudo dmidecode -t number

wobei number eine Ganzzahl ist. Ein Auszug aus man dmidecode beschreibt diese weiter:

[ Weitere Ausgabe zur besseren Lesbarkeit ausgelassen ]
The SMBIOS specification defines the following DMI types:
Type   Information
────────────────────────────────────────────
  0   BIOS
  1   System
  2   Baseboard
  3   Chassis
  4   Processor
  5   Memory Controller
  6   Memory Module
  7   Cache
  8   Port Connector
  9   System Slots
  10   On Board Devices
  11   OEM Strings
  12   System Configuration Options
  13   BIOS Language
  14   Group Associations
  15   System Event Log
  16   Physical Memory Array
  17   Memory Device
  18   32-bit Memory Error
  19   Memory Array Mapped Address
  20   Memory Device Mapped Address
  21   Built-in Pointing Device
  22   Portable Battery
  23   System Reset
  24   Hardware Security
  25   System Power Controls
  26   Voltage Probe
  27   Cooling Device
  28   Temperature Probe
  29   Electrical Current Probe
  30   Out-of-band Remote Access
  31   Boot Integrity Services
  32   System Boot
  33   64-bit Memory Error
  34   Management Device
  35   Management Device Component
  36   Management Device Threshold Data
  37   Memory Channel
  38   IPMI Device
  39   Power Supply
  40   Additional Information
  41   Onboard Devices Extended Information
  42   Management Controller Host Interface

Additionally, type 126 is used for disabled entries and type 127 is an end-of-table marker. Types 128 to 255 are for OEM-specific data.  dmidecode will display these entries by default, but it can only decode them when the vendors have contributed documentation or code for them.
[ Weitere Ausgabe zur besseren Lesbarkeit ausgelassen ]

Beispiel 1: Abrufen von BIOS-Informationen

Um Details ĂĽber das BIOS abzurufen kann man die die Option -t verwenden, gefolgt von der Typnummer fĂĽr BIOS-Informationen (Typ 0):

$ sudo dmidecode -t 0

Der Befehl gibt in der Regel Information über die BIOS-Version, das Veröffentlichungsdatum und den Anbieter aus. Beispielausgabe (hier von einem ThinkPad T480S):

$ sudo dmidecode -t 0
# dmidecode 3.6
Getting SMBIOS data from sysfs.
SMBIOS 3.0.0 present.

Handle 0x000B, DMI type 0, 24 bytes
BIOS Information
    Vendor: LENOVO
    Version: N22ET80W (1.57 )
    Release Date: 02/27/2024
    Address: 0xE0000
    Runtime Size: 128 kB
    ROM Size: 16 MB
    Characteristics:
        PCI is supported
        PNP is supported
        BIOS is upgradeable
        BIOS shadowing is allowed
        Boot from CD is supported
        Selectable boot is supported
        EDD is supported
        3.5"/720 kB floppy services are supported (int 13h)
        Print screen service is supported (int 5h)
        8042 keyboard services are supported (int 9h)
        Serial services are supported (int 14h)
        Printer services are supported (int 17h)
        CGA/mono video services are supported (int 10h)
        ACPI is supported
        USB legacy is supported
        BIOS boot specification is supported
        Targeted content distribution is supported
        UEFI is supported
    BIOS Revision: 1.57
    Firmware Revision: 1.23

Beispiel 2: Abrufen von Informationen zum Motherboard (Baseboard) und Arbeitsspeicher

Für spezifische Details zum Arbeitsspeicher können die Typen 2 für das Motherboard1 und 17 für den Arbeitsspeicher abgefragt werde. Dies liefert Informationen zu den Speichermodulen des Systems, einschließlich Größe, Geschwindigkeit und Hersteller.

Diese Informationen sind besonders nützlich beim Aufrüsten der Hardware oder zur Fehlerbehebung, beispielsweise wenn man zusätzlichen, kompatiblen RAM für einen Server beschaffen muss, der von anderen Administratoren bereitgestellt wurde.

Ein reales Beispiel eines kleinen Laborservers mit vier Speichersticks:

$ sudo dmidecode -t 2,17
[ Weitere Ausgabe zur besseren Lesbarkeit ausgelassen ]
    Manufacturer: Supermicro
    Product Name: X11SPL-F
    Version: 1.02

[ Weitere Ausgabe zur besseren Lesbarkeit ausgelassen ]
Handle 0x0029, DMI type 17, 84 bytes
Memory Device
    Array Handle: 0x0025
    Error Information Handle: Not Provided
    Total Width: 72 bits
    Data Width: 64 bits
    Size: 64 GB
    Form Factor: DIMM
    Set: None
    Locator: DIMMB1
    Bank Locator: P0_Node0_Channel1_Dimm0
    Type: DDR4
    Type Detail: Synchronous Registered (Buffered)
    Speed: 2933 MT/s
    Manufacturer: Samsung
    Serial Number: 167D51E1
    Asset Tag: DIMMB1_AssetTag (date:22/38)
    Part Number: M393A8G40MB2-CVF
    Rank: 2
    Configured Memory Speed: 2400 MT/s
    Minimum Voltage: 1.2 V
    Maximum Voltage: 1.2 V
    Configured Voltage: 1.2 V
    Memory Technology: DRAM
    Memory Operating Mode Capability: Volatile memory
    Firmware Version: 0000
    Module Manufacturer ID: Bank 1, Hex 0xCE
    Module Product ID: Unknown
    Memory Subsystem Controller Manufacturer ID: Unknown
    Memory Subsystem Controller Product ID: Unknown
    Non-Volatile Size: None
    Volatile Size: 64 GB
    Cache Size: None
    Logical Size: None


$ sudo dmidecode -t 17 | grep -E "(Manufacturer|Part Number):"
    Manufacturer: Samsung
    Part Number: M393A8G40MB2-CVF
    Manufacturer: Samsung
    Part Number: M393A8G40MB2-CVF
    Manufacturer: Samsung
    Part Number: M393A8G40MB2-CVF
    Manufacturer: Samsung
    Part Number: M393A8G40MB2-CVF

Mit diesem einfachen Befehl ist es also recht einfach möglich zu ermitteln, welche Hardware in einem System verwendet wird. Diese Informationen sind besonders nützlich, wenn Hardware aufgerüstet oder ersetzt werden muss.

lspci: Auflisten von PCI-Geräten

Der Befehl lspci findet Anwendung, wird verwendet, um alle PCI (Peripheral Component Interconnect)-Geräte eines Systems aufzulisten. PCI-Geräte umfassen Netzwerkkarten, Grafikkarten, USB-Controller und mehr. Das Kommando bietet einen Überblick über die an den PCI-Bus des Systems angeschlossenen Geräte und liefert detaillierte Informationen zu deren Konfiguration und Status.

Im Gegensatz zu dmidecode benötigt lspci dabei keine erweiterten Berechtigungen; ein normaler Benutzer reicht aus, um nützliche Informationen zu erhalten.

Grundlegende Nutzung

Eine einfache Ausführung des Befehls lspci listet alle PCI-Geräte auf:

$ lspci

Für detailliertere Informationen über die Geräte kann die Option -v (verbose) verwenden werden:

$ lspci -v

Beispiel 1: Informationen zur Grafikkarte ermitteln

Um mehr Informationen ĂĽber die Grafikkarte des Systems zu ermitteln, kann die Ausgabe von lspci einfach mittels grep gfiltert werden. Beispielausgabe (hier mit einem ThinkPad T480S):

$ lspci | grep -i vga
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)

Beispiel 2: Welchen Kernel-Treiber verwendet eine Hardware-Komponente

Um nachzuvollziehen, welcher Kernel-Treiber und welches Modul von einem bestimmten Gerät verwendet wird, kann die Option -k verwendet werden. Dies listet in der Ausgabe den Kernel-Treiber auf, der fĂĽr jedes PCI-Gerät verwendet wird – eine Information, die besonders nĂĽtzlich bei der Fehlersuche im Falle Treiber-bezogener Problemen ist. Mittels Treibernamen und dem spezifischen, eigenem Hardware-Modell können deutlich ergiebigere Web-Suchen durchgefĂĽhrt werden.

Beispielausgabe (hier mit einem ThinkPad T480S):

$ lspci -k

[ Weitere Ausgabe zur besseren Lesbarkeit ausgelassen ] 00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07) Subsystem: Lenovo Device 2258 Kernel driver in use: i915 Kernel modules: i915

[ Weitere Ausgabe zur besseren Lesbarkeit ausgelassen ] 00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (4) I219-V (rev 21) Subsystem: Lenovo Device 2258 Kernel driver in use: e1000e Kernel modules: e1000e [ Weitere Ausgabe zur besseren Lesbarkeit ausgelassen ]

Wie man sehen kann, verwendet die Grafikkarte dendrm/i915 Intel GFX-Treiber, die Netzwerkkarte nutzt e1000e.

Fazit

Die Befehle dmidecode und lspci sind leistungsstarke Werkzeuge zum Abrufen detaillierter Hardware-Informationen eines Linux-Systems. Obwohl sie in der Bedienung simpel sind, bieten beide Befehle nützliche Einblicke in die Konfiguration und den Status des Systems Egal, ob man Fehler beheben will, etwas optimiert oder einfach nur neugierig ist: die vorgestellten Anwendungen liefern wertvolle Daten, die dabei helfen können, die eigene Linux-Umgebung besser zu verstehen und zu verwalten. Bis zum nächsten Mal, wenn wir uns weitere nützliche Befehlszeilentools mit Auflistung und Informationen und deren Verwendung ansehen.


  1. in den Beschreibungen des Befehls „baseboard“ genannt. ↩︎