/sys
é velho . Foi introduzido antes do kernel do Linux atingir 2.6 (quando houve uma divisão 2.4 / 2.5). Desde que o primeiro lançamento do Ubuntu usou um kernel 2.6 , todas as versões do Ubuntu tiveram um /sys
.
/dev
contém os arquivos reais do dispositivo. Ele não fornece acesso a todos os dispositivos que o kernel sabe de (tais como dispositivos Ethernet, por um - ? Por que são as interfaces de rede não em / dev como outros dispositivos , Por que os dispositivos Ethernet não aparecer em "/ dev"? ). É uma interface para o próprio dispositivo - você escreve para o dispositivo, lê a partir dele, etc.
/sys
é uma interface para o kernel. Especificamente, ele fornece uma visão semelhante ao sistema de arquivos de informações e definições de configuração que o kernel fornece, da mesma forma /proc
. A gravação nesses arquivos pode ou não ser gravada no dispositivo real, dependendo da configuração que você está alterando. Não é apenas para gerenciar dispositivos, embora seja um caso de uso comum.
Mais informações podem ser encontradas na documentação do 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 exemplo:
Uma maneira de definir o brilho de um monitor de laptop é:
echo N > /sys/class/backlight/acpi_video0/brightness
Para obter o endereço MAC de uma placa de rede:
cat /sys/class/net/enp1s0/address
Para obter os reguladores de dimensionamento da CPU atuais:
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
E assim por diante...
/sys
já existe há mais de uma década .