A cosa serve la directory “/ sys”?


16

Qualche tempo fa ho notato questa directory che non avevo mai visto prima /sys. Ho studiato un po 'e letto che "i moderni sistemi Linux" hanno spesso questa directory e che gestisce i dispositivi. Ho pensato che fosse quello per / dev. Non riesco a trovare molte informazioni su questa directory, oltre a ciò che ho menzionato, e questo, citato da questa pagina:

/ sys è un file system virtuale a cui è possibile accedere per impostare o ottenere informazioni sulla vista del kernel del sistema.

Uso Trusty da un po 'di tempo e non l'ho mai notato prima, motivo per cui lo trovo un po' strano. Qualcuno potrebbe riempirmi per favore? Qual è la differenza tra this e / dev? Quando Ubuntu ha iniziato a utilizzare questa directory e perché? Grazie.


/sysè in circolazione da oltre un decennio .
Muru,

1
Sidenote, forse sarà utile ad altri utenti: le directory / proc e / sys, essendo filesystem virtuali, spariranno una volta spento il computer. Se hai mai montato un disco rigido con Linux su un altro sistema operativo, vedrai che quelle directory sono vuote.
Sergiy Kolodyazhnyy,

Risposte:


28

/sysè vecchio . È stato introdotto prima che il kernel Linux raggiungesse la 2.6 (quando c'era una divisione 2.4 / 2.5). Dal momento che la prima versione di Ubuntu utilizzava un kernel 2.6 , ogni versione di Ubuntu ha avuto un /sys.

/devcontiene i file effettivi del dispositivo. Non fornisce l'accesso a tutti i dispositivi che il kernel conosce (come i dispositivi Ethernet, per un - ? Perché sono interfacce di rete non in / dev come altri dispositivi , Perché i dispositivi Ethernet non appaiono in "/ dev"? ). È un'interfaccia per il dispositivo stesso: scrivi sul dispositivo, leggi da esso, ecc.

/sysè un'interfaccia per il kernel. In particolare, fornisce una vista simile al filesystem delle informazioni e delle impostazioni di configurazione fornite dal kernel, in modo molto simile /proc. La scrittura su questi file può o meno scrivere sul dispositivo reale, a seconda dell'impostazione che si sta modificando. Non è solo per la gestione dei dispositivi, sebbene sia un caso d'uso comune.

Maggiori informazioni sono disponibili nella documentazione 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.

Per esempio:

  • Un modo per impostare la luminosità di un monitor per laptop è:

    echo N > /sys/class/backlight/acpi_video0/brightness
    
  • Per ottenere l'indirizzo MAC della scheda di rete:

    cat /sys/class/net/enp1s0/address
    
  • Per ottenere gli attuali regolatori di ridimensionamento della CPU:

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

E così via...


@muru: cosa succede se desidero rimuovere uno di questi file che consuma molta memoria? Ho scritto un driver di dispositivo che era difettoso (potrebbe essere) che è andato in un ciclo e continuamente scritto su alcuni file nella directory / sys / devices. Inoltre, se elimino per errore un file errato quale sarebbe l'impatto?
Bhavik Shah,

2
@BhavikShah non rimuovi nulla da qui - questi file in realtà non esistono. Dovrai rimuovere il modulo interessato.
muru,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.