Visualizzare la configurazione attuale del kernel¶
Il kernel Linux memorizza le informazioni sul kernel in esecuzione in due luoghi, tramite file system speciali:(Una sintesi di questi)
- Il vecchio procfs che monta
/proc
(verificabile tramitemount -l -t proc
) - Il sysfs più recente che monta
/sys
(verificare tramitemount -l -t sysfs
)
Attenzione
Siate cauti nell'esaminare i file qui menzionati, la loro modifica può cambiare il comportamento del kernel in esecuzione!
Queste due interfacce consentono di visualizzare e modificare i parametri del kernel in esecuzione.
Notare che se si esegue un ls
-l su alcuni di questi file, essi vengono visualizzati come di lunghezza "0", ma se li si estrae con cat
, essi contengono effettivamente dei dati. La maggior parte di essi sono ASCII e modificabili, ma alcuni sono binari. In entrambi i casi, comandi come file
o stat
restituiranno in genere solo "file vuoto" o "0" per le dimensioni, anche se mostreranno altre informazioni.
I programmi preferiti e standard per interagire con queste funzioni sono lsmod
, modinfo
, e sysctl
, tra gli altri.
sysctl -a | grep -i <keyword>
lsmod | grep -i <keyword>
modinfo <module>
Vedere la versione della "release del kernel" attualmente in uso:
uname -r
e sostituire il suo valore di ritorno nei comandi usando $(uname -r)
RHEL e distribuzioni derivate (Fedora, CentOS Stream, Scientific Linux, RockyLinux, Almalinux, ecc.) memorizza anche la configurazione usata per i kernel installati avviabili nella directory /boot
usata da Grub2 come file ASCII:
/boot/config-<kernel-release>
Per verificare la configurazione del kernel in esecuzione per un determinato valore:
cat /boot/config-$(uname -r) | grep -i <keyword>
I risultati mostreranno:
- "=m" se compilato come modulo del kernel
- "=y" se compilato staticamente nel kernel
- "is not set" se l'impostazione è stata commentata
- un valore numerico
- un valore stringa quotato
Alcune distribuzioni, come Gentoo e Arch, utilizzano il modulo configs
del kernel per fornire /proc/config.gz
come impostazione predefinita:
zcat /proc/config.gz | grep -i <keyword>
zgrep <keyword> /proc/config.gz
Per qualsiasi distribuzione, se il kernel in esecuzione ha impostato sia CONFIG_IKCONFIG
che CONFIG_IKCONFIG_PROC
e se
ls -lh /sys/module/configs
esiste ed è eseguibile (ricercabile nel caso di una directory), allora si può creare /proc/config.gz
con questo comando se non è presente:
modprobe configs
Repository abilitati
Questo documento non copre attualmente i pacchetti del kernel che potrebbero provenire da repository non predefiniti, come ad esempio:
appstream-debug, appstream-source, baseos-debug, baseos-source, o devel
I pacchetti kernel-devel
installano il file di configurazione utilizzato per compilare ogni pacchetto standard del kernel installato come file ASCII nel seguente percorso:
/usr/src/kernels/<kernel-release>/.config
A questo file si accede più comunemente tramite un percorso collegato in symlink fornito dai pacchetti kernel-core
:
/lib/modules/<kernel-release>/build/ -> /usr/src/kernels/<kernel-release>/
Se avete installato il pacchetto kernel-debug-devel
, avrete anche questa directory:
/usr/src/kernels/<kernel-release>+debug/
Per i dettagli sui valori di configurazione usati per costruire un kernel installato, si può consultare uno dei seguenti documenti:
/lib/modules/<kernel-release>/config
/lib/modules/<kernel-release>/build/.config
/usr/src/kernels/<kernel-release>/.config
/usr/src/kernels/<kernel-release>+debug/.config
I moduli configurati per il kernel in esecuzione, compilati come builtin (cioè staticamente nel kernel stesso) o come moduli caricabili, sono elencati in sottodirectory denominate come il nome del modulo in:
/sys/module/
Per ogni release del kernel installata è possibile esaminare questi file per vedere quali valori sono stati compilati in quel kernel e quale versione di GCC è stata usata per compilarlo:
cat /lib/modules/$(uname -r)/config | grep -i <keyword>
cat /lib/modules/$(uname -r)/build/.config | grep -i <keyword>
cat /usr/src/kernels/$(uname -r)/.config | grep -i <keyword>
cat /usr/src/kernels/$(uname -r)+debug/.config | grep -i <keyword>
ls -lh /sys/module/ | grep -i <keyword>
È possibile verificare le dipendenze dei moduli del kernel nel file:
/lib/modules/<kernel-release>/modules.dep
ma è più facile leggere o analizzare l'output del campo "Used-by" in lsmod
.
Riferimento:¶
depmod, ls, lsmod, modinfo, modprobe, modules.dep, namespaces, procfs, sysctl, sysfs, uname
Author: David Hensley
Contributors: Steven Spencer, Franco Colussi