sysfs es un pseudo sistema de archivos proporcionado por el kernel de Linux que exporta información sobre varios subsistemas del kernel, dispositivos de hardware y controladores de dispositivos asociados desde el modelo de dispositivo del kernel al espacio de usuario a través de archivos virtuales . [1] Además de proporcionar información sobre varios dispositivos y subsistemas del kernel, los archivos virtuales exportados también se utilizan para su configuración.
sysfs proporciona una funcionalidad similar al mecanismo sysctl que se encuentra en los sistemas operativos BSD , con la diferencia de que sysfs se implementa como un sistema de archivos virtual en lugar de ser un mecanismo de kernel especialmente diseñado y que, en Linux, los parámetros de configuración de sysctl están disponibles en /proc/sys/ como parte de procfs , no sysfs que está montado en /sys/ . [2]
Historia
Durante el ciclo de desarrollo 2.5, se introdujo el modelo de controlador de Linux para corregir las siguientes deficiencias de la versión 2.4:
- No existía un método unificado para representar las relaciones entre el controlador y el dispositivo.
- No existía ningún mecanismo genérico de conexión en caliente .
- procfs estaba repleto de información no relacionada con el proceso.
Sysfs fue diseñado para exportar la información presente en el árbol de dispositivos , lo que dejaría de saturar procfs. Fue escrito por Patrick Mochel. [3] [4] Más tarde, Maneesh Soni escribió el parche de almacenamiento de respaldo de sysfs para reducir el uso de memoria en sistemas grandes.
Durante el siguiente año de desarrollo de la versión 2.5, las capacidades de infraestructura del modelo de controlador y driverfs comenzaron a resultar útiles para otros subsistemas. [5] [6] Se desarrollaron kobjects para proporcionar un mecanismo de gestión de objetos central y driverfs pasó a llamarse sysfs para representar su agnosticismo de subsistemas.
Sysfs se monta en el punto de montaje /sys . Si no se monta automáticamente durante la inicialización, se puede montar manualmente utilizando el mountcomando: mount -t sysfs sysfs /sys. [1]
Autobuses compatibles
- ACPI
- Exporta información sobre dispositivos ACPI .
- PCI
- Exporta información sobre dispositivos PCI y PCI Express .
- PCI Express
- Exporta información sobre dispositivos PCI Express .
- USB
- Exporta información sobre dispositivos USB .
- SCSI
- Exporta información sobre dispositivos de almacenamiento masivo , incluidas las interfaces USB , SATA y NVMe . [7]
- Autobuses S/390
- Como la arquitectura S/390 contiene dispositivos que no se encuentran en ningún otro lugar, se han creado buses especiales:
- css : contiene subcanales (actualmente el único controlador proporcionado es para subcanales de E/S).
- ccw : contiene dispositivos conectados al canal (controlados por CCW ).
- ccwgroup : dispositivos artificiales creados por el usuario y compuestos por dispositivos ccw. Reemplaza algunas de las funciones de chandev 2.4.
- iucv : dispositivos artificiales como los dispositivos netiucv que utilizan la interfaz IUCV de VM .
Sistemas de archivos del sistema y espacio de usuario
Varias utilidades utilizan Sysfs para acceder a información sobre el hardware y sus controladores ( módulos del kernel ), como udev o HAL . Se han escrito scripts para acceder a información obtenida previamente a través de procfs , y algunos scripts configuran controladores de dispositivos y dispositivos a través de sus atributos.
Véase también
- procesos
- configuración
- archivos tmpf
- sysctl , forma alternativa de exportar la configuración utilizada en sistemas BSD
Referencias
- ^ por Patrick Mochel y Mike Murphy. "sysfs - _El_ sistema de archivos para exportar objetos del kernel". kernel.org .
- ^ SUSE. "Página de manual de sysctl". FreeBSD.
sysctl se utiliza para modificar los parámetros del núcleo en tiempo de ejecución. Los parámetros disponibles son los que se enumeran en /proc/sys/. Procfs es necesario para la compatibilidad de sysctl en Linux. Puede utilizar sysctl tanto para leer como para escribir datos de sysctl.
- ^ Torvalds, Linus (18 de octubre de 2002). "Linux v2.5.44 y sin conexión durante una semana".
- ^ Torvalds, Linus (4 de noviembre de 2002). "Linux v2.5.46".
- ^ Mochel, Patrick (17 de octubre de 2001). "[RFC] Nuevo modelo de controlador para 2.5".
- ^ Jansen, Tim (1 de noviembre de 2001). "Re: [PARCHE] PROPUESTA 2.5: Reemplazo del actual /proc de mierda".
- ^ "Guía de interfaces SCSI: la documentación del núcleo de Linux". www.kernel.org . Consultado el 13 de noviembre de 2020 .
Enlaces externos
- Descripción general del modelo de controlador desde la transferencia de LWN a la serie 2.6
- kobjects y sysfs de LWN portados a la serie 2.6
- Ramfs
- El sistema de archivos sysfs, OLS'05
- Documentación/filesystems/sysfs.txt Documentación del kernel de Linux para sysfs