Mentre è comune pensare a Linux come a un sistema operativo è più preciso comprendere Linux come il kernel di un sistema operativo.
Tutti i sistemi operativi hanno un kernel.
Anche se non ne parliamo spesso tanto quanto facciamo con il kernel Linux.
Il kernel Linux è un programma open source che è stato costruito e modificato nel corso degli anni da migliaia di collaboratori.
È stato pubblicato per la prima volta da Linus Torvalds nel 1991.
Ed è stato creato in risposta alle licenze restrittive che gravavano su altri sistemi operativi all’epoca.
La licenza che si applica al kernel Linux ne consente l’uso e la distribuzione libera.
E questo ha portato il kernel Linux ad essere reso disponibile in una grande varietà di distribuzioni Linux, di cui parleremo più avanti.
Un kernel è un software che comunica con l’hardware del computer al fine di fornire ai programmi e quindi agli utenti l’accesso a queste risorse in modo che possano fare ciò che devono fare.
Un kernel può funzionare da solo, anche se non è molto utile senza programmi che comunicano con esso.
E non possiamo eseguire programmi senza un kernel che prende richieste e informazioni e le traduce nell’hardware del sistema.
Il kernel è ciò che ci permette di usare un computer, ma è solo una parte di un sistema operativo funzionante.
Possiamo pensare a questo usando tre livelli.
1 Prima c’è l’hardware, la memoria, la CPU, l’archiviazione, la scheda di rete e così via.
2 Il kernel comunica con questo hardware e presenta una serie di chiamate di sistema o syscall a programmi in esecuzione in quella che chiamiamo user land o user space. Un’area metaforica al di fuori dello spazio del kernel in cui opera il software in esecuzione sul sistema. Immagina l’azione di salvare un file in un editor di testo. Quando faccio clic su Salva, il software dell’editor di testo utilizza una libreria dello spazio utente per dire al kernel cosa salvare e dove salvarlo.
3 Il kernel comunica quindi queste informazioni al supporto di memorizzazione e riporta che l’operazione è riuscita.
I moderni kernel Linux sono in grado di comunicare con una grande varietà di hardware del computer e possono fornire un numero sempre crescente di funzioni utili per i programmi da utilizzare.
Il kernel Linux può essere eseguito su piccoli dispositivi come circuiti stampati destinati all’uso amatoriale, su super computer, risolvendo i misteri dell’universo su desktop, laptop, dispositivi mobili. e persino in auto.
Di solito, queste applicazioni impiegano un kernel personalizzato che è stato leggermente modificato per funzionare su diversi tipi di processori o che hanno rimosso il supporto per hardware non necessario. Ma sono ancora tutti il kernel Linux. Pensare al kernel può sembrare piuttosto tecnico. Anche se non dobbiamo preoccuparcene, se abbiamo appena iniziato con Linux o se useremo Linux in un modo che non implichi lavorare direttamente con il kernel.
Per la maggior parte degli utenti, il kernel si trova in background occupandosi di ciò che deve essere fatto. Alcuni utenti Linux, in particolare i progettisti hardware e alcuni tipi di programmatori e amministratori di sistema, interagiranno direttamente con il kernel.
In alcuni casi, le persone che lavorano con il kernel dovranno modificare il codice sorgente del kernel, aggiungere nuove funzionalità o apportare modifiche al suo funzionamento. E come ho detto prima, è qualcosa che è incoraggiato.
Il kernel Linux è open source e chiunque può scaricare, modificare ed eseguire il codice che fa funzionare il sistema Linux.
Se sei così incline, puoi scaricare il codice sorgente del kernel su kernel.org.
Il kernel è ciò che rende Linux, Linux.
Ma per avere un sistema funzionante in cui possiamo lavorare, abbiamo bisogno di software che interagisca con il kernel.
E abbiamo bisogno di altre configurazioni di supporto per far funzionare un sistema.
Quando un sistema Linux si avvia, passa attraverso un processo in cui viene caricato il kernel e quindi un software chiamato sistema di inizializzazione o gestore di sistema, prende il sopravvento e avvia i programmi per portare il sistema a uno stato in cui possiamo interagire con esso.
Questo sistema di inizializzazione avvia servizi come rete, archiviazione, a volte un ambiente desktop e cose del genere. Ancora una volta, non dovremmo preoccuparci di questo. Anche se hai intenzione di usare un sistema Linux senza preoccuparti di tutto è utile sapere un po’ del kernel Linux e qual è il suo ruolo.
E se hai intenzione di entrare nei dettagli tecnici e apportare modifiche da solo, Linux è uno dei pochi sistemi operativi che lo rende possibile.