Storia di Linux: dal kernel del 1991 a server, cloud e Android

La storia di Linux parte dal kernel che Linus Torvalds sviluppò nel 1991 per un PC Intel 386. La sua diffusione come sistema operativo nacque dall’incontro con gli strumenti GNU, le distribuzioni e una comunità internazionale di sviluppatori. Per distinguere questi elementi potete leggere la spiegazione di kernel, distribuzioni e open source, in inglese.

Linux è il kernel: che cosa comprende il sistema

Che differenza c’è fra kernel e sistema operativo?

A rigore, Linux è il kernel, il nucleo del sistema operativo. Il kernel gestisce le risorse hardware come il processore, la memoria e l'archiviazione, e coordina il tutto in modo che le applicazioni possano utilizzare l'hardware in sicurezza.

Ubuntu, Debian e Rocky Linux sono distribuzioni: integrano il kernel con shell, strumenti di sistema, librerie, gestori di pacchetti e applicazioni. Nell’uso comune anche l’intero sistema viene chiamato “Linux”; il nome “GNU/Linux” evidenzia invece la combinazione del kernel con il sistema e gli strumenti GNU. La Free Software Foundation spiega il rapporto fra GNU e il kernel Linux dal punto di vista del movimento del software libero.

Quali compiti svolge il kernel?

Il kernel si trova tra i programmi normali che gli utenti eseguono e l'hardware. Compiti come un browser web che legge un file o un programma server che invia pacchetti di rete sono gestiti in ultima analisi tramite chiamate di sistema fornite dal kernel. Per comprendere la storia di Linux, è utile distinguere prima i seguenti quattro ruoli.

  • Gestione dei processi: assegna il tempo del processore (CPU, Central Processing Unit) ai programmi e coordina l’ordine di esecuzione.
  • Gestione della memoria: assegna gli spazi di memoria ai processi e applica meccanismi per proteggerli dagli accessi non consentiti.
  • Gestione dei dispositivi: Controlla i dispositivi di archiviazione, le schede di rete, i dispositivi grafici e le periferiche tramite driver.
  • Gestione di file e reti: Fornisce interfacce comuni necessarie per i sistemi di file e la comunicazione di rete.

Pertanto, le modifiche nel supporto per nuovi hardware, prestazioni, sicurezza, gestione dell'energia e scalabilità dei server sono principalmente collegate alla storia del kernel. Al contrario, i desktop, i comandi per l'installazione dei pacchetti e le applicazioni di base sono più legati alla storia delle distribuzioni o del software nello spazio utente.

Prima di Linux: UNIX e il progetto GNU

Linux è un kernel Unix-like: segue molti concetti e interfacce della tradizione UNIX, ma è stato sviluppato indipendentemente. Il modello multiutente e multitasking, la combinazione di piccoli strumenti e le interfacce basate sui file hanno influenzato l’ambiente in cui Linux è cresciuto.

Nel 1983 Richard Stallman annunciò GNU (GNU’s Not Unix), un progetto per un sistema operativo libero compatibile con UNIX. Lo sviluppo iniziò nel 1984. Alla fine del decennio erano disponibili molti componenti, come compilatore, shell, editor e comandi, mentre mancava ancora un kernel adatto a completare il sistema. La FSF ricostruisce l’annuncio di GNU e l’inizio dello sviluppo; per “libero” si intendono le libertà di usare, studiare, modificare e condividere il software, non necessariamente un prezzo pari a zero.

1991: l’annuncio e la prima versione pubblica

Studente all’Università di Helsinki, Torvalds iniziò il progetto nella primavera del 1991 su un PC Intel 386. Il 25 agosto presentò il lavoro al newsgroup Usenet comp.os.minix e chiese osservazioni agli utenti di MINIX. Quel messaggio annunciava un progetto in corso, non una distribuzione pronta per il pubblico generale.

Il 2020 Linux Kernel History Report della Linux Foundation, pagina 4 indica il 17 settembre 1991 come data del primo rilascio, Linux 0.01. Il rapporto conta 88 file e 10.239 righe di codice, per la sola architettura i386. Sono dati riferiti a quella prima versione, non alle dimensioni di un kernel attuale.

1992–1994: GPL e distribuzioni

La GPL e le condizioni della collaborazione

Nel 1992 Linux passò alla GNU General Public License (GNU GPL). Le note originali di Linux 0.12 descrivono la rimozione del divieto di distribuzione a pagamento e il passaggio alle condizioni GNU. Il kernel poté così essere combinato e ridistribuito con gli strumenti liberi già disponibili, rispettando i termini delle licenze.

