¿Para qué sirve el directorio "/ sys"?

16

Hace un tiempo me di cuenta de este directorio que no había visto nunca antes, /sys. Investigué un poco y leí que los "sistemas Linux modernos" a menudo tienen este directorio, y que administra dispositivos. Pensé que para eso estaba / dev. Parece que no puedo encontrar mucha información sobre este directorio, aparte de lo que mencioné, y esto, citado en esta página:

/ sys es un sistema de archivos virtual al que se puede acceder para configurar u obtener información sobre la vista del sistema del núcleo.

He estado ejecutando Trusty durante un tiempo, y nunca lo noté antes, por eso me resulta un poco extraño. ¿Podría alguien por favor completarme? ¿Cuál es la diferencia entre esto y / dev? ¿Cuándo comenzó Ubuntu a usar este directorio y por qué? Gracias.

Chev_603
fuente
/sysha existido por más de una década ahora .
muru
1
Nota adicional, tal vez sea útil para otros usuarios: los directorios / proc y / sys, que son sistemas de archivos virtuales, desaparecerán una vez que la computadora se apague. Si alguna vez montó un disco duro con Linux en otro sistema operativo, verá que esos directorios están vacíos.
Sergiy Kolodyazhnyy

Respuestas:

28

/syses vieja . Se introdujo antes de que el kernel de Linux alcanzara 2.6 (cuando había una división 2.4 / 2.5). Desde que la primera versión de Ubuntu usó un kernel 2.6 , cada versión de Ubuntu ha tenido un /sys.

/devcontiene los archivos reales del dispositivo. No proporciona acceso a todos los dispositivos que el núcleo sabe de (tales como dispositivos de Ethernet, para uno - ¿Por qué son las interfaces de red no en / dev igual que otros dispositivos , ¿Por qué los dispositivos Ethernet no aparecen en "/ dev"? ). Es una interfaz para el dispositivo en sí mismo: usted escribe en el dispositivo, lee de él, etc.

/syses una interfaz para el kernel. Específicamente, proporciona una vista similar a la de un sistema de archivos de información y configuraciones de configuración que proporciona el núcleo, muy similar /proc. Escribir en estos archivos puede o no escribir en el dispositivo real, dependiendo de la configuración que esté cambiando. No es solo para administrar dispositivos, aunque ese es un caso de uso común.

Se puede encontrar más información en la documentación del kernel :

Top Level Directory Layout
~~~~~~~~~~~~~~~~~~~~~~~~~~

The sysfs directory arrangement exposes the relationship of kernel
data structures. 

The top level sysfs directory looks like:

block/
bus/
class/
dev/
devices/
firmware/
net/
fs/

devices/ contains a filesystem representation of the device tree. It maps
directly to the internal kernel device tree, which is a hierarchy of
struct device. 

bus/ contains flat directory layout of the various bus types in the
kernel. Each bus's directory contains two subdirectories:

    devices/
    drivers/

devices/ contains symlinks for each device discovered in the system
that point to the device's directory under root/.

drivers/ contains a directory for each device driver that is loaded
for devices on that particular bus (this assumes that drivers do not
span multiple bus types).

fs/ contains a directory for some filesystems.  Currently each
filesystem wanting to export attributes must create its own hierarchy
below fs/ (see ./fuse.txt for an example).

dev/ contains two directories char/ and block/. Inside these two
directories there are symlinks named <major>:<minor>.  These symlinks
point to the sysfs directory for the given device.  /sys/dev provides a
quick way to lookup the sysfs interface for a device from the result of
a stat(2) operation.

Por ejemplo:

  • Una forma de configurar el brillo de un monitor portátil es:

    echo N > /sys/class/backlight/acpi_video0/brightness
    
  • Para obtener la dirección MAC de una tarjeta de red:

    cat /sys/class/net/enp1s0/address
    
  • Para obtener los gobernadores de escala de CPU actuales:

    cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
    

Y así...

muru
fuente
@muru: ¿Qué sucede si quiero eliminar uno de estos archivos que consume mucha memoria? Escribí un controlador de dispositivo que tenía errores (puede ser) que entró en un bucle y escribió continuamente en algún archivo en el directorio / sys / devices. Además, si borro accidentalmente un archivo incorrecto, ¿cuál sería el impacto?
Bhavik Shah
2
@BhavikShah no eliminas nada de aquí, estos archivos no existen realmente. Tendrás que eliminar el módulo involucrado.
muru