Skip to main content

Qual è il kernel di Linux?

33c3 Console Hacking 2016 [sottotitolato in Italiano] (Giugno 2025)

33c3 Console Hacking 2016 [sottotitolato in Italiano] (Giugno 2025)
Anonim

Per utenti occasionali e fan meno che per hardcore, Linux è un sistema operativo. Per i puristi, tuttavia, il titolo "Linux" è riservato al kernel che alimenta il sistema operativo. Se sei curioso di sapere qual è il kernel di Linux, rispondiamo a questa domanda con un occhio al nuovo utente.

Modalità

Prima di spiegare cos'è un kernel, è importante capire i termini "modalità utente" e "modalità kernel". La modalità utente è quando l'esecuzione del codice non ha la possibilità di accedere direttamente all'hardware o alla memoria di riferimento. Per accedere all'hardware e alla memoria, il codice in esecuzione in modalità utente deve delegare le istruzioni alle API (Application Programming Interface) di sistema. La modalità Kernel è quando l'esecuzione del codice ha accesso illimitato a tutto l'hardware ed è riservata alle funzioni più affidabili di un sistema operativo.

Cos'è un kernel?

Ogni sistema operativo ha un kernel. Windows, macOS, iOS, Android, Chrome OS e Linux hanno ciascuno un sistema di basso livello che è responsabile dell'interfaccia di tutte le applicazioni con l'hardware fisico del computer. Senza il kernel, nessuna delle tue applicazioni sarebbe in grado di utilizzare il computer fisico; app come Firefox, Chrome, LibreOffice, MS Office o Outlook non funzionerebbero. Il kernel è anche responsabile per consentire ai processi di scambiare informazioni usando ciò che viene chiamato Inter-Process Communication (IPC).

Esistono (in generale) tre tipi di kernel:

  • Kernel monolitici: questi kernel comprendono CPU, memoria, IPC, driver di periferica, gestione del file system e chiamate al server di sistema. È anche responsabile della distribuzione della memoria di sistema gratuita alle applicazioni. Questi tipi di kernel sono in genere migliori per accedere all'hardware e al multitasking.
  • microkernel: Microkernels ha un approccio minimalista e gestisce solo CPU, memoria e IPC.
  • Kernel ibridi: I kernel ibridi hanno la capacità di decidere cosa vogliono eseguire in modalità utente o kernel. Anche se questo offre il meglio di entrambi i mondi, richiede molto di più dai produttori di hardware per creare driver che servono all'interfaccia tra codice in esecuzione e hardware.

Linux usa un kernel monolitico open source, mentre macOS e Windows usano entrambi i kernel ibridi. Il kernel di Linux è stato concepito nel 1991 da Linus Torvalds. Fino ad oggi, Mr. Torvalds continua a essere lo sviluppatore principale del kernel Linux, mentre gli sviluppatori di tutto il mondo contribuiscono al kernel Linux. In realtà, si stima che circa 10.000 sviluppatori, da più di 1.000 aziende, abbiano contribuito al kernel di Linux (dal momento del rilevamento è iniziato nel 2005).

Dov'è il kernel?

Se apri una finestra di terminale ed esegui il comando ls / boot, vedrai un file chiamato vmlinuz-VERSION (Dove VERSION è il nome o il numero della release). Il file vmlinuz è il vero kernel Linux avviabile e "z" indica che il kernel è compresso; quindi invece di vmlinux abbiamo vmlinuz.

All'interno di tale directory / boot ci sono altri importanti file del kernel, come initrd.img-VERSION, system.map-VERSION e config-VERSION (dove VERSION è un nome o un numero di versione). Questi altri file hanno i seguenti scopi:

  • initrd: usato come un piccolo disco RAM che estrae ed esegue il vero file del kernel.
  • system.map: utilizzato per la gestione della memoria, prima del caricamento del kernel.
  • config: istruisce il kernel su quali opzioni e moduli caricare.

moduli

Senza moduli, il kernel non sarebbe molto utile. I moduli attivano efficacemente i driver necessari per comunicare con l'hardware senza consumare tutta la memoria del sistema. I moduli aggiungono anche funzionalità al kernel, come comunicare con le periferiche, gestire i file system, la sicurezza, ecc. È possibile elencare, aggiungere e rimuovere moduli nel kernel con i seguenti comandi:

  • lsmod elencherà tutti i moduli del kernel attualmente caricati.
  • insmod caricherà un modulo del kernel nel kernel in esecuzione.
  • rmmod scaricherà un modulo dal kernel in esecuzione.

Quindi, con l'aiuto di alcuni semplici comandi, il kernel di Linux può essere abbastanza flessibile.

Il kernel corrente

Al momento, il kernel Linux stabile è 4.18.5, ma non tutte le distribuzioni Linux includeranno il kernel più recente. In effetti, la distribuzione desktop aggiornata del sistema operativo elementare utilizza il kernel 4.15.0-30. Cosa significa quel numero? Nel caso dell'ultimo kernel su SO elementare, significa:

  • 4 è la versione principale
  • 15 è la versione secondaria
  • 0-30 è la revisione

È anche possibile scaricare diverse versioni del kernel Linux da kernel.org e compilarlo da solo. La compilazione del kernel di Linux è un compito lasciato a coloro che sanno davvero cosa stanno facendo. Un kernel compilato in modo errato può rendere impossibile l'avvio di un sistema. Quindi, a meno che non siate pronti per immergervi nell'impegnativo compito di compilare il codice a questo livello, usate il kernel predefinito che viene fornito e aggiornato sulla vostra distribuzione di scelta.