Ian Murdock fondò Debian nell’agosto 1993. La storia ufficiale del progetto Debian descrive l’obiettivo di costruire e mantenere una distribuzione aperta ai contributi della comunità, con attenzione alla coerenza del sistema e alla gestione dei pacchetti. Nello stesso periodo crescevano anche le offerte con supporto commerciale.

Il 13 marzo 1994 uscì Linux 1.0. L’archivio Linux 1.0 di kernel.org conserva sorgenti e aggiornamenti di quella serie. Il numero 1.0 segnò un passaggio importante dalla sperimentazione a un kernel destinato a un impiego più ampio; non significava che il progetto fosse finito o privo di difetti.

Il lavoro di integrazione delle distribuzioni

I primi utenti dovevano procurarsi e configurare molti componenti separati. Le distribuzioni ridussero questa complessità: nel tempo integrarono programmi di installazione, pacchetti precompilati, gestione delle dipendenze e repository per gli aggiornamenti. Non tutte queste funzioni erano già complete nelle primissime distribuzioni.

Debian ha sviluppato un modello comunitario di gestione delle politiche e dei pacchetti. Red Hat ha collegato lo sviluppo aperto a prodotti e supporto per le imprese: la sua storia ufficiale ripercorre il passaggio dai CD degli anni Novanta alle sottoscrizioni aziendali e a Fedora. La convivenza di più modelli ha permesso di rivolgersi sia a chi studia Linux sia a chi gestisce server per lunghi periodi.

Le tappe principali della storia di Linux

Anno Evento Significato
1983 Annuncio di GNU Stallman propone un sistema operativo libero compatibile con UNIX.
1984 Inizio dello sviluppo di GNU Comincia la costruzione dei componenti del sistema GNU.
1991 Annuncio di Linux e rilascio 0.01 Un progetto personale inizia ad accogliere contributi via Internet.
1992 Passaggio di Linux alla GNU GPL Cambiano le condizioni di modifica e redistribuzione del kernel.
1993 Fondazione di Debian Si sviluppa un modello di distribuzione comunitaria.
1994 Rilascio di Linux 1.0 Il kernel raggiunge una tappa importante della propria maturazione.
1996 Rilascio di Linux 2.0 Il supporto al multiprocessing simmetrico amplia l’impiego sui server.
2000 Nascita degli Open Source Development Labs Le imprese rafforzano il sostegno allo sviluppo e all’adozione di Linux.
2003 Rilascio di Linux 2.6 Proseguono gli sviluppi per più dispositivi e sistemi di maggiori dimensioni.
2005 Nascita di Git Il kernel adotta uno strumento per gestire lo sviluppo distribuito.
2007 Nascita della Linux Foundation OSDL e Free Standards Group uniscono le proprie attività.

Da 1.0 a 2.6: nuove architetture e impiego sui server

Linux 1.0 era rivolto soprattutto ai PC della famiglia Intel 386. Le serie successive estesero il supporto ad altre architetture e a più dispositivi. I moduli caricabili consentirono di aggiungere determinate funzionalità senza includerle tutte stabilmente nell’immagine del kernel.

Linux 2.0, uscito nel 1996, introdusse il supporto al multiprocessing simmetrico (Symmetric Multiprocessing, SMP), cioè all’uso coordinato di più processori. Nelle serie 2.4 e 2.6 migliorarono il supporto hardware, la pianificazione dei processi, la memoria e la scalabilità. L’archivio della serie 2.6 conserva Linux 2.6.0, pubblicato nel dicembre 2003, e gli aggiornamenti successivi. È un archivio storico, non un elenco di versioni oggi supportate.

Linux si affermò così come kernel utilizzabile su architetture diverse. Produttori hardware e aziende contribuirono a driver, prestazioni e stabilità; il ramo principale di sviluppo, detto mainline, divenne il punto d’incontro fra contributi individuali e interessi commerciali.

2005: nasce Git per lo sviluppo distribuito

Perché serviva un nuovo controllo di versione

Con l’aumento del codice e dei partecipanti diventava essenziale registrare le modifiche e integrare più rami di sviluppo. La comunità usava BitKeeper dal 2002; nel 2005 cessò la possibilità di usarlo gratuitamente e servì un’alternativa.

