Un racconto di frustrazioni, ribellioni e genio collettivo che ha cambiato per sempre il mondo del software
Ogni grande innovazione nasce da una frustrazione personale. Questi sono gli uomini che non si rassegnarono allo status quo.
Ingegnere ai Bell Labs di AT&T. Voleva uno spazio per giocare con le idee. Scrisse Unix originalmente in Assembly su un PDP-7 abbandonato, spinto dal desiderio di avere un ambiente di sviluppo migliore. Più tardi co-inventò il linguaggio C con Ritchie e, decenni dopo, il linguaggio Go con Google.
Il più sottovalutato nella storia dell'informatica. Lavorava accanto a Thompson e capì che scrivere Unix in Assembly significava riscriverlo da zero per ogni macchina. Inventò il linguaggio C per rendere Unix portabile — una rivoluzione silenziosa che cambiò tutto.
Hacker puro del MIT AI Lab. Credeva che il software fosse conoscenza, e che la conoscenza non potesse essere proprietà privata. Fondò il progetto GNU nel 1983, creò la licenza GPL e il concetto di copyleft.
Professore olandese di sistemi operativi. Non voleva cambiare il mondo — voleva insegnare ai suoi studenti come funziona davvero un kernel. Quando AT&T chiuse le licenze Unix, scrisse MINIX da zero con architettura a microkernel.
Studente universitario finlandese con un PC 386 e voglia di Unix. MINIX era troppo limitato. Unix commerciale costava troppo. Scrisse il suo kernel "per hobby". Il famoso annuncio su Usenet del 25 agosto 1991 è uno degli understatement più clamorosi della storia.
GNU aveva tutto — compilatore, shell, librerie, editor — tranne il kernel. Linux era solo il kernel. La convergenza fu quasi inevitabile: Torvalds usò subito gli strumenti GNU per compilare Linux, e Stallman nel 1992 riconobbe ufficialmente GNU/Linux come sistema completo.
Ken Thompson trova un PDP-7 inutilizzato nei Bell Labs. In poche settimane scrive il nucleo di Unix, inizialmente chiamato 'Unics'. Il sistema è scritto interamente in Assembly, quindi specifico per quella sola CPU.
Dennis Ritchie sviluppa il linguaggio C, e Unix viene riscritto quasi interamente in C. Per la prima volta nella storia, un sistema operativo può girare su macchine diverse semplicemente ricompilandolo.
"Unix is basically a simple operating system, but you have to be a genius to understand the simplicity."— Dennis Ritchie
Negli anni '70 AT&T distribuiva Unix alle università quasi gratis, con i sorgenti inclusi. Nel 1984, deregolamentata, AT&T lancia Unix System V commerciale: costo proibitivo, sorgenti vietati.
Richard Stallman pubblica il GNU Manifesto. La prima cosa che scrive è gcc — il compilatore C. La logica è sistemica: prima costruisci lo strumento con cui costruirai tutto il resto.
"Free software is a matter of liberty, not price."— Richard Stallman, GNU Manifesto
Il professor Tanenbaum non può mostrare Unix ai suoi studenti. Scrive MINIX da zero con architettura a microkernel e lo pubblica insieme al libro "Operating Systems: Design and Implementation".
La General Public License usa le stesse leggi sul copyright che proteggono il software proprietario, ma le ribalta: puoi copiare, modificare e distribuire, MA tutto ciò che ne deriva deve restare libero.
Un messaggio su comp.os.minix cambia la storia. Torvalds ha 21 anni, studia a Helsinki, ha un Intel 386. La prima versione è 10.239 righe di codice C e Assembly.
"Hello everybody out there using minix — I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386 AT clones."— Linus Torvalds, Usenet, 25 agosto 1991
Tanenbaum pubblica: "Linux è obsoleto — un kernel monolitico è architetturalmente degli anni '70." Torvalds risponde punto per punto. Il dibattito pubblico dura settimane — pubblicità gratuita enorme per Linux.
Linux viene rilasciato sotto licenza GPL. La Free Software Foundation riconosce ufficialmente GNU/Linux come sistema completo. Il kernel di Torvalds si sposa con l'userland di Stallman.
Linux 1.0 viene rilasciato il 14 marzo 1994. 176.250 righe di codice. Da "hobby" è diventato un sistema operativo completo. Oggi Linux fa girare il 96% dei server web mondiali e tutti i dispositivi Android.
In 5–10 secondi il tuo computer esegue milioni di operazioni invisibili. Ecco cosa succede davvero, in ordine cronologico preciso.
Premi il bottone. Un segnale elettrico raggiunge l'alimentatore (PSU). Quando la tensione è stabile, la PSU invia il segnale Power Good alla scheda madre. Solo allora la CPU riceve corrente e si sveglia.
La CPU esegue codice fisicamente bruciato in un chip ROM sulla scheda madre. Esegue il POST (Power On Self Test): testa RAM, CPU, tastiera, disco. Se tutto è OK, cerca il bootloader.
GRUB mostra il menu di selezione del sistema operativo. Poi carica vmlinuz (il kernel compresso) e initramfs (un filesystem temporaneo in RAM con i driver minimi).
Linux si decomprime in RAM e prende il controllo totale della CPU (Ring 0). Imposta la memoria virtuale tramite MMU: ogni processo crederà di avere tutta la RAM per sé.
In rapida sequenza: scheduler, memory manager, VFS (virtual filesystem), driver hardware. Tutto in Kernel Space, invisibile all'utente.
Il kernel lancia un solo processo: PID 1, tradizionalmente /sbin/init, oggi quasi sempre systemd. Da questo momento il kernel diventa un arbitro in attesa di system call.
A differenza del vecchio init sequenziale, systemd avvia tutto in parallelo: udev, NetworkManager, dbus, audio, bluetooth... Ogni servizio ha dipendenze dichiarate.
Il Display Manager avvia il server grafico (Wayland), mostra la schermata di login. Dopo l'autenticazione lancia il session manager del desktop scelto. Il desktop appare.