Como é o diretório “/ sys”?

13

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

/sys is a virtual file system that can be accessed to set or obtain information about the kernel's view of the system.

Eu tenho mantido o Trusty por um tempo agora, e nunca percebi isso antes, e é por isso que eu acho um pouco estranho. Alguém por favor me preencheria? Qual é a diferença entre isso e / dev? Quando o Ubuntu começou a usar esse diretório e por quê? Obrigado.

    
por Chev_603 13.01.2016 / 05:16

1 resposta

25

/sys é antigo . Ele foi introduzido antes do kernel do Linux atingir o 2.6 (quando havia uma divisão 2.4 / 2.5). Já que a primeira versão do Ubuntu usou um kernel 2.6 , todas versão do Ubuntu teve um% co_de %.

/sys contém os arquivos de dispositivos reais. Ele não fornece acesso a todos os dispositivos que o kernel conhece (por exemplo, dispositivos ethernet, por um - Por que as interfaces de rede não estão em / dev como outros dispositivos? , Por que os dispositivos Ethernet não aparecem em "/ dev"? ). É uma interface para o próprio dispositivo - você escreve no dispositivo, lê a partir dele, etc.

/dev é uma interface para o kernel. Especificamente, ele fornece uma visão de sistema de arquivos de informações e definições de configuração que o kernel fornece, muito parecido com /sys . 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 esse seja um caso de uso comum.

Mais informações podem ser encontradas em a 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 da placa de rede:

    cat /sys/class/net/enp1s0/address
    
  • Para obter os atuais reguladores de escalonamento da CPU:

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

E assim por diante ...

    
por muru 13.01.2016 / 05:32