Torvalds avviò Git nel 2005, puntando su velocità, lavoro distribuito e gestione efficiente di molti rami. La breve storia pubblicata sul sito ufficiale di Git collega la nascita del progetto alle esigenze del kernel. Git si è poi diffuso nello sviluppo di software di molti altri tipi.

Come le patch arrivano nel kernel

Gli sviluppatori propongono modifiche sotto forma di patch, sottoposte a revisione. I responsabili dei sottosistemi, detti maintainer, raccolgono e verificano le modifiche prima dell’integrazione nella mainline. All’inizio di un ciclo si apre la merge window, dedicata alle nuove funzionalità; seguono versioni candidate e correzioni. La descrizione ufficiale del processo di sviluppo spiega questa sequenza e il sistema di fiducia fra maintainer.

Partecipazione aperta non significa inserimento automatico del codice. Revisione, test e responsabilità dei maintainer servono a individuare problemi e regressioni, cioè malfunzionamenti introdotti rispetto a una versione precedente. Il Linux Kernel Development HOWTO orienta chi vuole contribuire e rimanda alle regole per inviare patch.

Dai server al cloud e ai dispositivi mobili

Server e supporto per le imprese

Dalla fine degli anni '90, Linux è cresciuto rapidamente nel settore dei server grazie alla stabilità, alle capacità di rete e al supporto per vari hardware. I fornitori di distribuzioni hanno fornito aggiornamenti a lungo termine e supporto tecnico, permettendo alle imprese di adottare Linux per server web, database e sistemi aziendali.

Negli anni Duemila virtualizzazione e cloud resero ancora più utile un sistema automatizzabile e adattabile. I container si svilupparono sfruttando l’isolamento dei processi e il controllo delle risorse offerti dal kernel. Queste applicazioni si affiancarono allo sviluppo distribuito descritto sopra, sostenuto da persone e organizzazioni diverse.

Container, isolamento e risorse

Una macchina virtuale esegue normalmente un proprio kernel. I container Linux basati sull’isolamento dei processi condividono invece il kernel del sistema che li ospita: su un computer con un altro sistema operativo può esserci una macchina virtuale Linux intermedia. I namespace separano le viste di risorse come rete, punti di montaggio, utenti e identificatori dei processi; i control group (cgroup) organizzano i processi e permettono di misurare o controllare risorse come CPU, memoria e ingresso/uscita (I/O).

Un container richiede anche immagini, strumenti di esecuzione, rete e archiviazione: non coincide con una sola funzione del kernel. Inoltre condividere il kernel non equivale ad avere la stessa separazione di una macchina virtuale. La documentazione ufficiale di cgroup v2 descrive la parte relativa all’organizzazione dei processi e alle risorse.

Android e dispositivi embedded

Linux è stato portato anche su router, automobili, apparecchiature industriali e altri dispositivi embedded, cioè integrati in prodotti con compiti specifici. Negli smartphone, Android usa un kernel derivato da Linux: la documentazione Android Open Source Project spiega che gli Android Common Kernel derivano da versioni Linux con supporto a lungo termine (Long Term Support, LTS), con patch specifiche per Android.

Il ruolo delle aziende e della Linux Foundation

All’inizio ebbero un ruolo importante sviluppatori individuali e comunità universitarie e amatoriali. Con la diffusione del sistema, produttori di server e semiconduttori, distributori e operatori cloud investirono nelle funzionalità necessarie ai propri prodotti. Integrare il codice nella mainline permette di condividerne revisione e manutenzione con un insieme più ampio di utilizzatori.

Nel 2000 nacquero gli Open Source Development Labs (OSDL), per sostenere lo sviluppo e l’adozione aziendale di Linux. Nel 2007 OSDL e Free Standards Group si unirono nella Linux Foundation. La ricostruzione pubblicata dalla Linux Foundation descrive il sostegno a infrastrutture, standard, eventi, formazione e servizi legali: un ruolo di supporto alla collaborazione, distinto dalla revisione tecnica delle patch.

La collaborazione non trasferisce automaticamente tutti i diritti sul codice a una sola azienda: i diritti d’autore rimangono ai rispettivi titolari, come chiarisce l’introduzione ufficiale allo sviluppo del kernel. Le regole ufficiali di licenza del kernel indicano per l’insieme del sorgente la GNU GPL versione 2 soltanto, con un’esplicita eccezione per l’interfaccia delle chiamate di sistema. Singoli file possono avere licenze compatibili o doppie licenze; usare normali chiamate di sistema non impone da solo la GPL a un’applicazione.

