Una distribuzione Linux (anche distribuzione GNU/Linux ove includa elementi GNU, gergalmente detta distro), in informatica, è una distribuzione software di un sistema operativo realizzato a partire dal kernel Linux, un sistema di base GNU e solitamente anche diversi altri applicativi (talvolta anch'essi parte di GNU). Tali distribuzioni appartengono quindi alla sottofamiglia dei sistemi operativi GNU e, più in generale, alla famiglia dei sistemi Unix-like, perché ispirati a Unix e in certa misura compatibili con esso.

Storia

Prima della comparsa delle distribuzioni, chiunque avesse voluto far uso di Linux doveva necessariamente essere un esperto dei dettagli di Unix, necessitando pertanto della conoscenza non solo di quali librerie ed eseguibili fossero necessari per far partire e funzionare correttamente il sistema, ma anche di alcuni importanti dettagli riguardanti la configurazione ed il posizionamento dei nel sistema stesso.

Le distribuzioni apparvero poco tempo dopo che il kernel Linux iniziò ad essere utilizzato da persone al di fuori del team originale di sviluppatori Linux. Questi ultimi infatti erano più interessati a sviluppare il sistema operativo piuttosto che programmi applicativi, interfacce utente e comode pacchettizzazioni.

Le prime distribuzioni furono: Il Boot-root: una coppia di immagini per floppy disk distribuita da H. J. Lu. La prima, avviabile, conteneva il kernel, mentre la seconda forniva un set minimo di strumenti, provenienti dal progetto GNU, che permetteva di creare un filesystem e avere così un sistema operativo di base funzionante; MCC Interim Linux, distribuzione sviluppata dal Manchester Computing Centre dell'Università di Manchester nel febbraio 1992 e resa disponibile per il download pubblico dal server FTP sin dal novembre 1991; TAMU, creata da alcuni sviluppatori indipendenti della Texas A&M University più o meno nello stesso periodo; Softlanding Linux System (SLS), creata da Peter MacDonald nell'agosto 1992; Slackware, inizialmente un fork della già citata SLS, creata da Patrick Volkerding nel 1993. È la distribuzione più anziana ancora attivamente sviluppata; Yggdrasil Linux, sviluppata dalla Yggdrasil, fu la prima distribuzione Plug-and-Play, ovvero in grado di configurarsi in base all'hardware rilevato.

Le distribuzioni Linux si proposero come un'alternativa ai sistemi operativi MS-DOS e Microsoft Windows per i PC IBM, al sistema Mac OS per i computer Apple Macintosh, e ad altre versioni proprietarie di Unix. Molti dei primi utenti erano già abituati a Unix per motivi di lavoro o studio. Questi passarono a Linux per la stabilità, il basso (o spesso nullo) costo, e grazie all'inclusione del codice sorgente di tutto o quasi il software incluso. Le distribuzioni erano originariamente solo una questione di convenienza, ma oggi sono diventate il riferimento principale anche per i guru di Unix e Linux. Al momento, Linux è più popolare nel mercato dei server, soprattutto per i server Web e database (vedi anche LAMP), piuttosto che nel mercato dei computer da scrivania.

Attualmente diverse società come Red Hat, Novell (per SUSE), Mandriva e Canonical Ltd (per Ubuntu), e progetti di comunità come Debian, Slackware e Gentoo, assemblano e testano le varie componenti software rilasciando distribuzioni personalizzate e variegate, per la maggior parte gratuite. Ci sono in questo momento più di 300 progetti di distribuzioni Linux in attivo sviluppo, revisione e miglioramento che si differenziano per scelte progettuali, come i vari software di mantenimento del sistema per l'installazione, la rimozione e la configurazione del software.

Descrizione

Tutte le distribuzioni sono sviluppate in maniera indipendente, da relative community, a partire dal kernel Linux comune (sia pur in versioni diverse e spesso personalizzate), e si differenziano tra loro per il cosiddetto "parco software", cioè i pacchetti preparati e selezionati dagli sviluppatori per la distribuzione stessa, per il sistema di gestione del software, i repository e per i servizi di assistenza e manutenzione offerti. Una tipica distribuzione comprende, in ordine crescente di astrazione, le seguenti componenti software, oltre alle relative documentazioni tecniche e manuali: un sistema di base, composto dal kernel Linux e dalle relative librerie di programmazione e utilità di sistema, principalmente parte di GNU. strumenti amministrazione della distribuzione, come il sistema di gestione dei pacchetti con relativi repository; le shell, cioè i software di interfaccia con l'utente: oltre al terminale a riga di comando può essere incluso un'interfaccia grafica, cioè un ambiente desktop o un più semplice gestore delle finestre, in funzione sopra l'X Window System, almeno per ciò che riguarda le distribuzioni per desktop computer (quelle per sistemi server non hanno interfaccia grafica per motivi di compattezza e velocità). Ogni distribuzione in genere monta di default una sua interfaccia grafica, poi ampiamente personalizzabile con altri ambienti desktop liberamente disponibili. un grande insieme variabile di programmi basati sul kernel Linux, inclusi sotto forma di pacchetti e solitamente distribuiti con licenza d'uso di tipo libero (es. pacchetti GNU) o open source, ma non mancano casi di freeware o altre licenze commerciali; a questi si aggiungono i programmi applicativi, come suite per ufficio, navigatore web o gestori d'informazioni personali, elaboratori di testo, fogli di calcolo, riproduttori multimediale, client di posta elettronica, PIM, ecc...;.

La quasi totalità del software incluso è FOSS (Free and Open Source Software - Software libero Open Source) che è distribuito dagli sviluppatori sia in forma precompilata che come codice sorgente, cosa che permette agli utenti di modificare e ricompilare il codice originale a proprio piacimento. Una parte del software incluso in alcune distribuzioni può essere proprietario e non disponibile sotto forma di sorgenti.

Molte distribuzioni forniscono un sistema di installazione simile a quello di altri moderni sistemi operativi. Distribuzioni self-hosting come Gentoo Linux forniscono il codice sorgente di tutto il software ed includono le versioni eseguibili solo di un kernel base, compilatore e programma di installazione; questo programma compila tutto il software per la specifica architettura del computer dell'utente.

Scelta della distribuzione

Le differenze tra le varie distribuzioni Linux sono di carattere tecnico, organizzativo e filosofico. Le prime consistono in un diverso supporto dei dispositivi hardware e nella configurazione del sistema operativo e dei pacchetti software. Le seconde sono spesso motivate da scelte tecniche, ma anche da ragioni storiche e/o filosofiche. Il sito web DistroWatch offre una panoramica di tutte le distribuzioni Linux più note, attive o meno, e mantiene una classifica delle distribuzioni, usando il page view come misura della popolarità relativa.

Installazione Il più comune metodo di installazione avviene tramite bootstrap da un CD contenente il programma di installazione ed altro software. Questi CD possono essere masterizzati a partire da un file di immagine ISO, comprati a piccolo costo, o ottenuti come parte di un pacchetto che include anche manuali e software commerciale addizionale. Alcune distribuzioni come Debian possono essere installate a partire da un ristretto numero di floppy disk. In seguito, una volta installato il sistema di base, è possibile integrarlo ottenendo i restanti pacchetti da internet o da CD. L'installer Anaconda, uno dei programmi di installazione più usati, è implementato in Red Hat, Fedora ed altre distribuzioni per semplificare il processo di installazione.

Ancora un altro modo per installare Linux è installarlo su un potente computer che funga da server ed usare macchine meno potenti (magari senza disco rigido, con meno memoria ed una CPU più lenta) come client "stupido" della rete. I client possono eseguire il bootstrap attraverso la rete, mostrando i risultati e passando informazioni al server sul quale girano tutte le applicazioni. I client possono essere normali PC con l'aggiunta di un bootloader di rete sotto forma di software inserito in un drive oppure integrato nel controller di rete, cosicché parte del carico del server può essere trasferito sulla macchina client. Il risparmio economico derivante invece dall'uso di client stupidi può invece essere sfruttato per incrementare lo potenza di elaborazione o di immagazzinamento dati del server.

Alcune distribuzioni offrono grandi possibilità di configurare e personalizzare praticamente tutto il software incluso, ma non tutte. Alcune distribuzioni includono strumenti di configurazione per coadiuvare questo processo, ma è importante ricordare che tali personalizzazioni sono tipicamente così specifiche che non è possibile per nessuno, inclusi i progettisti delle distribuzioni, preconfigurare il software fornito per le specifiche esigenze di ognuno. Come tutti i sistemi operativi, Linux e le sue distribuzioni richiedono delle operazioni di amministrazione e configurazione ai propri utenti/operatori/proprietari. Quello in cui i soggetto che creano distribuzioni di Linux differiscono dai venditori degli altri sistemi operativi consiste nel che i primi non affermano esplicitamente che "nessuna operazione di amministrazione è richiesta". Questa onestà può preoccupare utenti potenziali che vengono convinti dalle dichiarazioni pubblicitarie degli altri sistemi.

Sostituendo tutto ciò che è contenuto in una distribuzione, un amministratore può raggiungere uno stato "distribution-less", cioè privo di distribuzione, nel senso che tutto viene così distribuito sotto forma di sorgenti, compilato, configurato ed installato localmente. È possibile costruire un sistema di questo tipo da zero, senza bisogno di alcuna distribuzione di partenza. C'è solo bisogno di un modo di generare i primi binari finché il sistema non diventa self-hosting (capace di generare se stesso). Questo può essere fatto tramite la compilazione su un altro sistema capace di produrre codice eseguibile per la macchina di destinazione (anche attraverso la cross-compilazione). Una guida per costruire un sistema simile è ad esempio Linux From Scratch.

Ci sono anche alcune distro pensate per risiedere su una memoria USB, permettendo all'utente la portabilità totale del proprio sistema in uno spazio minuscolo (una chiave USB, ad esempio) senza la necessità di portarsi in giro altro hardware. Ovviamente per poter usare tali sistemi è comunque necessario un PC che permetta il boot dalle porte USB. Alcune, tra le più diffuse, distribuzioni di questo tipo sono Puppy Linux e Damn Small Linux.

Installazione su piattaforma preesistente Alcune distribuzioni, come WinLinux, permettono all'utente di installare Linux su un sistema operativo preesistente. Linux viene installato su una partizione Windows dell'hard-disk e viene eseguito all'interno di Windows stesso. Un altro esempio di questo tipo di approccio è rappresentato da coLinux.

Anche le Macchine virtuali (ad esempio VirtualBox, Virtual PC, qemu o VMware Workstation) consentono l'esecuzione di Linux dall'interno di un altro sistema operativo. I software VM simulano una macchina nel quale viene installato Linux. Dopo aver fatto ciò, la macchina virtuale può essere avviata proprio come fosse un computer indipendente.

Interfacce grafiche Tra le interfacce grafiche più comuni utilizzate troviamo GNOME, KDE, MATE, LXDE, Xfce ecc...

Gestione dei pacchetti software

Le distribuzioni sono normalmente composte da "pacchetti" (packages), ed ognuno di essi contiene una specifica applicazione o componente: ad esempio, ci possono essere pacchetti contenenti una libreria per la gestione del formato di immagini PNG, oppure una serie di font, o un browser web.