← Back to Encreade
Storia dell'Informatica — Dal 1969 ad oggi

La Nascita di
GNU/Linux

Un racconto di frustrazioni, ribellioni e genio collettivo che ha cambiato per sempre il mondo del software

1991

Chi erano, dove vivevano,
cosa li fece arrabbiare

Ogni grande innovazione nasce da una frustrazione personale. Questi sono gli uomini che non si rassegnarono allo status quo.

1943 — Ken Thompson
Ken Thompson
Bell Labs, Murray Hill NJ — Co-creatore di Unix e C

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.

TriggerMultics era troppo complesso e costoso. Bell Labs si ritirò dal progetto. Thompson aveva un PDP-7 inutilizzato e voglia di costruire qualcosa di più semplice.
1941 — Dennis Ritchie
Dennis Ritchie
Bell Labs — Inventore del linguaggio C

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.

TriggerOgni nuova CPU richiedeva una riscrittura completa del sistema. Il C nacque dalla necessità di avere un linguaggio vicino all'hardware ma portabile.
1953 — Richard Stallman
Richard Stallman
MIT AI Lab, Boston — Fondatore GNU, padre del software libero

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.

TriggerUna stampante Xerox 9700 si inceppava spesso. Stallman chiese il codice sorgente. Xerox disse no. Per lui fu una violazione morale insopportabile.
1944 — Andrew Tanenbaum
Andrew Tanenbaum
Vrije Universiteit Amsterdam — Creatore di MINIX

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.

TriggerNon poteva mostrare il codice sorgente di Unix agli studenti per ragioni legali. Aveva bisogno di un sistema operativo didattico, libero e comprensibile riga per riga.
1969 — Linus Torvalds
Linus Torvalds
Università di Helsinki — Creatore del kernel Linux

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.

TriggerAveva un Intel 386, voleva Unix, MINIX aveva limitazioni e AT&T faceva pagare migliaia di dollari per una licenza.
Il progetto GNU
GNU + Linux
Il matrimonio che cambiò tutto

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.

TriggerStallman aveva scelto il microkernel per il suo Hurd — architetturalmente superiore. Quella scelta lo bloccò per anni. Torvalds scelse il monolitico per pragmatismo. E vinse.

Dal 1969 al 1994:
venticinque anni che cambiarono tutto

1969
Unix nasce su un computer abbandonato

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.

1972–1973
Ritchie inventa il C — Unix diventa portabile

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
1979–1984
AT&T chiude le porte — la conoscenza diventa merce

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.

1983
Stallman annuncia GNU — la rivolta morale

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
1987
Tanenbaum pubblica MINIX — il laboratorio didattico

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".

1989
Stallman crea la GPL — il copyleft

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.

25 Agosto 1991
Torvalds annuncia Linux su Usenet

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
Gennaio 1992
La grande diatriba — Tanenbaum vs Torvalds

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.

1992
GNU benedice Linux — il matrimonio

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.

1994
Linux 1.0 — il sistema è completo

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.


Dal bottone di accensione
al desktop: ogni passo

In 5–10 secondi il tuo computer esegue milioni di operazioni invisibili. Ecco cosa succede davvero, in ordine cronologico preciso.

1μs

Segnale elettrico — Power Good

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.

CPU → Reset Vector: salta a indirizzo fisso 0xFFFFFFF0
2ms

BIOS / UEFI — il codice nella ROM

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.

UEFI → cerca partizione EFI → carica EFI bootloader
3ms

GRUB — il primo software GNU che vedi

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).

GRUB → carica vmlinuz + initramfs → decomprime in RAM → cede controllo
4ms

Il kernel si decomprime e prende il controllo

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é.

MMU ON → ogni processo vede spazio virtuale isolato → kernel space + user space separati
5ms

Inizializzazione dei sottosistemi kernel

In rapida sequenza: scheduler, memory manager, VFS (virtual filesystem), driver hardware. Tutto in Kernel Space, invisibile all'utente.

scheduler → mem_init → vfs_init → driver_init → ...
6~1s

PID 1 — il primo processo 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.

kernel_init() → exec("/sbin/init") → PID 1 è nato
7~2s

systemd — orchestra in parallelo

A differenza del vecchio init sequenziale, systemd avvia tutto in parallelo: udev, NetworkManager, dbus, audio, bluetooth... Ogni servizio ha dipendenze dichiarate.

systemd → analizza dipendenze → avvia target → multi-user.target → graphical.target
8~3s

Display Manager → Desktop

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.

GDM → Wayland → autenticazione → gnome-shell → desktop visibile

Quiz — 8 domande
per testare quanto hai capito

Domanda 1 di 8
Chi ha inventato il linguaggio C e perché fu una rivoluzione?

Glossario essenziale

Kernel
Il nucleo del sistema operativo. Gestisce direttamente l'hardware (CPU, RAM, disco, rete) e fa da intermediario tra i programmi e le risorse fisiche. Gira in modalità privilegiata (Ring 0).
Sistema Operativo
Kernel + tutto il software di sistema: shell, librerie, filesystem tools, init system. GNU/Linux è un sistema operativo: il kernel è Linux, il "resto" è GNU.
Kernel Monolitico
Tutti i componenti del kernel girano nello stesso spazio di memoria privilegiato. Velocissimo perché le componenti si chiamano direttamente. Linux è monolitico con moduli caricabili.
Microkernel
Il kernel fa solo il minimo (IPC, memoria, scheduling base) e tutto il resto gira in User Space. Più sicuro ma più lento. Esempi: MINIX, QNX, Mach (usato da macOS).
GNU
GNU's Not Unix — progetto lanciato da Stallman nel 1983. Include gcc, bash, glibc, coreutils. Aveva tutto tranne un kernel funzionante.
GPL — Copyleft
General Public License: licenza del 1989. Permette copia, modifica e distribuzione, MA tutto il derivato deve restare GPL. È "virale" — la libertà si propaga obbligatoriamente.
BIOS / UEFI
Firmware del produttore hardware in ROM sulla scheda madre. È il primo codice eseguito dalla CPU all'accensione. UEFI è il successore moderno con secure boot e supporto dischi > 2TB.
GRUB
GRand Unified Bootloader — software GNU che carica il kernel Linux in memoria. Il primo software GNU visibile durante il boot.
initramfs
Filesystem temporaneo in RAM caricato con il kernel. Contiene i driver minimi per montare il filesystem reale. Risolve il paradosso del pollo e dell'uovo.
PID 1 / systemd
Il primo processo lanciato dal kernel con PID numero 1. Oggi quasi sempre systemd. È il genitore di tutti gli altri processi. Se muore, il sistema va in panico.
Kernel Space / User Space
Kernel Space (Ring 0): accesso diretto e illimitato all'hardware. User Space (Ring 3): i programmi devono chiedere al kernel tramite system call. Fondamento della sicurezza del sistema.
System Call
Il meccanismo con cui un programma in User Space chiede al kernel operazioni privilegiate: aprire file, allocare memoria, inviare dati in rete.
MMU — Memoria Virtuale
Memory Management Unit — traduce indirizzi virtuali in fisici. Ogni processo crede di avere tutta la RAM per sé. Se tenta di accedere a memoria di un altro, la MMU lo blocca.
POST
Power On Self Test — sequenza di test eseguita dal BIOS/UEFI. Verifica RAM, CPU, tastiera, disco. Se trova problemi emette codici di errore. Se tutto è OK, passa al bootloader.