Unix è uno dei sistemi operativi più popolari al mondo grazie alla sua grande base di supporto e distribuzione. È stato originariamente sviluppato come sistema multitasking per minicomputer e mainframe a metà degli anni Settanta. Da allora è cresciuto fino a diventare uno dei sistemi operativi più usati ovunque, nonostante la sua interfaccia a volte confusa e la mancanza di standardizzazione centrale.
La vera ragione della popolarità di Unix? Molti hacker ritengono che Unix sia la cosa giusta, l’unico vero sistema operativo. Da qui, lo sviluppo di Linux da un gruppo in espansione di hacker Unix che vogliono sporcarsi le mani con il proprio sistema.
Versioni di Unix esistono per molti sistemi, dai personal computer ai supercomputer come il Cray Y-MP. La maggior parte delle versioni di Unix per personal computer sono abbastanza costose e ingombranti. Al momento di questo scritto, una versione per una sola macchina del System V di AT&T per il 386 costa circa 1500 dollari.
Linux è una versione liberamente distribuibile di Unix, originariamente sviluppata da Linus Torvalds, che ha iniziato a lavorare su Linux nel 1991 come studente all’Università di Helsinki in Finlandia.Linus ora lavora per Transmeta Corporation, una start-up a Santa Clara, California, e continua a mantenere il kernel Linux, cioè il componente principale di livello più basso del sistema operativo.
Linus ha rilasciato la versione iniziale di Linux gratuitamente su Internet, generando inavvertitamente uno dei più grandi fenomeni di sviluppo software di tutti i tempi. Oggi, Linux è scritto e mantenuto da un gruppo di numerosi (se non di più) sviluppatori che collaborano liberamente su Internet; sono nate aziende per fornire supporto a Linux, per confezionarlo in distribuzioni facili da installare, e per vendere stazioni di lavoro preinstallate con il software Linux. Nel marzo 1999, la prima fiera Linux World Expo si è tenuta a San Jose, California, con una presenza di oltre 12.000 persone. La maggior parte delle stime colloca il numero di utenti Linux in tutto il mondo intorno ai 10 milioni (e ci aspettiamo che questo numero sembri piccolo per quando leggerete questo).
Ispirato dal sistema operativo Minix di Andrew Tanenbaum (un altro Unix libero per PC, anche se molto semplice), Linux iniziò come un progetto di classe in cui Linus voleva costruire un semplice sistema Unix che potesse funzionare su un PC basato su 386. Le prime discussioni su Linux furono sul newsgroup Usenet comp.os.minix. Queste discussioni riguardavano principalmente lo sviluppo di un piccolo sistema Unix accademico per gli utenti Minix che volevano di più.
Il primissimo sviluppo di Linux riguardava principalmente le caratteristiche di commutazione dei compiti dell’interfaccia 80386 in modalità protetta, tutto scritto in codice assembly. Linus scrive:
Dopo di che fu una passeggiata: ancora una codifica pelosa, ma avevo alcuni dispositivi, e il debug era più facile. Ho iniziato ad usare il C in questa fase, e certamente accelera lo sviluppo. Questo è anche il momento in cui ho iniziato a prendere sul serio le mie idee megalomani per fare “un Minix migliore di Minix”. Speravo di essere in grado di ricompilarecc sotto Linux un giorno…
Due mesi per la configurazione di base, ma poi solo un po’ più a lungo fino a quando ho avuto un driver del disco (seriamente buggato, ma è successo che funzionasse sulla mia macchina) e un piccolo filesystem. È stato all’incirca quando ho reso disponibile la versione 0.01: non era bella, non aveva un floppydriver, e non poteva fare quasi nulla. Non credo che nessuno abbia mai compilato quella versione. Ma a quel punto mi ero fissato, e non volevo fermarmi finché non avessi potuto buttare fuori Minix.
Nessun annuncio fu mai fatto per la versione 0.01 di Linux. I sorgenti della versione 0.01 non erano nemmeno eseguibili: contenevano solo i rudimenti del sorgente del kernel e presupponevano che si avesse accesso ad una macchina Minix per compilarli e giocarci.
Il 5 ottobre 1991, Linus annunciò la prima versione “ufficiale” di Linux, la versione 0.02. A questo punto, Linus era in grado di eseguirebash (la GNU Bourne AgainShell) e gcc (il compilatore GNU C), ma non funzionava molto altro. Di nuovo, questo era inteso come un sistema per hacker. L’obiettivo primario era lo sviluppo del kernel; nessuno dei problemi di supporto agli utenti, documentazione, distribuzione e così via era stato affrontato. Oggi la situazione è alquanto diversa – la vera eccitazione nel mondo Linux riguarda gli ambienti grafici per gli utenti, i pacchetti di distribuzione facili da installare e le applicazioni di alto livello come le utilità grafiche e le suite di produttività.
Linus ha scritto in comp.os.minix:
Ti struggono per i bei giorni di Minix-1.1, quando gli uomini erano uomini e scrivevano i propri driver per i dispositivi? Siete senza un bel progetto e morite dalla voglia di affilare i denti su un sistema operativo che potete provare a modificare per le vostre esigenze? Trovate frustrante quando tutto funziona su Minix? Niente più notti intere per far funzionare un bel programma? Allora questo post potrebbe fare al caso vostro.
Come ho detto un mese fa, sto lavorando ad una versione gratuita di un simil-Minix per computer AT-386. Ha finalmente raggiunto lo stadio in cui è anche utilizzabile (anche se potrebbe non esserlo a seconda di quello che vuoi), e sono disposto a mettere fuori i sorgenti per una distribuzione più ampia. è solo la versione 0.02 … ma ho eseguito con successo bash, gcc, GNU make, GNUsed, compress, ecc. sotto di essa.
Dopo la versione 0.03, Linus ha portato il numero di versione a 0.10, dato che più persone hanno iniziato a lavorare sul sistema. Dopo diverse altre revisioni, Linus aumentò il numero di versione a 0.95, per riflettere la sua aspettativa che il sistema fosse pronto per un rilascio “ufficiale” molto presto. (Generalmente, al software non viene assegnato il numero di versione 1.0 finché non è teoricamente completo o privo di bug). Questo accadeva nel marzo 1992. Quasi un anno e mezzo dopo, alla fine di dicembre 1993, il kernel Linux era ancora alla versione 0.99.pl14, che si avvicinava asintoticamente alla 1.0. La versione 1.0 apparve nel marzo 1994. Al momento di questo scritto (marzo 1999), l’attuale versione del kernel è la 2.2.6, mentre le versioni 2.3 del kernel sono in fase di sviluppo simultaneo. (Spiegheremo le convenzioni sulle versioni di Linux più avanti).
Linux non sarebbe potuto nascere senza gli strumenti GNU creati dalla Free Software Foundation. Il loro compilatore gcc, che discuteremo nel Capitolo 13, ha dato vita al codice di Linus Torvalds. Gli strumenti GNU sono stati intrecciati con lo sviluppo di Linux fin dall’inizio. A causa dei contributi critici di questi strumenti, la Free Software Foundation richiede persino che le distribuzioni di Linux con le relative utility siano chiamate GNU/Linux.
Anche Berkeley Unix (BSD) ha giocato un ruolo importante in Linux – non tanto nella sua creazione, ma nel fornire gli strumenti che lo rendono popolare. La maggior parte delle utilità che vengono fornite con le distribuzioni Linux sono portate daBSD. I demoni e le utilità di rete sono particolarmente importanti. Il codice di rete del kernel per Linux è stato sviluppato da zero (due o tre volte, in effetti), ma i demoni e le utilità sono vintage BSD.
Oggi, Linux è un clone Unix completo, capace di eseguire il sistema X Window, TCP/IP, Emacs, Web, software di posta e notizie, e così via. Quasi tutti i principali pacchetti di software libero sono stati portati su Linux, e il software commerciale sta diventando disponibile. Infatti, molti sviluppatori iniziano a scrivere applicazioni per Linux, e le portano su altri sistemi Unix più tardi. È supportato più hardware che nelle versioni originali del kernel. Molte persone hanno eseguito dei benchmark su sistemi Linux e li hanno trovati più veloci delle workstation di Sun Microsystems e Compaq, e Linux si comporta meglio o altrettanto bene di Windows 98 e Windows NT su una vasta gamma di benchmark.Chi avrebbe mai immaginato che questo “piccolo” clone di Unix sarebbe cresciuto fino a conquistare l’intero mondo del personal e server computing?