Spesso quando si parla di distribuzioni si usa il termine Linux. Questa abbreviazione, che nasce sovente dalla pigrizia di chi scrive o di chi ne parla, è in realtà errata. Il termine corretto con cui definire il sistema operativo nel suo complesso è GNU/Linux (o per alcuni GNU+Linux). Linux, infatti, fa riferimento solo ad una componente, ovvero il kernel. In questa mini guida, vi parlerò di che ruolo ricopre e di come gestirne i parametri con sysctl.
Kernel Linux: a cosa serve e come si configura
Il kernel è un componente essenziale di un sistema operativo, la sua funzione principale consiste nel collegare il software e l’hardware di un dispositivo. Volendo essere più precisi, i compiti principali sono i seguenti:
- Inizializzare ed avviare il sistema;
- Implementare i filesystem locali o di rete;
- Controllare l’accesso all’hardware e rendere disponibili al sistema operativo i dispositivi collegati utilizzando i driver;
- Effettuare lo scheduling dei processi e gestire la memoria;
- Gestire l’I/O tra le applicazioni ed i dispositivi di archiviazione;
- Funzioni di sicurezza.
Parlando di avvio di sistema, ad esempio, vi sarà sicuramente capitato di avere a che fare con i parametri di avvio del kernel. Si tratta di stringhe di testo che vengono interpretate dal sistema per abilitare, o disabilitare, determinate funzionalità. Un elenco con la spiegazione dei vari parametri può essere trovato in man bootparam. Esempi possono essere:
- Root: specifica il filesystem di root;
- Ro: monta il root device come read only;
- Quite: disabilità molti messaggi di log.
Molti di voi, ad esempio, hanno una scheda video Nvidia. In caso di errori durante la fase di installazione di Linux una possibile soluzione è quella di aggiungere ad una determinata riga di grub la voce nomodeset. Per visualizzare proprio con quale riga di comando è stato avviato il sistema, la direttiva da utilizzare è:
cat /proc/cmdline
Sysctl e /proc: due facce della stessa medaglia
Sysctl può essere utilizzata per leggere e regolare i parametri del kernel in runtime. Per visualizzare i valori di tutti i parametri, utilizzate la direttiva sysctl -a. Ogni riga corrisponde ad un particolare file dello pseudo filesystem /proc/sys, di cui vi avevo parlato già in questo articolo. Ad esempio, il valore associato al pid_max (il valore massimo raggiungibile dal process ID, superato il quale si ricomincia da un valore più basso) può essere ottenuto specularmente nelle seguenti modalità:
sysctl kernel.pid_max cat /proc/sys/kernel/pid_max
La modifica al runtime di questo valore, quindi, può essere effettuata utilizzando uno dei seguenti metodi:
#tramite sysctl sudo sysctl kernel.pid_max=2000 #manualmente su echo 2000 > /proc/sys/kernel/pid_max #questa istruzione, in questa forma, è possibile solo se eseguita dal root
Per avere maggiori dettagli su come usare sysctl, basta far riferimento alla relativa pagina del manuale, accessibile tramite l’istruzione man sysctl.
Seguiteci sul nostro canale Telegram, sulla nostra pagina Facebook e su Google News. Nel campo qui sotto è possibile commentare e creare spunti di discussione inerenti le tematiche trattate sul blog.