Introduzione a Linux: l'ABC del pinguino

Introduzione, storia e filosofia

Mi sembra opportuno cominciare dalla domanda che sta alla base di tutto: cos'è Linux?

Linux per molti è "quella cosa che si può mettere sul computer al posto di Windows"; più propriamente, diciamo che Linux è un sistema operativo (ancora più propriamente dovremmo dire che Linux è il kernel di un sistema operativo, ma di questo parleremo tra qualche paragrafo).

Tutti abbiamo più o meno un'idea di cosa sia un sistema operativo: è il primo programma ad essere eseguito dopo aver acceso il computer; per intenderci, quello con le icone, lo sfondo, le finestre, i messaggi di errore, quello che ci permette di esplorare files e cartelle, o di stabilire la connessione a internet, piuttosto che di installare e rimuovere le periferiche (schede, stampanti, scanner, chiavette usb, lettori mp3 ecc...). Windows è il tipico (e per molti anche l'unico) esempio di sistema operativo.

Altri esempi sono Linux, appunto, o MacOS, o l'ormai vetusto MS-DOS. Altri noti sistemi operativi si trovano nei telefonini: Symbian, iPhoneOS, Windows Mobile e Google Android (che poi è una versione di Linux adattata per gli smartphone).

Quindi il sistema operativo è quella cosa che fa "parlare" l'utente con il computer; in realtà il compito più importante di un sistema operativo non è la parte "estetica", quella che viene mostrata all'utente (finestre, icone, messaggi ecc...). Il compito principale di un sistema operativo è amministrare le risorse della macchina (memoria, dischi rigidi, schermo, e tutte le varie schede e periferiche), facendole dialogare correttamente tra loro.

Ad esempio, quando copiamo del testo da Word, il sistema operativo ha il compito di entrare nella zona di memoria di Word (ogni programma in esecuzione conserva i suoi dati in un proprio spazio nella memoria RAM; Word ci conserva, tra le altre cose, tutto il testo del documento aperto), recuperare il testo richiesto, e copiare questo testo in un'altra zona di memoria, gli appunti.

O ancora, se si vuole inserire una chiavetta USB, è il sistema operativo che si deve occupare di "tenere d'occhio" le porte USB del computer, accorgersi che in una di esse è stata inserita una chiavetta, e trovare il modo per entrarci e mettere il suo contenuto a disposizione dell'utente.

Ci sono poi innumerevoli altre attività "nascoste" che il sistema operativo esegue, ma non è questo il luogo per discuterle; da quello che abbiamo detto, comunque, si può capire bene che il compito del sistema operativo non è dei più semplici: il SO è l'unico software che ha accesso completo a tutte le funzionalità della macchina, ed anche solo una piccola svista può causare (come gli utenti Windows sanno bene) il blocco completo del computer, o addirittura l'ingresso non autorizzato di un virus.

Inoltre, è evidente che dal sistema operativo dipende anche la velocità con cui le operazioni sono eseguite.

Un sistema Linux, generalmente possiede proprio queste caratteristiche: stabilità, sicurezza e velocità.

Storia e filosofia

Narrare la storia di una tecnologia è uno dei doveri morali di ogni divulgatore. Nel caso di Linux, è anche un utile pretesto per entrare nello spirito che muove la sua evoluzione: lo spirito del free software.

La grande maggioranza dei sistemi operativi nasce per scopi commerciali, ovvero per ricavarci dei soldi; generalmente un'azienda privata si occupa di creare il sistema e venderlo guadagnandoci il più possibile. È il caso di Windows, prodotto da Microsoft ed installato sulla maggiornaza dei computers del pianeta, o di MacOS, che è prodotto da Apple, e viene distribuito assieme ai suoi stessi computer. Altri sistemi nascono per scopi di ricerca (ovvero per sperimentare nuove tecnologie), all'interno delle università o nei laboratori di alcune aziende. È il caso, ad esempio, di Unix, sviluppato da Ritchie e Thomson nei laboratori dell'americana AT&T, o Minix, creatura del prof. Andrew Tanenbaum, dell'università di Amsterdam.

