In diesem letzten Schritt erkunden Sie das sysfs
-Dateisystem, das unter /sys
gemountet ist. Während /proc
Informationen über Prozesse und einige Hardware-Ressourcen bereitstellt, bietet /sys
eine strukturiertere Ansicht des Gerätemodells des Systems. Es exportiert eine hierarchische Darstellung von Kernel-Objekten, Geräten und Treibern. Viele der Werkzeuge, die Sie in früheren Schritten verwendet haben, wie lsblk
und udevadm
, beziehen ihre Informationen durch Lesen aus /sys
.
Zuerst sehen wir uns an, wie Blockgeräte dargestellt werden. Das Verzeichnis /sys/block
enthält ein Unterverzeichnis für jedes vom System erkannte Blockgerät.
Listen Sie den Inhalt von /sys/block
auf, um die Geräte anzuzeigen:
ls -l /sys/block
Die Ausgabe zeigt die Blockgeräte, einschließlich der Loop-Geräte und unserer Hauptfestplatte vda
. Beachten Sie, dass dies symbolische Links sind, die auf ihre tatsächlichen Speicherorte innerhalb der /sys/devices
-Hierarchie verweisen.
total 0
lrwxrwxrwx 1 root root 0 Jan 1 00:00 loop0 -> ../devices/virtual/block/loop0
lrwxrwxrwx 1 root root 0 Jan 1 00:00 loop1 -> ../devices/virtual/block/loop1
...
lrwxrwxrwx 1 root root 0 Jan 1 00:00 vda -> ../devices/pci0000:00/0000:00:04.0/virtio1/block/vda
Nun inspizieren wir das Verzeichnis für das vda
-Gerät. Dieses Verzeichnis enthält verschiedene Dateien, die die Attribute des Geräts darstellen.
ls /sys/block/vda
Sie sehen eine Liste von Dateien und Verzeichnissen:
alignment_offset bdi capability dev device discard_alignment events events_async events_poll_msecs ext_range holders inflight integrity power queue range removable ro vda1 vda2 vda3 size slaves stat subsystem trace uevent
Jede Datei enthält spezifische Informationen. Um beispielsweise die Größe der Festplatte zu ermitteln, können Sie die Datei size
lesen.
cat /sys/block/vda/size
Die Ausgabe ist eine Zahl:
83886080
Diese Zahl repräsentiert die Größe des Geräts in 512-Byte-Sektoren. Sie können auch Verzeichnisse für jede Partition sehen, wie z. B. vda1
, vda2
und vda3
, die ihre eigenen Attributsätze enthalten.
Als Nächstes erkunden wir, wie Geräte nach Bustyp im Verzeichnis /sys/bus
organisiert sind. Dies bietet eine alternative Möglichkeit, die Gerätehierarchie zu durchlaufen.
ls /sys/bus
Sie sehen eine Liste verschiedener Bustypen, die vom Kernel unterstützt werden:
acpi amba clocksource container cpu event_source hid i2c i8042 ide mdio_bus memory pci pci_express platform scsi serial serio soc system usb virtio workqueue
Da wir wissen, dass unsere Festplatte /dev/vda
ein Virtio-Blockgerät ist, schauen wir in das Verzeichnis /sys/bus/virtio/devices
. Dies listet alle erkannten Virtio-Geräte auf.
ls -l /sys/bus/virtio/devices
Die Ausgabe zeigt die Virtio-Geräte, identifiziert durch ihre Geräte-IDs. Dies sind ebenfalls symbolische Links, die zurück zum Hauptgerätebaum verweisen.
total 0
lrwxrwxrwx 1 root root 0 Jan 1 00:00 virtio0 -> ../../../devices/pci0000:00/0000:00:05.0/virtio0
lrwxrwxrwx 1 root root 0 Jan 1 00:00 virtio1 -> ../../../devices/pci0000:00/0000:00:04.0/virtio1
Durch die Erkundung von /sys
können Sie direkt auf die Rohdaten zugreifen, die höherstufige Werkzeuge zur Berichterstattung über Systemhardware verwenden. Es ist eine leistungsstarke Methode, um zu verstehen, wie der Linux-Kernel Geräte sieht und organisiert.