Vai al contenuto

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 tramite mount -l -t proc)
  • Il sysfs più recente che monta /sys (verificare tramite mount -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