![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8434VHlEHSq6au3fMgZbCKG57yLhsmujEcyC-140LfcZ7-Be7B00YF0GganVfgZAV7v5SzRQcffp-UIOCEdpxOVEcrtzLbUkbZhcYmSg0STaBlDt8rRQ9pf18pMV4gzxeln-EaE8m5-Wq/s200/kernel.png)
È possibile scaricare la nuova versione da questo indirizzo.
Il Changelog invece lo trovate in questa pagina.
Il kernel Linux è un software libero distribuito con licenza GNU General Public License; è stato creato nel 1991 da Linus Torvalds. Integrato con il Sistema GNU ha dato vita al sistema operativo GNU/Linux (sebbene spesso sia chiamato semplicemente Linux).
Il kernel è il "cuore" di un sistema operativo (nucleo) e fornisce tutte le funzioni essenziali per il sistema, in particolare la gestione della memoria, delle risorse del sistema e delle periferiche, assegnandole di volta in volta ai processi in esecuzione. La controparte del kernel è la shell, ovvero l'interfaccia utente del sistema, la parte più esterna. I programmi chiedono le risorse al kernel attraverso delle chiamate (system call) e non possono accedere direttamente all'hardware. Il kernel si occupa quindi di gestire il tempo processore, le comunicazioni e la memoria distribuendole ai processi in corso a seconda delle priorità (scheduling).
L'architettura scelta da Torvalds per il kernel (ovvero una struttura monolitica, considerata da alcuni obsoleta a differenza della più moderna architettura a microkernel) fu causa di un dibattito molto acceso con Andrew S. Tanenbaum nel 1992 sul newsgroup comp.os.minix. Sebbene oggi il kernel possa essere compilato in modo da avere un'immagine binaria ridotta al minimo e i driver caricabili da moduli esterni, l'architettura originaria è chiaramente visibile: tutti i driver infatti devono avere una parte eseguita in kernel mode, anche quelli per cui ciò non sarebbe affatto necessario (ad esempio i driver dei file system).
Come ogni progetto che sia software libero, anche il kernel Linux è in continua evoluzione e le nuove release sono reperibili sul sito http://www.kernel.org . La dimensione del kernel Linux cresce in maniera esponenziale, aggiungendo nuovi moduli, nuovo hardware supportato e così via.
Linux è un kernel che supporta il multitasking ed è multi utente. Ciò permette che diversi utenti (con privilegi differenziati) possano eseguire sullo stesso sistema diversi processi software in simultanea. Attualmente linux supporta gran parte dell'hardware disponibile per PC e supporta un numero enorme di architetture (tra cui SPARC, PowerPC e le più moderne CPU a 64 bit).
Dato che il codice sorgente di Linux è disponibile a tutti, è ampiamente personalizzabile, al punto da rendere possibile, in fase di compilazione, l'esclusione di codice non strettamente indispensabile. La flessibilità di questo kernel lo rende adatto a tutte quelle tecnologie embedded emergenti e anche nei centri di calcolo distribuito (cluster Beowulf) fino ad essere incorporato in alcuni videoregistratori digitali e nei telefoni cellulari.
Storia
Nell'Aprile del 1991, Linus Torvalds, all'età di 21 anni, iniziò a lavorare su alcune semplici idee per un sistema operativo. Iniziò con un contest switch programmato in assembly su processore Intel 80386 e un driver da terminale. A questo punto, il 25 agosto 1991, Torvalds scrisse un post[1], di cui è riportata una traduzione:
« Sto programmando un sistema operativo (gratuito e solo per hobby, non vuole essere grande e professionale come GNU) per cloni di AT 386(486). E' in preparazione da Aprile, e sta iniziando a funzionare. Mi piacerebbe sapere cosa vi piace e non vi piace in Minix, siccome il mio Sistema Operativo gli assomiglia in parte (fra le altre cose, lo stesso layout fisico del filesystem, per ragioni pratiche). Ho convertito la shell bash (v.1.08) e GCC (v.1.40), e sembrano funzionare. Ciò denota che otterrò qualcosa di funzionante in pochi mesi e mi piacerebbe sapere quali funzionalità vuole la maggior parte della gente. Ogni suggerimento è ben accetto, anche se non posso promettervi che lo implementerò. »
Linus aveva iniziato a programmare il kernel su un'architettura Minix, un sistema operativo libero programmato dal professor Andrew S. Tanenbaum, che poi però criticò molto il suo lavoro.
Dopo la pubblicazione di questo post, molte persone collaborarono allo sviluppo del progetto, e il 5 ottobre 1991 Linus rilascia la versione 0.02 del kernel, circa un mese dopo del rilascio della versione 0.01, che però non ebbe grande successo. Egli scrisse, in occasione del rilascio, il seguente post:
« Rimpiangete i bei giorni di Minix 1.1, quando gli uomini erano uomini e scrivevano da soli i driver?
Vi manca un bel progetto e morite dalla voglia di spezzarvi le ossa con un Sistema Operativo che potete provare a modificare secondo le vostre necessità? Trovate frustrante che su Minix funziona tutto? Non passate più intere notti per ottenere un programma che lavora meravigliosamente? Allora questo post dovrebbe essere fatto apposta per voi
Come ho detto un mese fa, sto lavorando su una versione libera di un clone di Minix per computer AT-386. Ha finalmente raggiunto uno stadio in cui è usabile (sebbene non possa dipendere da ciò che volete), e sono favorevole a rendere pubblici i sorgenti per la grande massa. E' solo la versione 0.02 (è già pronta una patch molto piccola), ma ho avviato con successo la shell bash/GCC/GNU-make/GNU-sed/compress eccetera.
I sorgenti di questo mio progetto possono essere scaricati nic.funet.fi nella cartella /pub/OS/Linux. La cartella contiene anche qualche file README e un paio di binari da eseguire con Linux (bash, update and gcc, cosa si può volere di più :-). È fornito il sorgente completo del kernel dato che non è stato utilizzato codice proveniente da minix. Il sorgente delle librerie è solo parzialmente libero e non è quindi al momento distribuibile. È possibile compilare il sistema così com'è ed è stato riconosciuto funzionante. Heh. I sorgenti dei binari (bash e gcc) possono essere trovati nello stesso posto in /pub/gnu.
ATTENZIONE! NOTA! Questi sorgenti necessitano di minix-386 per essere compilati (e gcc-1.40, o, non è stato testato, 1.37.1), e impostati correttamente per il funzionamento, quindi non è ancora un sistema indipendente per chi non avesse minix. Ci sto lavorando. Devi anche essere parecchio esperto per impostarlo correttamente, quindi per quelli che speravano in un'alternativa a minix-386, per favore ignoratemi. Al momento è indirizzata ad esperti interessati ai sistemi operativi e 386 con accesso a minix.
Il sistema necessita di un disco rigido AT-compatibile (IDE va bene) e EGA/VGA. Se siete interessati vi prego di scaricare il README e le note di rilascio, e/o spedirmi un'email per ulteriori informazioni.
Riesco (più o meno) a sentirvi mentre vi chiedete "perché?". Hurd uscirà tra un anno (o 2, o il prossimo mese, chi lo sa), e ho già minix. Questo è un programma per programmatori scritto da un programmatore. Mi è piaciuto scriverlo, e a qualcuno potrebbe piacere darci un'occhiata e anche modificarlo per le proprie esigenze. È abbastanza piccolo da capire, usare e modificare, e sono curioso dei vostri commenti.
Mi piacerebbe anche sentirli da chiunque abbia scritto qualsiasi utility o funzione di libreria per minix. Se i vostri sforzi sono liberamente distribuibili (sotto copyright o anche di pubblico dominio), mi piacerebbe sentirvi, in modo che possa aggiungerli al sistema. Sto usando Earl Chews estdio al momento (grazie per un sistema carino e funzionante Earl), e lavori simili saranno molto ben accetti.
Il vostro C sarà ovviamente lasciato intatto. Scrivetemi due righe se volete lasciarmi usare il vostro codice. »
Fu dato inizio ad un newsgroup alt.os.linux e il 19 gennaio 1992 fu inserito il primo post. Nel 31 marzo 1992, alt.os.linux divenne comp.os.linux.
Presto fu effettuato il portin di X Window System su Linux. La prima versione di Linux ad essere capace di eseguire X fu la 0.95 nel Marzo del 1992. Questo grande salto di numerazione nella versione (da 0.1x a 0.9x) fu dovuto al fatto che si sentiva molto vicina una versione 1.0 senza nessun pezzo mancante. Tuttavia questa sensazione era troppo ottimista e dal 1993 fino agli inizi del 1994 furono rilasciate 15 versioni della versione 0.99.
Il 14 marzo 1994 fu rilasciato Linux 1.0.0, con 176.250 linee di codice. A Marzo del 1995, fu rilasciato Linux 1.2.0 (310,950 linee di codice).
La versione 2 di Linux, rilasciata il 9 giugno 1996, fu seguita da altre versioni maggiori sotto il prefisso della versione 2:
* 25 gennaio 1999 - Rilascio di Linux 2.2.0 (1,800,847 linee di codice).
* 18 dicembre 1999 - Furono pubblicate le patch per mainframe IBM 2.2.13, che permisero a Linux di essere installato su macchine di livello enterprise.
* 4 gennaio 2001 - Rilascio di Linux 2.4.0 (3,377,902 linee di codice).
* 17 dicembre 2003 - Rilascio di Linux 2.6.0 (5,929,913 linee di codice).
* 9 ottobre 2008 - Rilascio di Linux 2.6.27 (9,709,868 linee di codice)[5].
* 24 dicembre 2008 - Rilascio di Linux 2.6.28 (10,195,402 linee di codice).