En Linux, cada directorio tiene su propio propósito para su existencia. Lo mismo es cierto para el directorio sysfs . El núcleo utiliza las entradas sysfs para exportar la información a los procesos en el dominio del usuario y obtener información del usuario. Estas entradas viajan a través del sistema de archivos para encontrar las funciones de mostrar y almacenar registradas para él.
Las entradas en sysfs se pueden ordenar según el tipo de bus, el tipo de objeto, el tipo de dispositivo, las relaciones padre/hijo, etc. Los enlaces simbólicos ayudan a reducir las redundancias.
¿Qué cubriremos?
En este artículo, exploraremos el sistema de archivos sysfs en Linux. Comencemos con una descripción general de sysfs .
Descripción general del sistema de archivos sysfs
Sysfs se introdujo en Linux por primera vez en la versión 2.6.0 del kernel.
El sysfs es un sistema de archivos virtual en Linux. Significa que los archivos en sysfs no residen en un disco ni en ningún medio físico. Sin embargo, el contenido de los sistemas de archivos se almacena en la memoria. Originalmente, sysfs estaba basado en ramfs y se llamaba ddfs (Device Driver Filesystem).
Sysfs envía datos al espacio del usuario usando archivos virtuales. Estos datos comprenden datos sobre varios subsistemas del núcleo, dispositivos de hardware y controladores de dispositivos asociados.
Por lo general, sysfs se monta en la partición /sys y el sistema lo monta automáticamente. Además, se puede montar manualmente en el arranque usando el archivo fstab :
Del comando anterior, notamos que sysfs está montado en /sys. Esta es la ubicación estándar donde se monta el sysfs .
La jerarquía Sysfs
Sysfs es un grupo de archivos, carpetas y enlaces simbólicos. La mayoría de los archivos dentro de /sys son de solo lectura. Algunos archivos también se pueden escribir, lo que ayuda a modificar las variables del kernel. Los enlaces simbólicos se utilizan ampliamente para vincular entradas en todo el árbol del sistema de archivos.
Recomendamos usar el comando «árbol» para ver una vista completa de este directorio. En nuestro sistema, el comando «árbol» muestra un total de 9480 directorios y 38635 archivos, que es una extensa colección de archivos y directorios.
En el nivel superior, se crean 11 subdirectorios principales al iniciar el sistema. Estos subdirectorios son representaciones de los principales subsistemas registrados con sysfs . En el arranque, estos subsistemas se registran con el núcleo de kobject. Una vez que se realiza la inicialización, comienzan a encontrar objetos registrados dentro de sus directorios correspondientes.
Archivos y subdirectorios del sistema de archivos /sys
Veamos ahora algunos archivos y subdirectorios del sistema de archivos /sys y discutamos su propósito básico. Los subdirectorios virtuales más importantes en el nivel superior de /sys son block, bus, hypervisor, class, devices, kernel, firmware, module y power.
1. /sys/block : tiene un enlace simbólico y directorios para cada dispositivo de bloque descubierto en el sistema. Estos enlaces simbólicos apuntan a sus respectivos directorios bajo el directorio /sys/devices . Hay muchos subdirectorios dentro de aquí:
Estos dispositivos de bloque, que se muestran en color cian, tienen atributos que contienen información sobre las particiones. Ejemplos de estos subdirectorios son sda, sdb, etc.
2. /sys/bus : un bus es un medio/canal entre un procesador y un dispositivo o dispositivos. Los ejemplos de tipos de bus incluyen PCI, PCMCIA, SCSI o USB. Para cada tipo de bus en el kernel, hay un subdirectorio que reside en el directorio /sys/bus . Cada uno de estos subdirectorios tiene otros dos subdirectorios más: dispositivos y controladores.
i) dispositivos: contiene enlaces simbólicos a las entradas en /sys/devices (el árbol de dispositivos global) para cada dispositivo descubierto en el bus.
ii) controlador: contiene un subdirectorio para cada controlador de dispositivo cargado en el bus. Estos subdirectorios contienen atributos para administrar los parámetros del controlador y los enlaces simbólicos.
3. /sys/class: una clase es una vista de alto nivel de un dispositivo. Este directorio contiene además un nivel más de subdirectorios para cada clase de dispositivo registrada en el sistema. Estas clases pueden ser terminales, dispositivos de red, dispositivos de sonido, etc. Estos subdirectorios contienen enlaces simbólicos para cada dispositivo de una clase. Estos enlaces simbólicos apuntan a las entradas en el directorio /sys/devices .
4. /sys/class/net : cada enlace simbólico en este directorio representa uno de los dispositivos de red reales o virtuales, que son visibles en el espacio de nombres de red del proceso que accede al directorio. Cada uno de estos enlaces simbólicos apunta a las entradas en el directorio /sys/devices .
5. /sys/devices : el directorio /sys/device contiene todo el árbol de dispositivos del kernel en la vista del sistema de archivos. Incluye cada dispositivo físico encontrado por los tipos de bus registrados con el kernel.
6. /sys/firmware : contiene interfaces para administrar objetos y atributos que son específicos del firmware. Aquí, el firmware es un código que se ejecuta en el arranque del sistema. Por ejemplo, la plataforma puede ser bios x86, OpenFirmware e ia64. Hay muchos archivos en la carpeta EFI como ejemplo.
Salida de muestra:
config_table esrt fw_vendor runtime systab
efivars fw_platform_size mok-variables runtime-map vars
Cada uno de estos archivos contiene algún valor para un parámetro.
7. /sys/kernel: hay muchos archivos y carpetas en este subdirectorio que brindan información sobre el kernel activo.
8. /sys/module: por cada módulo cargado en el kernel, hay un subdirectorio que reside en este directorio. El nombre de estos subdirectorios se basa en el nombre del núcleo correspondiente. Dentro de cada directorio de módulo, hay un subdirectorio llamado secciones que contiene atributos sobre las secciones del módulo. Muchos archivos son como coresize, initsize, initstate, srcversion, etc. De manera similar, hay muchos subdirectorios como controladores, titulares, notas, parámetros, etc.
9. /sys/power: Representa el subsistema de energía y tiene solo dos atributos: disco y estado. El método por el cual el sistema pasará al estado de reposo/suspensión está controlado por «disco». “Estado” permite que una potencia obtenga un estado de baja potencia.
Conclusión
En esta guía, aprendimos sobre los sistemas de archivos sysfs en Linux y también vimos varios subdirectorios y sus propósitos. El sysfs contiene una gran cantidad de datos. Se puede encontrar más información en las páginas del manual y también en esta página , que está alojada en kernel.org