Linux nacque quasi per scherzo, nella cameretta di uno studente finlandese di nome Linus Torvalds, nel 1991.

I primi anni '90

Ma, con tutti i sistemi operativi in circolazione, c'era davvero bisogno di crearne uno nuovo partendo da zero? Il successo di Linux suggerisce che la risposta è sì, ed il motivo sta nel fatto che, nei primi anni '90, la situazione per quanto riguarda i sistemi operativi non era del tutto convincente.

Sui Personal Computer, situati negli uffici o, più raramente, nelle case, il sistema più gettonato era l'MS-DOS, di Microsoft, che di solito era già installato sul computer al momento dell'acquisto. All'interno delle università o delle grandi aziende, il calcolo automatico era invece affidato, di solito, ad un grande computer centrale, detto mainframe, a cui il personale si poteva collegare utilizzando dei terminali (semplici apparati composti soltanto da un monitor ed una tastiera). Ad un unico mainframe potevano essere connessi centinaia di terminali, composti soltanto da monitor e tastiera, e l'elaboratore doveva essere in grado di rispondere contemporaneamente a tutte le richieste inviate dai terminali collegati.

Per un lavoro complicato come questo, lo MS-DOS, che può gestire un solo utente per computer, è assolutamente inadatto. Al suo posto, sui mainframe tipicamente era installato Unix, un sistema operativo estremamente solido e professionale (e costoso), adatto a svolgere i "lavori pesanti", come quello sopra descritto.

Un vecchio mainframe (VAX 11/780), con un terminale (a destra) e una stampante (a sinistra).
Un vecchio mainframe (VAX 11/780), molto usato negli anni '80. In primo piano si vedono un terminale (a destra) e un terminale cartaceo (a sinistra).

Unix possedeva anche un'altra importante caratteristica, che lo rendeva apprezzato ovunque: oltre ad essere un sistema molto efficiente, e studiato con scientifica intelligenza, il suo codice sorgente, al contrario di quello del DOS, era facile da reperire e studiare. Addirittura l'università di Berkeley iniziò a modificarlo, espanderlo e migliorarlo, distribuendone una sua propria versione, che chiamò BSD (Berkeley Software Distribution).

Da Unix a Linux

Fino a qui tutto bene, ma la situazione non sarebbe durata a lungo; la stessa AT&T, che aveva creato Unix, si rese conto che la sua "creatura", da semplice esperimento da laboratorio, era diventata il sistema operativo professionale più utilizzato nel mondo. In virtù di questo fatto, AT&T iniziò a reclamare i suoi diritti di proprietà intellettuale, avviando cause legali contro quanti ne avevano utilizzato il codice sorgente, prima fra tutte l'università di Berkeley.

Unix sarebbe stato distribuito come sistema strettamente closed-source, ovvero venduto a "scatola chiusa", impossibile da aprire, modificare e, quindi, studiare. Proprio come viene tutt'oggi distribuito Windows.

Questa scelta produsse molto disappunto ed insoddisfazione tra gli "addetti ai lavori", e, più in generale, tra tutti quelli che, privatamente o in università, volevano capire e studiare il funzionamento del computer. E fu in questo clima che il nostro Linus si accodò (più o meno intenzionalmente) alla schiera di quelli che volevano clonare Unix, scrivendo da zero un sistema che fosse all'altezza di quello sfornato dai Bell labs.

