Descubre Sysfs en Linux
Conozca el sistema en Linux encargado de reconocer el hardware
El sysfs es un recurso del Kernel para exportar información útil sobre el sistema a los procesos (programas) de los usuarios a través de un sistema de archivos en memoria.
El sysfs organiza la información del Kernel en directorios de forma rigurosa y basada en la organización interna de las estructuras de datos del Kernel.
Los archivos que se crean en este sistema de archivos son principalmente en ASCII (texto puro) con un valor por archivo.
Estas características aseguran que la información pasada por el sysfs a los programas sea precisa y se utilice fácilmente.
Una vez que la estructura del sysfs está compuesta de directorios, archivos y enlaces simbólicos, la navegación dentro de él es fácil e intuitiva. El sysfs generalmente se monta en el directorio /sys.
Los principales directorios del sysfs son: block, bus, class, devices, firmware, fs, kernel, module y power.
BLOCK
El directorio block contiene subdirectorios para cada sistema de archivos de bloque (discos rígidos, principalmente) existentes en el sistema.
Dentro de los directorios de los dispositivos, hay diversos archivos que indican, entre otras cosas, el tamaño del dispositivo, estado, etc.
BUS
Este directorio contiene subdirectorios para cada tipo de bus soportado por el Kernel. Y cada subdirectorio contiene los directorios devices y drivers.
El primero contiene una lista de todos los dispositivos encontrados que son del tipo de bus indicado.
El segundo contiene los drivers de dispositivos de ese tipo de bus.
CLASS
El directorio class contiene representaciones de cada clase de dispositivo que está registrado en el Kernel.
Las clases indican el tipo de dispositivo que representan. Por ejemplo: clase de impresoras, clase de discos, etc.
Cada subdirectorio de clase tendrá un directorio para cada tipo de dispositivo encontrado perteneciente a esa clase. Por ejemplo: la clase "net" contiene los dispositivos "eth0" y "eth1".
Y, dentro de cada directorio de dispositivo, se encuentran archivos y directorios asociados al tipo de dispositivo al que pertenece.
DEVICES
El directorio devices contiene la jerarquía global de los dispositivos encontrados y soportados por el Kernel.
Su jerarquía de directorios obedece a la organización de los dispositivos según el tipo de conexión eléctrica en que están conectados. Solo dos dispositivos son la excepción de la regla: dispositivos de plataforma (platform) y de sistema (system).
El primer directorio es relativo a los dispositivos periféricos inherentes a la plataforma de procesamiento y bus del hardware. Por ejemplo: dispositivos inherentes a puertos de entrada y salida, controladores seriales y paralelos, etc.
Ya el system representa los dispositivos no periféricos que no encajan en cualquier otra clasificación. Por ejemplo: CPUs, APICs, temporizadores, etc.
FIRMWARE
El directorio firmware contiene interfaces para verificar y asignar objetos específicos de firmware. Firmware son códigos ejecutados durante el proceso de carga de la máquina, como software de la BIOS.
MODULE
El directorio module contiene subdirectorios con todos los módulos del Kernel cargados en la memoria.
Los módulos son pedazos de programas que pueden o no hacer parte del Kernel, de forma que son leídos y ejecutados de acuerdo con la necesidad del usuario.
Por ejemplo: si usted no utiliza con frecuencia el driver para un disco duro externo USB, puede optar por cargar el módulo que habilita soporte a discos externos solamente cuando vaya a hacer uso de este tipo de medio. Este tipo de arquitectura modular permite que el Kernel quede más ligero, ocupando menos memoria y también menos procesamiento, dejando la CPU más tiempo libre para ejecutar los programas de los usuarios.
Un Kernel ligero permite que el sistema tenga una mejor eficiencia, pero no impide que otras funcionalidades sean agregadas bajo demanda en forma de módulos del Kernel.
Es importante saber que todos los directorios de módulo contienen un archivo llamado refcnt que cuenta el número de referencias o número de usuarios que hacen uso del módulo específico.
POWER
El directorio power representa el subsistema de gerenciamento de energía. Tiene algunos archivos que representan el método que el sistema utilizará para entrar en modo de suspensión o ahorro de energía.
Es importante que sepa que la información contenida en este sistema de archivos está organizada de forma que diversos programas y utilitarios hacen uso de ella para interactuar mejor con el Kernel.
HALD
El hald es un programa que se ejecuta en modo de servidor (daemon) que mantiene una base de datos sobre los dispositivos conectados al sistema, en tiempo real.
Este programa está conectado al Kernel a través del D-BUS escuchando los mensajes referentes a los dispositivos y provee una biblioteca de programación API para que otros programas puedan descubrir, monitorear y hacer uso de los dispositivos.
El HALD facilita el trabajo de los programadores ofreciendo un medio fácil y rápido de interactuar con los dispositivos sin necesidad de hacer acceso directo a ellos.
UDEV
La gestión dinámica de dispositivos (udev) es responsable de mantener la estructura de directorio de /dev (directorio que contiene los enlaces que representan los dispositivos) de forma de permitir que solamente dispositivos conectados sean listados en la estructura de /dev.
Generalmente este gestor se ejecuta en la forma del programa llamado udevd en modo de servidor (daemon) que queda escuchando los eventos del Kernel para encontrar cuando un dispositivo es removido o agregado al sistema.
Cuando se percibe un evento de dispositivo en el Kernel, este compara con las reglas relacionadas en sysfs para identificar el dispositivo y, después de eso, crea o remueve el enlace simbólico del dispositivo en el directorio /dev.
D-BUS
D-BUS es un proyecto de software libre mantenido por freedesktop.org. Su principal objetivo es crear un bus de intercambio de mensajes entre los programas.
Permite que los programas interactúen entre sí de forma que el programador no necesita conocer la instancia del otro programa al que desea conectarse.
De esta forma, el D-BUS ofrece una biblioteca de programación que permite el intercambio de mensajes entre las aplicaciones a través de protocolos estandarizados, utilizándose del XML para hacer la conexión entre programas distintos.
El D-BUS soporta diversos lenguajes de programación de alto nivel como Qt, GLib, Java, C#, Python, etc.
Aprenda mucho más sobre Linux en nuestro curso en línea. Puede hacer la matrícula aquí con trial de 7 días gratis. Si ya tiene una cuenta, puede acceder aquí.
¿Le gustó? ¡Comparta :-)
Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.