Massimiliano Brolli : 10 Novembre 2021 13:52
Articolo a cura di Pietro Cornelio e Massimiliano Brolli
Precedenti articoli: La storia del Kernel Linux (1 di 2). Da Torvalds alla community hacker
Nel primo articolo abbiamo conosciuto Linus Torvalds, la sua adolescenza e l’interesse smodato verso i computer. Abbiamo anche visto che dopo aver messo mano su un sistema operativo MINIX (che non poteva essere modificato come codice sorgente) si spinse a creare dapprima una shell e successivamente dei driver fino a definire un sistema operativo primordiale che al momento non era ancora autonomo.
Sei un Esperto di Formazione?
Entra anche tu nel Partner program!
Accedi alla sezione riservata ai Creator sulla nostra Academy e scopri i vantaggi riservati ai membri del Partner program.
Per ulteriori informazioni, scrivici ad [email protected] oppure su Whatsapp al 379 163 8765
Supporta RHC attraverso:
Subito dopo la condivisione dell’embrione di quello che poi divenne Linux, al Newsgroup comp.os.minix, tutto iniziò a cambiare rapidamente ed è dal 17 settembre del 1991 che riprendiamo questa entusiasmante storia.
“Non penso che fossero più di una o due le persone che lo provarono”, disse Torvalds in quando “dovevano installare il compilatore speciale, creare una partizione pulita per poterla usare come boot, compilare il mio kernel e poi avviare la shell. Avviare la shell era praticamente tutto ciò che si potesse fare con quella versione.”
Potevi stamparti i sorgenti, che non erano più di 10.000 righe, meno di 100 pagine se le stampavi in caratteri piccoli. Ari Lemke si occupò di far arrivare il sistema operativo sul sito ftp, e detestava il nome Freax che gli aveva affibiato Torvalds.
Preferiva l’altro nome – Linux – quindi depositò il codice sorgente all’interno di una directory chiamata “Linux”; residente all’interno di “pub/OS/Linux” .
Torvalds sistemò alcuni bachi, come quello che causava il blocco quando veniva esaurita la memoria e riuscì a portare il compilatore GCC sul sistema operativo Linux in modo da poter compilare piccoli programmi.
Il che voleva dire che gli utenti non avrebbero avuto bisogno di caricare il compilatore GCC prima di avviare il sistema operativo Linux. All’inizio di ottobre ci fu il rilascio della versione 0.02 che comprendeva la sistemazione di alcuni bug e qualche programma aggiuntivo. Il mese dopo Torvalds rilasciò la versione 0.03.
Linus Torvalds affermo anni dopo:
“mi sarei potuto fermare alla fine del 1991. Avevo fatto un sacco di cose che mi sembravano interessanti. Non funzionava tutto alla perfezione, ma secondo me nel mondo del software è facile perdere interesse per un progetto una volta che ne hai risolto i problemi fondamentali. Ed era ciò che stava succedendo a me. Il debug di un software non è un’attività divertentissima. Poi accaddero due cose che mi fecero continuare. Primo: distrussi per errore la mia partizione Minix; Secondo: la gente continuava a mandarmi i propri pareri sul sistema.
All’epoca facevo il boot in Linux ma utilizzavo Minix come ambiente principale di sviluppo. Usavo Linux soprattutto per leggere le e-mail e le news dal computer dell’università tramite l’emulazione di terminale che avevo scritto. Il computer dell’università era sempre occupato, così avevo scritto un programma che lo chiamava automaticamente. Ma in dicembre mi collegai per errore al mio disco fisso invece che al modem. Stavo cercando di collegarmi a /dev/tt1, la linea seriale. Feci un errore e mi collegai in automatico a /dev/hda1, il disco fisso. Il risultato finale fu che sovrascrissi per errore le parti più critiche della partizione in cui avevo Minix. Fu a quel punto che dovetti prendere una decisione: potevo reinstallare Minix oppure cogliere l’occasione al volo e dire a me stesso che Linux era abbastanza buono da poterlo sostituire. Avrei scritto i programmi per compilare Linux direttamente al suo interno e quando avessi sentito il bisogno di Minix avrei semplicemente aggiunto quella funzione a Linux. Abbandonare l’ambiente di partenza e rendere veramente indipendente un programma è un passo concettuale notevole, tanto che alla fine di novembre rilasciai la nuova versione chiamandola .10. Qualche settimana più tardi venne la versione 0.11”.
Da li in poi, dopo l’interessamento della community a Linux, ecco che una serie di persone si unirono al progetto, dando una mano a Torvalds. Di seguito riportiamo, presi dai file C, i nomi dei primi programmatori che aiutarono Torvalds, presi dall’head dei sorgenti della versione di Linux 0.11. D fatto al momento fu soltanto “Theodore Ts’o”.
Theodore Ts’o, il primo programmatore che si unì a Torvalds sul kernel Linux
Ecco che Linus Torvalds inizia a implementare le prime importanti funzioni per risolvere problemi degli utenti e disse:
“Ricordo che in dicembre ci fu un tizio in Germania che aveva solo 2 megabyte di RAM e stava cercando di compilare il kernel ma non riusciva a far girare il GCC perché all’epoca questo compilatore aveva bisogno di più di un megabyte. Mi chiese se Linux poteva essere compilato con un compilatore meno pesante, che non avesse bisogno di tutta quella memoria. Così decisi che anche se io non avevo bisogno di quella funzione in particolare, l’avrei implementata per lui. Si chiama page-to-disk e significa che anche se uno ha solo 2 mega di RAM può simulare di averne di più usando il disco come memoria. Eravamo più o meno a Natale del 1991. Ricordo che il 23 dicembre stavo cercando di far funzionare il page-to-disk. Il 24 dicembre funzionava abbastanza bene, ma ogni tanto mandava in blocco la macchina. Il 25 era a tutto posto. Quella fu la prima funzione che aggiunsi per soddisfare i bisogni di qualcun altro. E ne ero fiero.”
Ma ogni giorno che passava, la comunità degli utenti di Linux diventava più grande. Torvalds riceveva e-mail da posti che aveva sognato di visitare, come l’Australia e gli Stati Uniti. Il page-to-disk era una cosa notevole, perché Minix non l’aveva mai fatto. Infatti venne incluso all’interno della versione 0.12, che venne rilasciata la prima settimana di gennaio 1992.
La gente cominciò subito a confrontare Linux non solo con Minix, ma anche con Coherent, un piccolo clone di Unix sviluppato dalla Mark Williams Company. Sin dall’inizio, il fatto di aggiungere il page-to-disk portò Linux un passo avanti rispetto alla concorrenza. Fu a quel punto che Linux decollò.
All’improvviso c’erano persone che passavano da Minix a Linux. All’epoca Linux non faceva tutte le cose che faceva Minix, ma faceva la maggior parte delle cose che interessano davvero alla gente. E aveva questa funzione che in molti trovavano davvero utile: con il page-to-disk potevi far girare programmi più grossi rispetto alla tua memoria.
Torvalds disse:
“Il fatto è che per rendere Linux utilizzabile mi ero basato su una serie di strumenti distribuiti liberamente in internet: anch’io avevo lavorato salendo sulle spalle dei giganti. Il più importante di questi free software era il compilatore GCC, con un copyright in General Public License, la creazione di Richard Stallman universalmente conosciuta come GPL (o «copyleft»). Così abbandonai il mio vecchio copyright e adottai la GPL, un documento scritto da R. Stallman con la supervisione di alcuni avvocati (e dato che c’entrano degli avvocati, è lungo parecchie pagine). Il nuovo copyright venne incluso nella versione 0.12, ma ricordo di essere rimasto sveglio la notte dopo il rilascio, tormentato dall’idea dell’interesse commerciale che il sistema avrebbe suscitato”.
Tutta quell’attenzione non fu soltanto positiva. Torvalds disse che sebbene non aveva mai amato molto i confronti, fu costretto a difendere Linux quando Andrew Tanenbaum si mise ad attaccare Linux, in quanto stava soppiantando il suo.
Interfaccia grafica di MINIX di qualche anno dopo, molto simile a Windows 95
Erano entrambi dei nerd, per cui tutto questo scambio avvenne tramite e-mail. Torvalds disse relativamente a questa questione:
“Chi poteva volergliene se gli stavano girando vorticosamente? Prima che venissero creati i newsgroup dedicati a Linux, io usavo continuamente i newsgroup di Minix per fare degli annunci che riguardavano Linux o per trovare persone a cui interessasse il sistema operativo. Perché mai Andrew avrebbe dovuto gradire la cosa? Aveva idee opposte alle mie su come andasse costruito un sistema operativo. All’epoca Andrew faceva parte di una scuola di informatici che sosteneva un approccio microkernel ai sistemi operativi. Aveva realizzato Minix in microkernel e anche Amoeba, il sistema su cui stava lavorando all’epoca, era dello stesso genere. Si trattava di un movimento molto vivace nei tardi anni Ottanta e nei primi anni Novanta. E il successo di Linux era una minaccia. Così Andrew continuava a mandare al newsgroup messaggi assai spiacevoli.”
La teoria alla base del microkernel parte dall’idea che i sistemi operativi sono complessi. Per cui si cerca di eliminare parte della complessità con una forte modularizzazione. Il principio dell’approccio microkernel è che il kernel – che si trova alla base della base della base si un sistema operativo – dovrebbe fare il meno possibile.
La sua funzione principale è comunicare. Tutte le altre cose che un computer offre sono servizi disponibili tramite i canali di comunicazione microkernel. Nell’approccio microkernel lo spazio dei problemi va suddiviso al punto che nessuna sua parte sia complessa. Torvalds trovava questo approccio stupido.
Diceva che le interazioni lo rendevano molto più complesso di quanto potrebbe essere se molti servizi fossero inclusi nel kernel stesso, come avviene in Linux. Un altro problema di Minix era che potevi avere le sorgenti ma le licenze non ti permettevano di farci un granché.
Prendete uno come Bruce Evans, che aveva fatto un bel po’di interventi chirurgici su Minix e l’aveva reso più utilizzabile. Non poteva incorporare i suoi miglioramenti. Si doveva limitare a fare delle patch. Da un punto di vista pratico era un disastro.
Da un punto di vista legale non poteva mettere a disposizione degli utenti un’immagine di boot in modo che questi potessero fare facilmente un aggiornamento. Così gli utenti dovevano seguire un percorso a tappe per ottenere un sistema utilizzabile. Una cosa tremendamente scomoda.
Linus legge a video le email del prof. Tanenbaum
Torvalds iniziò a comunicare con Andrew Tanenbaum all’inizio del 1992. Torvalds disse riferendosi al primo messaggio di Tanenbaum: “Immaginate di collegarvi in rete in una mattina gelida e di trovarvi di fronte la versione non tagliata di questo messaggio”:
Nel 1992 il sistema operativo passò dallo statuto di giocattolo a qualcosa di integrato nella vita delle persone, nelle loro attività, nei loro affari. Il passaggio avvenne nella primavera del 1992, circa un anno dopo che avevo iniziato l’emulazione di terminale, quando la prima versione del sistema di finestre X iniziò a girare sotto Linux.
Questo significava che il sistema operativo era in grado di supportare un’interfaccia grafica che gli utenti potevano utilizzare contemporaneamente su più finestre, grazie al progetto di X window nato al MIT. Questo fu un grande cambiamento.
“Ricordo che ci avevo scherzato sopra con Lars, più o meno un anno prima che accadesse, dicendogli che un giorno avremmo fatto girare X e saremmo stati in grado di fare qualsiasi cosa. Non pensavo che sarebbe successo tanto in fretta. Fu un hacker di nome Orest Zborowski che riuscì a portare X in Linux.”
Il contributo di Orest mise a disposizione non solo le finestre; aprì anche una grande porta verso il futuro. I socket erano utilizzati per la rete locale in modo da consentire il funzionamento del sistema X Window. Era quindi possibile partire da quegli stessi socket per far fare a Linux il grande salto vero le reti esterne.
Senza le reti, Linux era utilizzabile solo da persone che se ne stavano a casa propria e usavano un modem per collegarsi, oppure facevano tutto in locale. Con grande ottimismo si iniziarono a sviluppare le reti Linux sopra i socket originali, anche se non erano stati affatto pensati per i collegamenti di rete.
Torvalds era convinto che l’obbiettivo era vicino tanto che fece un grande salto nello schema di numerazione delle versioni. Nel marzo 1992 avevo pensato di rilasciare la versione 0.13. Invece, con l’interfaccia grafica funzionante, pensò che Linux stesse ormai intorno al 95 per cento del raggiungimento dell’obiettivo, ovvero rilasciare un sistema operativo completo e affidabile, dotato di reti.
Così la nuova release fu la 0.95, ama Linus disse:
“Ragazzi, avevo decisamente corso troppo. Che ingenuo… Le reti sono una brutta bestia e alla fine ci vollero esattamente due anni per metterle a posto, per dare loro una forma che si potesse rendere pubblica. Quando aggiungi le reti all’improvviso introduci una serie di nuovi problemi. Problemi di sicurezza, per esempio. Non sai chi c’è là fuori, né cosa vuoi fare. Devi stare molto attento che qualcun altro non ti mandi in crash il computer inviandoti dei pacchetti spazzatura. Non puoi più controllare chi sta cercando di contattare la tua macchina. E poi molte persone hanno impostazioni di sistema diversissime. Sembrava che saremmo andati avanti così per sempre. “
Alla fine del 1993 Linux aveva delle funzioni di rete quasi utilizzabili, anche se alcune persone avevano dei seri problemi a farle girare.
Non si riusciva a gestire reti che non avessero confini ad 8 bit.
Dato che Torvalds era stato così ottimista nella numerazione della versione 0.95, si ritrovò presto a gestire dei problemi. Nei due anni che ci vollero per arrivare alla versione 1.0, la community dovette fare dei salti mortali con i numeri delle release. Non c’erano molti numeri tra 95 e 100, ma si continuava a rilasciare nuove versioni basate su sistemazioni di bachi o nuove funzionalità.
Quando si arrivò alla versione 0.99, si iniziarono ad inserire ulteriori livelli di release per indicare i livelli delle patch, e poi ci si affidò all’alfabeto.
A un certo si aveva la versione 0.99, livello di patch 15. Poi la versione 0.99, livello di patch 15B e così via. Si fece tutta la trafila fino al livello di patch 15Z. Il livello di patch 16 divenne finalmente la versione di Linux 1.0, il punto in cui il software diventava utilizzabile. Questa versione uscì nel marzo 1994 con grandi squilli di fanfare all’auditorium della facoltà di Informatica dell’Università di Helsinki.
Fonti
https://www.wired.com/2001/10/kernel/