o Storia o Nascita - Perche` o Sviluppo iniziale o Blocchi fondamentali Linux nasce all'inizio degli anni novanta dalla mente di uno studente dell'universita` di Helsinki di nome Linus Torvalds. Quello che voleva creare lui era un sistema operativo libero perche` MINIX non gli soddisfaceva troppo. Dopo vari mesi di sviluppo venne pubblicata la prima versione (0.01) in settembre 1991, e la 0.02 il 5 Ottobre 1991. A poco a poco il progetto ha iniziato ad interessare sempre piu` gente, e quello che Torvalds ha creato quasi per studio si stava trasformando in qualcosa sempre piu` professionale e funzionante. Ecco alcune tappe importanti: o Dicembre 1991: Viene rilasciata la versione 0.11 ed e` la prima versione che si riesce a compilare direttamente usando Linux. o Febbraio 1992: Viene rilasciata la versione 0.12 ed e` la prima rilasciata sotto licenza GNU General Public License(GPL). o Maggio 1992: Viene creata la prima "distribuzione Linux", chiamata Softlanding Linux System (SLS). o Marzo 1992: La versione 0.95 e` stata la prima a riuscire a far girare il server X. Viene fatto il "salto" dalla 0.1x alla 0.9x perche` sembrava che la 1.0 fosse imminente una volta riusciti a far funzionare X, ma sono stati un po` troppo ottimistici, infatti sono uscite ben 15 versioni di linux 0.99. o 1993: Piu` di 100 sviluppatori lavorano al kernel Linux (come hobby). o 14 Marzo 1994: La versione 1.0.0 viene rilasciata. o 1995: Viene fatto il porting del kernel per le architetture Alpha e SPARC. o 1996: Viene rilasciata la versione 2.0 del kernel. o Metodo di sviluppo Il kernel Linux attualmente e` il software con lo sviluppo piu` rapido di tutti gli altri software conosciuti, ed inoltre ci sono varie migliaia di sviluppatori. Per gestire questo enorme lavoro e` stata creata un'ottima struttura a piramide dove in cima alla piramide c'e` Torvalds, che viene chiamato "Benevolent Dictator For Life". Il kernel e` suddiviso in molte parti, ad esempio i vari file system, le varie architetture, il networking, i vari driver etc. Per queste varie parti esiste un maintainer che conosce bene il suo ramo e sa quali modifiche accettare dagli sviluppatori e quali no (e ovviamente sviluppa anche lui stesso). Le modifiche poi vengono "inviate" a Torvalds che le include (spesso dopo averle controllate) nella versione ufficiale del kernel. o Versioni Questo metodo di sviluppo e` sempre stato cosi` fin dagli inizi, quando varie persone iniziarono a contribuire allo sviluppo del kernel, pero` nel corso degli anni (e delle versioni) ci sono stati molti cambiamenti. Fino alla versione 2.0.0 le nuove modifiche venivano tutte introdotte nel kernel e quando il kernel era abbastanza stabile usciva la nuova versione con quei cambiamenti. Questo pero` ha portato ad un sacco di svantaggi, tra cui il fatto che se c'era un bug in una versione bisognava aspettare la versione successiva perche` questo venisse risolto, e quindi aspettare vari mesi. Dalla versione 2.0.0 allora si e` deciso per un altro metodo di sviluppo: se la seconda cifra e` pari allora e` la versione stabile del kernel, mentre se e` dispari e` la versione in sviluppo. Il metodo di sviluppo e` cambiato quindi, ed e` diventato il seguente. Una volta uscita la versione 2.0.0 e` nata anche la versione 2.1.0, e se usciva una novita` o un nuovo driver o altro, veniva inserito nella versione 2.1.0, mentre se veniva trovato un problema allora il bugfix veniva inserito sia nella 2.0.0 che nella 2.1.0. Una volta che la 2.1.0 e` abbastanza stabile allora quella diventa la 2.2.0. Questo metodo di sviluppo ha continuato fino alla versione 2.6.0, quando ci si e` accorti che anche questo metodo aveva delle carenze, perche` ad esempio per poter usare un nuovo driver o una nuova funzionalita` bisognava aspettare vari mesi (o anni), e quindi il kernel stabile diventava presto obsoleto e molte distibuzioni iniziavano ad avere il proprio kernel inserendo varie cose dalla versione di sviluppo alla versione stabile. In questo modo pero` ogni sviluppatore pagato dall'azienda lavorava sul kernel dell'azienda, e non portava miglioramenti al kernel ufficiale. Per risolvere questi problemi si e` deciso di rilasciare una nuova versione stabile del kernel (circa) ogni 3 mesi, e cambiera` solo la terza cifra (quindi ad esempio 2.6.1, 2.6.2 ecc). Una volta uscita una nuova versione stabile del kernel inizia un periodo di due settimane chiamato "merge window", dove tutti i maintainer mandano a Torvalds tutti i grossi cambiamenti che verranno introdotti nella versione successiva. Una volta conclusa la "merge window" Torvalds rilascia la prima release candidate della versione successiva (e ogni settimana circa ne rilascia una). Da quel momento li` non si possono aggiungere feature al kernel successivo, ma si lavora sullo stabilizzare quelle feature che sono state introdotte durante la merge window, e dopo circa 6 o 7 release candidate (cambia a seconda di quante nuove feature vengono introdotte e quanti bug vengono scoperti) esce la nuova versione stabile. Parallelamente pero` c'e` anche un altro lavoro, che viene svolto da uno sviluppatore chiamato Greg Kroah-Hartman, che e` quello di aggiornare la versione stabile del kernel, incrementando la quarta cifra. Per esempio, esce il kernel stabile 2.6.35, pero` successivamente viene trovato un bug per quel kernel, allora Greg fara` uscire la versione 2.6.35.1 che risolve quel bug (e altri). Pero` come fa a scoprire quali modifiche inserire e quali no? Perche` si rischia di correggere un bug e crearne un altro. Per inserire una modifica di sicurezza al kernel stabile ci sono varie regole, e quella piu` importante e` che la modifica sia gia` stata inclusa nel ramo di sviluppo (quindi nella release candidate), altrimenti non puo` essere inserita nella versione stabile. In questo modo la modifica puo` essere controllata da piu` persone, ed inoltre non si crea una divisione tra il ramo di sviluppo e quello del kernel stabile come invece si era creata con i kernel 2.0, 2.2 e 2.4. o Kernel 3.0 Dopo il kernel 2.6.39 si e` cambiata la numerazione, ed e` uscito il kernel 3.0, pero` e` importante sapere che e` cambiata solo la numerazione, non e` cambiato niente nel metodo di sviluppo rispetto alla versione 2.6, a differenza dai cambiamenti di versione precedenti. Semplicemente Torvalds essendo il "Benevolent Dictator For Life" ha deciso che il numero "39" era gia` troppo alto, e quindi era meglio cambiare la prima cifra. Inoltre con questo cambio e` stata eliminata l'ultima cifra, quindi i kernel stabili saranno i kernel 3.0, 3.1, 3.2 etc., e le varie versioni stabili successive prenderanno la terza cifra invece che la quarta (ad esempio 3.1.1 o 3.1.2). o Come reperire i kernel Il sito ufficiale da dove si puo` scaricare l'ultimo kernel ufficiale e` http://kernel.org. In alto a destra si puo` trovare sempre l'ultima versione stabile, e poi sotto si possono trovare altre versioni, come ad esempio delle versioni piu` vecchie sempre stabili e ancora mantenute oppure l'ultima versione di sviluppo (rc = release candidate). Per rimanere aggiornati sulle ultime modifiche fatte si puo` seguire la versione di git del kernel e si puo` scaricare il repository con il seguente comando git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git e poi successivamente basta il comando git pull per scaricare gli ultimi aggiornamenti. Se si vuole contribuire allo sviluppo del kernel e non si e` sviluppatori ma semplici utenti si puo` semplicemente iniziare a provare il nuovo kernel dalla rc4 o rc5 che dovrebbe essere sufficientemnete stabile da funzionare tutto correttamente, altrimenti se viene riscontrato un bug e` bene avvisare gli sviluppatori che lo correggano prima che esca la nuova versione stabile. o Kernel.org attack Purtroppo recentemente c'e` stato un attacco sui server di kernel.org, quindi ci sono stati (e ci sono tutt'ora) vari problemi, e gli aggiornamenti sulla pagina principale vanno molto a rilento (perche` ci sono altre priorita` al momento). Per reperire gli ultimi kernel quindi non si trovano sulla pagina principale ma si possono trovare sull'ftp di kernel.org. Ad esempio, per scoprire qual'e` l'ultima versione stabile basta andare sul sito ftp://ftp.kernel.org/pub/linux/kernel/v3.x/ e cercare la versione piu` recente (ora e` la 3.1). Una volta trovata ci sono tre file della stessa versione con differenti metodi di compressione, potete scaricare quello che vi piace di piu`. Se invece volete provare una versione di testing dovete andare sul sito ftp://ftp.kernel.org/pub/linux/kernel/v3.x/testing/ e li` potete scaricare l'ultima release candidate. Per seguire lo sviluppo comunque consiglio caldamente di scaricare il repository git e in quel modo avrete in locale tutti i kernel dalla versione 2.6.12-rc2 all'ultima modifica effettuata.