Oltre a /proc, il kernel esporta anche le informazioni in un altro file system virtuale chiamato sysfs. sysfs viene utilizzato da programmi come udev per accedere alle informazioni sul dispositivo e sul driver del dispositivo. La creazione di sysfs ha aiutato a ripulire il file system proc perché gran parte delle informazioni hardware sono state spostate da proc a sysfs.
Il file system sysfs è montato su /sys. Vengono visualizzate le directory di livello superiore. Di seguito è riportata una breve descrizione di alcune di queste directory:
/sys/blocco
Questa directory contiene le voci per ogni dispositivo a blocchi nel sistema. I collegamenti simbolici puntano al dispositivo fisico a cui è mappato il dispositivo nella struttura del dispositivo fisico. Ad esempio, gli attributi per sda i dischi risiedono nella seguente directory:
# ls -l /sys/block/sda/ total 0 -r--r--r-- 1 root root 4096 Mar 24 13:03 alignment_offset lrwxrwxrwx 1 root root 0 Mar 24 13:04 bdi -> ../../../../../../../../virtual/bdi/8:0 -r--r--r-- 1 root root 4096 Mar 24 13:03 capability -r--r--r-- 1 root root 4096 Mar 24 13:03 dev lrwxrwxrwx 1 root root 0 Mar 24 13:04 device -> ../../../0:0:0:0 -r--r--r-- 1 root root 4096 Mar 24 13:03 discard_alignment -r--r--r-- 1 root root 4096 Mar 24 13:03 events -r--r--r-- 1 root root 4096 Mar 24 13:03 events_async -rw-r--r-- 1 root root 4096 Mar 24 13:03 events_poll_msecs -r--r--r-- 1 root root 4096 Mar 24 13:03 ext_range drwxr-xr-x 2 root root 0 Mar 24 13:04 holders -r--r--r-- 1 root root 4096 Mar 24 13:03 inflight drwxr-xr-x 2 root root 0 Mar 24 13:04 integrity drwxr-xr-x 2 root root 0 Mar 24 13:04 power drwxr-xr-x 3 root root 0 Mar 24 13:04 queue -r--r--r-- 1 root root 4096 Mar 24 13:03 range -r--r--r-- 1 root root 4096 Mar 24 13:03 removable -r--r--r-- 1 root root 4096 Mar 24 13:03 ro -r--r--r-- 1 root root 4096 Mar 24 13:03 size drwxr-xr-x 2 root root 0 Mar 24 13:04 slaves -r--r--r-- 1 root root 4096 Mar 24 13:03 stat lrwxrwxrwx 1 root root 0 Mar 24 13:04 subsystem -> ../../../../../../../../../class/block -rw-r--r-- 1 root root 4096 Mar 24 13:03 uevent
/sistema/bus
Questa directory contiene le sottodirectory per ogni tipo di bus fisico supportato nel kernel. Ogni tipo di bus ha due sottodirectory:dispositivi e autisti . La directory dei dispositivi elenca i dispositivi rilevati su quel tipo di bus. La directory dei driver contiene le directory per ciascun driver di dispositivo registrato con il tipo di bus. I parametri del driver possono essere visualizzati e manipolati. Ad esempio, per elencare i driver per i dispositivi virtuali, inserisci:
# ls -lR /sys/bus/xen/drivers /sys/bus/xen/drivers: total 0 drwxr-xr-x. 2 root root 0 Mar 24 13:37 vbd drwxr-xr-x. 2 root root 0 Mar 24 13:37 vif /sys/bus/xen/drivers/vbd: total 0 --w-------. 1 root root 4096 Mar 24 13:40 bind lrwxrwxrwx. 1 root root 0 Mar 24 13:40 module -> ../../../../module/xen_blkfront --w-------. 1 root root 4096 Mar 24 13:37 uevent --w-------. 1 root root 4096 Mar 24 13:40 unbind lrwxrwxrwx. 1 root root 0 Mar 24 13:40 vbd-51792 -> ../../../../devices/vbd-51792 lrwxrwxrwx. 1 root root 0 Mar 24 13:40 vbd-768 -> ../../../../devices/vbd-768 /sys/bus/xen/drivers/vif: total 0 --w-------. 1 root root 4096 Mar 24 13:40 bind lrwxrwxrwx. 1 root root 0 Mar 24 13:40 module -> ../../../../module/xen_netfront --w-------. 1 root root 4096 Mar 24 13:37 uevent --w-------. 1 root root 4096 Mar 24 13:40 unbind lrwxrwxrwx. 1 root root 0 Mar 24 13:40 vif-0 -> ../../../../devices/vif-0
/sys/class
Questa directory contiene ogni classe di dispositivo registrata con il kernel. Le classi di dispositivi descrivono un tipo funzionale di dispositivo. Gli esempi includono dispositivi di input, dispositivi di rete e dispositivi a blocchi.
/sys/dispositivi
Questa directory contiene la gerarchia globale dei dispositivi di tutti i dispositivi sul sistema. Questa directory contiene anche una directory di piattaforma e una directory di sistema. La directory della piattaforma contiene i dispositivi periferici specifici di una piattaforma particolare, come i controller dei dispositivi. La directory di sistema contiene dispositivi non periferici come CPU e APIC.
/sys/firmware
Questa directory contiene le sottodirectory con gli oggetti e gli attributi del firmware.
/sys/modulo
Questa directory contiene le sottodirectory per ogni modulo caricato nel kernel, ad esempio:
# ls /sys/module/xen* /sys/module/xen_blkfront: coresize drivers holders initsize initstate notes parameters refcnt rhelversion sections srcversion taint uevent /sys/module/xen_netfront: coresize drivers holders initsize initstate notes parameters refcnt rhelversion sections srcversion taint uevent
/sys/power
Lo stato di alimentazione del sistema può essere controllato da questa directory. L'attributo disk controlla il metodo con cui il sistema effettua la sospensione su disco. L'attributo state consente a un processo di entrare in uno stato di basso consumo.
L'utilità sysctl
L'utilità sysctl può essere utilizzata anche per visualizzare o modificare i valori dei file scrivibili nella directory /proc/sys. Per visualizzare le impostazioni correnti del kernel, inserisci:
# sysctl -a abi.vsyscall32 = 1 crypto.fips_enabled = 0 debug.exception-trace = 1 ...
Si tratta delle stesse informazioni visualizzate se ciascuno dei file fosse visualizzato singolarmente, ad esempio:
# cat /proc/sys/abi/vsyscall32 1
Il comando echo può essere utilizzato per assegnare valori a file scrivibili in /proc/sys:
# echo 1 > /proc/sys/net/ipv4/ip_forward
Segue il comando sysctl equivalente, che mostra immediatamente il risultato della modifica:
# sysctl -w net.ipv4.ip_forward=1 net.ipv4.ip_forward = 1
Le modifiche apportate utilizzando sia echo che sysctl vengono perse al riavvio del sistema. Per preservare le impostazioni personalizzate, aggiungile a /etc/sysctl.conf file. I valori aggiunti a questo file hanno effetto a ogni avvio del sistema.
Comprendere il file system /proc