In diesem letzten Schritt erkunden Sie das sysfs-Dateisystem, das unter /sys eingehängt ist. Während /proc Informationen über Prozesse und einige Hardware-Ressourcen liefert, bietet /sys eine strukturiertere Ansicht des Gerätemodells des Systems. Es exportiert eine hierarchische Darstellung von Kernel-Objekten, Geräten und Treiben. Viele der Werkzeuge, die Sie in den vorherigen Schritten verwendet haben, wie lsblk und udevadm, beziehen ihre Informationen durch das Auslesen von /sys.
Schauen wir uns zuerst an, wie Blockgeräte dargestellt werden. Das Verzeichnis /sys/block enthält ein Unterverzeichnis für jedes dem System bekannte Blockgerät.
Listen Sie den Inhalt von /sys/block auf, um die Geräte zu sehen:
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
Untersuchen wir nun das Verzeichnis für das Gerät vda. Dieses Verzeichnis enthält verschiedene Dateien, die die Attribute des Geräts repräsentieren.
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 eine spezifische Information. Um beispielsweise die Größe der Festplatte herauszufinden, können Sie die Datei size lesen.
cat /sys/block/vda/size
Die Ausgabe ist eine Zahl:
83886080
Diese Zahl stellt die Größe des Geräts in 512-Byte-Sektoren dar. Sie sehen auch Verzeichnisse für jede Partition, wie vda1, vda2 und vda3, die ihre eigenen Sätze von Attributen enthalten.
Als Nächstes erkunden wir, wie Geräte nach Bustyp im Verzeichnis /sys/bus organisiert sind. Dies bietet eine alternative Möglichkeit, durch die Gerätehierarchie zu navigieren.
ls /sys/bus
Sie sehen eine Liste verschiedener vom Kernel unterstützter Bustypen:
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. Auch dies sind symbolische Links, die zurück auf den 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 das Erkunden von /sys können Sie direkt auf die Rohdaten zugreifen, die höherwertige Werkzeuge verwenden, um über die Systemhardware zu berichten. Es ist ein mächtiger Weg, um zu verstehen, wie der Linux-Kernel Geräte sieht und organisiert.