Para que serve o diretório "/ sys"?

16

Há um tempo atrás eu notei esse diretório que eu nunca tinha visto antes /sys,. Pesquisei um pouco e li que "sistemas Linux modernos" geralmente têm esse diretório e gerencia dispositivos. Eu pensei que era para isso que / dev. Não consigo encontrar muitas informações sobre esse diretório, além do que mencionei e citei nesta página:

/ sys é um sistema de arquivos virtual que pode ser acessado para definir ou obter informações sobre a visão do sistema do kernel.

Estou executando o Trusty há um tempo e nunca o notei antes, e é por isso que acho um pouco estranho. Alguém poderia me informar? Qual é a diferença entre this e / dev? Quando o Ubuntu começou a usar esse diretório e por quê? Obrigado.

Chev_603
fonte
/sysjá existe há mais de uma década .
muru
11
O Sidenote talvez seja útil para outros usuários: os diretórios / proc e / sys, sendo sistemas de arquivos virtuais, desaparecerão assim que o computador for desligado. Se você já montou um disco rígido com o Linux em outro sistema operacional, verá que esses diretórios estão vazios.
Sergiy Kolodyazhnyy 13/01

Respostas:

28

/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.

/devconté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...

muru
fonte
@ muru: E se eu quiser remover um desses arquivos que consome muita memória? Eu escrevi um driver de dispositivo com erros (pode ser) que entrou em um loop e gravou continuamente em algum arquivo no diretório / sys / devices. Além disso, se eu excluir acidentalmente um arquivo errado, qual seria o impacto?
Bhavik Shah
2
@BhavikShah, você não remove nada daqui - esses arquivos realmente não existem. Você terá que remover o módulo envolvido.
Muru