Infatti all'epoca alcuni progetti simili avevano già preso vita; di questi, due in particolare ispirarono la nascita di Linux: il progetto GNU e Minix.

  • Il progetto GNU (GNU is Not Unix), avviato nel 1984 da Richard Stallmann, è un ambizioso progetto, che si propone di creare un sistema operativo universale, completo di tutti i programmi di contorno, all'insegna del concetto di free software. Free software (software libero) è tutto il software che garantisce di poter essere sempre distribuibile e modificabile liberamente, ma di questo parleremo meglio a fine paragrafo.

    Il progetto, attivo ancora oggi, in più di vent'anni non è ancora stato completato. Nonostante questo, tuttavia, vedremo che i moderni sistemi Linux utilizzano grande quantità di codice dal progetto GNU, al punto da essere spesso chiamati GNU/Linux.

  • Minix, come suggerisce il nome, è un piccolo clone di Unix, nato con l'obbiettivo di essere abbastanza leggero, da poter essere installato anche sui personal computer degli studenti, e anche abbastanza economico da poter essere effettivamente acquistato; entrambe caratteristiche che Unix non possedeva. Minix è una creatura del prof. Andrew Tanenbaum, dell'università di Amsterdam, che tuttora scrive e distribuisce il sistema assieme al suo libro "Operating systems design and implementation", utilizzato, nel corso degli anni, come testo universitario da innumerevoli schiere di studenti (tra cui il sottoscritto). Assieme al libro è distribuito l'intero codice sorgente del sistema operativo.

Linux

