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.