En este paso final, explorarás el sistema de archivos sysfs, montado en /sys. Mientras que /proc proporciona información sobre procesos y algunos recursos de hardware, /sys ofrece una vista más estructurada del modelo de dispositivos del sistema. Exporta una representación jerárquica de los objetos del kernel, dispositivos y controladores. Muchas de las herramientas que has utilizado en pasos anteriores, como lsblk y udevadm, obtienen su información leyendo de /sys.
Primero, veamos cómo se representan los dispositivos de bloque. El directorio /sys/block contiene un subdirectorio para cada dispositivo de bloque conocido por el sistema.
Lista el contenido de /sys/block para ver los dispositivos:
ls -l /sys/block
La salida muestra los dispositivos de bloque, incluyendo los dispositivos loop y nuestro disco principal vda. Observa que estos son enlaces simbólicos que apuntan a sus ubicaciones reales dentro de la jerarquía /sys/devices.
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
Ahora, inspeccionemos el directorio para el dispositivo vda. Este directorio contiene varios archivos que representan los atributos del dispositivo.
ls /sys/block/vda
Verás una lista de archivos y directorios:
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
Cada archivo contiene una pieza específica de información. Por ejemplo, para encontrar el tamaño del disco, puedes leer el archivo size.
cat /sys/block/vda/size
La salida será un número:
83886080
Este número representa el tamaño del dispositivo en sectores de 512 bytes. También puedes ver directorios para cada partición, como vda1, vda2 y vda3, que contienen sus propios conjuntos de atributos.
A continuación, exploremos cómo se organizan los dispositivos por tipo de bus en el directorio /sys/bus. Esto proporciona una forma alternativa de navegar por la jerarquía de dispositivos.
ls /sys/bus
Verás una lista de diferentes tipos de buses soportados por el kernel:
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
Como sabemos que nuestro disco /dev/vda es un dispositivo de bloque Virtio, miremos dentro del directorio /sys/bus/virtio/devices. Esto listará todos los dispositivos Virtio detectados.
ls -l /sys/bus/virtio/devices
La salida muestra los dispositivos Virtio, identificados por sus IDs de dispositivo. Estos también son enlaces simbólicos que apuntan de nuevo al árbol principal de dispositivos.
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
Al explorar /sys, puedes acceder directamente a los datos brutos que las herramientas de nivel superior utilizan para informar sobre el hardware del sistema. Es una forma poderosa de entender cómo el kernel de Linux ve y organiza los dispositivos.