Tre livelli da distinguere

Livello Componenti Ruolo nella storia
Kernel Linux Gestione di processi, memoria, dispositivi, file system e rete Fornisce la base comune fra hardware e programmi.
Spazio utente Strumenti GNU, shell, librerie, servizi e ambienti desktop Permette a utenti e applicazioni di svolgere il lavoro quotidiano.
Distribuzione Installazione, repository, configurazione, aggiornamenti e supporto Integra i componenti in un sistema adatto a uno scopo.

I tre livelli sono collegati, ma diversi. Una correzione del kernel può interessare più distribuzioni, mentre il pacchetto che la contiene e la durata del supporto dipendono dalla distribuzione. Android usa anch’esso Linux, ma ha uno spazio utente e un modello applicativo diversi da quelli di un normale desktop GNU/Linux.

Perché il progetto ha continuato a crescere

  • Codice sorgente disponibile: Chiunque può esaminare il codice, correggere problemi o proporre supporto per nuovo hardware.
  • Condizioni di licenza: La GNU GPL fornisce condizioni per la modifica e la ridistribuzione, formando la base legale per lo sviluppo collaborativo.
  • Collaborazione basata su Internet: Mailing list, maintainer e processi di revisione pubblica hanno permesso lo sviluppo oltre i confini regionali e organizzativi.
  • Ecosistema delle distribuzioni: Sono forniti strumenti di installazione, pacchetti, politiche di aggiornamento e supporto tecnico adattati a diversi scopi.
  • Ampia portabilità: Può essere utilizzato su diversi tipi di hardware, dai computer personali ai server, smartphone e dispositivi embedded.

Che cosa emerge dalla storia di Linux

La crescita di Linux nasce dall’interazione fra il kernel, la tradizione progettuale UNIX, GNU e il software libero, il lavoro delle distribuzioni e i contributi individuali e aziendali. Il codice disponibile alla comunità può essere esaminato e adattato a esigenze diverse.

La storia va quindi oltre il primo rilascio del 1991: mostra come licenze, strumenti di collaborazione e integrazione del software abbiano consentito a un progetto personale di diventare una base per infrastrutture diverse. La riuscita di questo modello è una lettura complessiva delle tappe descritte, non l’effetto di un singolo evento.

Domande frequenti

Chi ha creato Linux?

Linus Torvalds iniziò a sviluppare il kernel Linux nel 1991. Da allora, sviluppatori individuali e aziende di tutto il mondo hanno contribuito al codice, sviluppandolo in un progetto collaborativo su larga scala.

Linux e UNIX sono lo stesso sistema operativo?

No. Linux è un kernel Unix-like sviluppato indipendentemente. Condivide molti concetti della tradizione UNIX, ma questa somiglianza non rende identici i due sistemi né significa che Linux sia una copia del sorgente UNIX.

Qual è la differenza tra Linux e GNU/Linux?

Linux si riferisce strettamente al kernel. GNU/Linux è un nome che enfatizza l'intero sistema operativo composto dal kernel Linux e dagli strumenti GNU. Nell'uso quotidiano, anche le distribuzioni e l'intero sistema sono comunemente indicati come Linux.

Perché sono necessarie le distribuzioni?

Con solo il kernel, è difficile per gli utenti comuni utilizzare un ambiente informatico completo. Le distribuzioni forniscono un sistema operativo adatto allo scopo raggruppando installer, strumenti di sistema, gestori di pacchetti, politiche di aggiornamento e applicazioni.

Un'azienda può vendere Linux open-source?

Sì. “Libero” riguarda le libertà d’uso e condivisione e non vieta di chiedere un prezzo. Si possono vendere copie, distribuzioni, aggiornamenti e servizi. La distribuzione del kernel, modificato o meno, deve però rispettare i termini applicabili, compresi quelli sul sorgente previsti dalla GPL. La spiegazione della FSF sul software libero chiarisce il significato della libertà; i termini specifici dipendono dalla licenza del software distribuito.

Una singola azienda possiede Linux?

Nessuna singola azienda possiede e controlla esclusivamente lo sviluppo del kernel Linux. Linus Torvalds gestisce la linea principale e i manutentori in ciascuna area integrano le modifiche, ma il copyright del codice è distribuito tra numerosi contributori. La Linux Foundation supporta l'ambiente di sviluppo e l'ecosistema, ma non è un'organizzazione che possiede l'intero kernel come un prodotto aziendale.

Fonti e documenti originali