Anche Linus Torvalds, all'epoca studente presso l'università di Helsinki (Finlandia), studiava sul testo di Tanenbaum. Pur avendo installato Minix sul suo computer (non c'erano molte alternative), non ne era completamente soddisfatto. In primis perchè Minix era poco più di un sistema operativo "giocattolo", ottimo da studiare, ma poco utile nella pratica. E poi perchè, anche se il codice sorgente era venduto assieme al libro, la diffusione di versioni modificate di Minix era proibita dall'autore stesso.

In parte per questo, ed in parte per esplorare a fondo le caratteristiche del suo nuovo PC 386, il giovane Linus iniziò a programmare quello che sarebbe diventato il kernel (il kernel, come vedremo tra qualche paragrafo, è il nucleo fondamentale di un sistema operativo) di Linux. Fortunatamente decise di pubblicare i suoi sforzi su Internet, con un messaggio sul newsgroup comp.os.minix (ancora raggiungibile tramite Google), e rilasciare il suo lavoro gratuitamente (a patto che nessuno lo vendesse), assieme all'intero codice sorgente, in modo che chiunque potesse metterci mano e contribuire al suo sviluppo.

Il resto lo sappiamo: i contribuenti accorsero a frotte, oltre ogni più rosea previsione, al sistema fu dato nome Linux, Linus abbracciò la licenza GPL (vedi sotto), e nel giro di qualche anno Linux si trovò a competere direttamente con concorrenti commerciali del calibro di Microsoft ed Apple, raccogliendo l'eredità dell'ormai defunto Unix.

Software libero e licenza GPL

Linux è un sistema operativo solido, molto veloce ed estremamente affidabile, ma, come i più acuti avranno già capito, non sono questi i suoi veri punti di forza.

Ciò che veramente lo distingue dagli altri è la sua natura collaborativa: Linux non è creato da una persona sola, ma è il frutto dello sforzo di una enorme comunità di sviluppatori volontari, ognuno dei quali contribuisce gratuitamente al suo sviluppo. Chiunque lo desideri, infatti, può modificare il sistema e mettere in circolazione la sua modifica a beneficio di tutti gli altri (attenzione: questo è impossibile per sistemi closed-source come Windows o MacOS). È solo grazie alla spontanea condivisione che, ancora oggi, Linux viene aggiornato e migliorato ogni giorno.

Questo spirito comunitario si trova anche tra gli utenti: i più esperti, di solito, sono sempre disposti ad aiutare i newbie (novellini), e, più in generale, chiunque abbia un problema con Linux può contare sull'aiuto degli altri utenti, riuniti attorno alle comunità dei vari forum, wiki, o mailing list. Addirittura, a volte gli utenti linux si riuniscono fisicamente nei cosiddetti LUG (Linux User Groups), associazioni di linuxiani presenti in alcune città, anche italiane.

Per capire meglio, si può azzardare questa proporzione: Linux è per i sistemi operativi quello che Wikipedia è per le enciclopedie.

Tutto ciò, in realtà, Linus non lo aveva previsto: questo modo di fare è frutto della mente sognatrice di Richard Stallmann, che abbiamo già incontrato, parlando del progetto GNU.

Ad un certo punto, infatti, successe un fatto curioso: il progetto GNU aveva sviluppato praticamente tutti i software di base per il suo sistema operativo (un editor di testo, un emulatore di terminale, il mitico compilatore GCC ecc...), ma non era ancora stato scritto il "nocciolo", il meccanismo centrale del sistema per far funzionare tutto il resto. Linus, dall'altro lato, aveva scritto proprio quel nocciolo che mancava al progetto GNU. Il risultato abbastanza prevedibile fu una fusione di fatto tra il progetto GNU e Linux; il sistema nato da questa unione sarebbe stato chiamato GNU/Linux.

Il pinguino Tux, mascotte di Linux è di fatto inseparabile da GNU

Se però, da un lato, Linus Torvalds non è tipo da crucciarsi troppo se si tratta di distribuire gratuitamente il software, Richard Stallmann oltre ad essere il leader del progetto GNU, è il maggiore esponente del movimento del free software; fortunatamente Linus decise di entrare nel movimento, e iniziò a distribuire Linux secondo le regole dettate da Stallman.

Queste regole sono descritte in un importantissimo documento, creato da Richard Stallman stesso: la licenza GNU GPL (General Public License). La GPL è uno degli oggetti di culto nel mondo Linux (e del software libero in generale), e obbliga chi crea il software a garantire queste libertà (tratte dal sito del progetto GNU) agli utenti che lo usano:

  • Libertà di eseguire il programma, per qualsiasi scopo (libertà 0).
  • Libertà di studiare come funziona il programma e adattarlo alle proprie necessità (libertà 1). L'accesso al codice sorgente ne è un prerequisito.
  • Libertà di ridistribuire copie in modo da aiutare il prossimo (libertà 2).
  • Libertà di migliorare il programma e distribuirne pubblicamente i miglioramenti da voi apportati (e le vostre versioni modificate in genere), in modo tale che tutta la comunità ne tragga beneficio (libertà 3). L'accesso al codice sorgente ne è un prerequisito.

Il tutto con un obbligo: distribuire le eventuali modifiche utilizzando la stessa GPL. Per via di questo obbligo la GPL è affettuosamente definita licenza virus: una volta messo in circolo, un programma con licenza GPL è "condannato" a restare libero per sempre.

Questo significa che nessuno, neanche Linus Torvalds, potrà mai prendere Linux e "ritirarlo dalla comunità", perchè violerebbe la licenza GPL, e la questione potrebbe essere portata in tribunale. Un esempio? Qualche anno fa una grossa azienda dell'informatica modificò, per esigenze commerciali, il kernel di Linux, aggiungendo alcuni componenti. Nonostante fosse contro i suoi piani, la GPL la costrinse a distribuire le sue modifiche come software libero. Come notizia non sembra un gran che, ma fa molto più effetto se si pensa che quell'azienda era niente meno che Microsoft.

Chi volesse approfondire la conoscenza del mondo del free software, può dare un'occhiata a queste pagine:

  • Il sito del progetto GNU. In particolare, sono interessanti:
  • Il sito della Free Software Fundation, la fondazione creata da Richard Stallman per promuovere lo sviluppo di software libero, e difendere chi lo crea.
  • Un breve video, in italiano, che racconta la storia iniziale di GNU/Linux.

  1. Introduzione, storia e filosofia
  2. Un sistema per molti utenti
  3. Kernel e Shell: il sistema invisible
  4. Il Filesystem
  5. Distribuzioni
  6. Tips&Tricks