Sviluppo di GNU/Linux

print

Tratteremo ora dello sviluppo che ha avuto dagli anni ’90 il sistema operativo GNU/Linux, che, per abitudine e brevità, chiameremo più semplicemente Linux, senza però dimenticare che, in effetti, tale nome è relativo al solo Kernel, intendendo, con la maiuscola, quello nato a partire dalla prima mail di Linus Torvalds.

Cosa è una distribuzione Linux

Come si è detto nell’articolo scorso, nel 1994, con l’uscita della prima versione stabile del Kernel il sistema Linux era di fatto stabile e funzionate, però non ancora facilmente fruibile per un utente normale. Infatti i singoli componenti, Kernel, bootloader, pacchetti ausiliari vari etc, dovevano essere compilati separatamente e in qualche modo uniti in un insieme stabile e funzionante, ciò naturalmente non era, come non è, a portata dell’utente medio, specie se interessato alla pura utilizzazione senza voler essere implicato in aspetti interni e tecnici del sistema e dell’hardware.

Ma qualcuno cominciò subito, già ben prima del rilascio del Kernel 1.0, a preparare questo insieme di software, detto distribuzione (distribution) o, semplicemente, distro proprio per facilitare la fruizione del sistema a ogni tipo di utente. Ogni distro ha ovviamente un nome seguito da numeri di versione, sottoversione etc., numeri che vengono dati con criteri diversi a secondo della distro. Talvolta una versione di una distro è identificata, oltre che dai numeri, anche da un nome definibile proprio.

E’ facile capire come, compilando e mettendo tutto assieme, si possano fare scelte diverse, privilegiando certe funzionalità invece di altre, e/o scegliendo software diversi o in versione diversa, oppure, semplicemente adottando una versione del Kernel ritenuta più stabile, scegliendo software più aggiornati oppure più stabili, inoltre creando distro generalistiche o specializzate per certe attività etc..

Va da se come, essendo tutti i sofware usati liberi e disponibili, chiunque sia in grado di farlo puo’ creare la sua distribuzione, ma, in generale, le distro sono composte e manutenute da società commerciali, fondazioni senza scopo di lucro, gruppi di hacker, o che talvolta nascono da un singolo cui di seguito si uniscono altri sviluppatori riconoscendone la validità o lo spirito.

Generalmente ad una distro contribuiscono più sviluppatori esterni, di solito a titolo volontario e non retribuito.

Quante sono le distribuzioni? Centinaia!

Il sito Distrowatchtiene un elenco delle prime 100, basato semplicemente sul numero di visite giornaliere.

Comunque non è possibile sapere quante sono le macchine che hanno installato una certa distro, anche perché, essendo di libera copia, chiunque può installare una o più distro su quanti pc vuole, personalmente ho installato Linux su almeno 50 macchine.

Distrowatch dà comunque una indicazione delle distro più in voga, nonché molte altre utili informazioni: release, pacchetti inclusi etc..

Il sito LiCo cerca in qualche modo di tenere un registro degli utenti e delle macchine con Linux, ma, anche in questo caso, i risultati sono solo indicativi, essendo la registrazione volontaria.

In effetti gli utenti Linux nel mondo sono senz’altro ben più degli attuali 119.604, registrati al 21.07.2013, idem per le macchine, e anche il numero stimato di 66.778.444 è tutt’altro che attendibile come spiegato sul LinuxCounter.net.

Anche alcune distro tengono un registro dei loro utenti, ma, ancora una volta, il loro numero è tutt’altro che affidabile.

Nel seguente link è riportato l’Albero genealogico delle distribuzioni GNU/Linux, con lo sviluppo temporale delle principali distro.

L’immagine, ripresa da Wikimedia, è veramente impressionante! L’impatto visivo di questa figura rende in modo chiaro la storia delle numerose distribuzioni, la loro nascita, talvolta da una distro madre, magari a sua volta figlia di una terza, e anche, spesso, della loro morte.

Il neofita di Linux è spesso frastornato dal numero delle distribuzioni nonché dal loro tumultuoso sviluppo: ci sono continuamente novità e, molto spesso, una distro muore per i motivi più diversi, mentre altre nascono dal nulla seguendo un filo logico difficile e forse impossibile da comprendere.

Diverso è invece il mondo dei sistemi operativi proprietari, lo sviluppo e l’aggiornamento dei quali, per la loro intrinseca natura tecnica e legale, dipendono solo e unicamente dalla software house che li ha creati. Succede anche, nel caso un SO non sia riuscito nel modo migliore o non incontri il favore dell’utente, che questo deve tenerselo in attesa di aggiornamenti e miglioramenti. Naturalmente puo’ sempre ritornare alla vecchia versione, ammesso che ne abbia la licenza, e comunque, in questo caso, possono sorgere problemi con i driver hardware, puo’ anche aspettare una nuova versione, ma, spesso, deve attendere alcuni anni e poi deve comunque sperare che, oltre a soddisfarlo e comunque pagarlo, la sua macchina sia in grado di reggerlo.

Ovviamente il tutto è accentuato quando si compra una macchina nuova dotata di sistema operativo proprietario.

Anche qui si puo’ notare la totale diversità di Linux rispetto ai sistemi proprietari: passati i primi momenti di sconcerto e magari avvalendosi della guida di un utente un po’ più esperto, è possibile scegliere una distro, tipicamente fra quelle generalistiche in testa alla classifica di Distrowatch.

In ogni caso, acquisendo una minima familiarità dopo un po’ d’uso, si potrà optare per una distro più adatta alle proprie esigenze, anche perché è possibile, si vedrà come, provarne quante se ne vuole senza installarle e comunque, toglierne e metterne a piacere, senza particolari problemi.

Deve anche essere precisato che molti aspetti di una distribuzione, in modo particolare estetici, sono spesso facilmente e variamente configurabili, in modo da poter soddisfare le più diverse esigenze.

In conclusione la notevole varietà delle distro è senz’altro un valore aggiunto del Software Libero, che fa della varietà un punto di forza, dando, fra l’altro, libertà di scelta all’utente che, a parte l’abitudine, non si ritrova legato a nessuna distribuzione in particolare.

Come è fatta una distribuzione GNU/Linux

Ora, prima di esaminare qualche distribuzione specifica, vedremo come è fatta, in generale, una distro GNU/Linux.

Innanzitutto ci riferiremo a distro generalistiche e in versione desktop, ovvero quelle per il normale utente casalingo, tralasceremo quindi totalmente le distribuzioni server, tenendo presente in ogni caso che la maggioranza di distro puo’ essere impiegata per uso professionale e che spesso esistono distro sia in versione desktop sia in versione server.

Schematizzando una distro è composta da:

– un Kernel

– una shell e un insieme di programmi necessari per il funzionamento del sistema e per la sua gestione, quali: bootloader, gestione pacchetti, gestori di finestre etc.

– software aggiuntivi quali web-browser (navigatore internet), suite d’ufficio, player musicali etc.

Il Kernel è il cuore e la parte più interna del sistema, una distro si puo’ caratterizzare principalmente con la versione del Kernel adottata.

Si rimanda alla pagina di Wikipedia per maggiori approfondimenti per le funzioni del kernel in generale, lo stesso per lo specifico Kernel Linux.

Nel già citato sito Kernel.org è presente l’archivio di tutte le versioni Kernel, ed è anche possibile seguirne lo sviluppo in tutti suoi particolari nei quali non scenderemo, è però interessante eseguire un download ad esempio dell’ultima versione stabile, che si presenta come un unico file, linux-3.10.3.tar.xz , di 73,2 MB, dove:

– tar ovvero file generato da sistema di archiviazione che permette di ottenere un file solo da più file, unendoli opportunamente.

In generale un programma non è composto di un solo file ma di più file i quali, al fine di distribuirlo facilmente, vengono archiviati (impacchettati) con un software all’uopo, creando quello che si chiama appunto un pacchetto. Esistono vari modi per impacchettare un software, tar è uno di questi ed è un acronimo di Tape Archive, con riferimento alle vecchie archiviazioni su nastro.

– xz ovvero un file compresso attraverso il programma xz, questo per renderlo dimensionalmente più piccolo, ma senza perdere informazioni.

In definitiva il sorgente del pacchetto Kernel si presenta come un archivio tar compresso xz.

L’impacchettamento e la compressione non sono prerogative dei sistemi Linux, esistono, in ogni caso, molti formati e software, proprietari e non, per eseguire tali operazioni.

Andiamo ora a decomprimere e spacchettare il Kernel.

figura 1

figura 1: Contenuto della cartella linux-3.10.3.

Usando la distro Ubuntu, ma non solo, basta cliccare col tasto destro (ds) e scegliere dal menù contestuale estrai qui, e automaticamente il file verrà decompresso e spacchettato in nella cartella linux-3.10.3 (figura 1), della dimensione di 498,4 MB, quindi l’impacchettamento e la compressione hanno permesso di ottenere un file grande meno del 15% dell’originale, non è poco!

Il Kernel vero e proprio è contenuto in una apposita cartella (kernel), aprendo la quale se ne vedono i numerosi componenti

Contenuto della cartella Kernel.

Contenuto della cartella Kernel.

(figura 2).
Come si può notare quasi tutti i files hanno estensione .c sono cioè file sorgenti in C, come già precedentemente avevamo detto.

 

Contenuto del file bounds.c

Contenuto del file bounds.c

Aprendone uno a caso, bounds.c (figura 3) ad esempio, se ne può apprezzare la struttura ordinata.

Si notino anche i commenti, in blu e compresi fra /* e */.

E’ inutile cercare di capire la funzione di questo file, serve solo a sottolineare, ancora una volta, quanto già è stato spiegato in articoli precedenti, e in particolare:

un file sorgente è comunque un semplice file di testo, in questo caso scritto in C;

sono da notare sia la struttura ordinata che la presenza dei commenti;Non si deve pensare a questi due aspetti come secondari o meramente estetici. Essi sono importantissimi per lo sviluppatore che è così messo nella migliore posizione per poter capire e analizzare facilmente la funzione del file stesso e quindi, potendo analizzare anche gli altri file, comprendere il modo di funzionare di tutto il sistema;

la disponibilità di sorgenti ordinati e commentati è pertanto garanzia di trasparenza di un qualsiasi pacchetto software.

Altri file contenuti nella cartella del linux-3.10.3

Dalla figura 1 si notano altri file tra i quali:

– COPIYNG che contiene la licenza con cui viene rilasciato il Kernel, in questo caso la GPL 2 del Giugno 1991
– CREDITS comprende la lista di tutti (o quasi) coloro che hanno contribuito allo sviluppo del Kernel: è interessante notare come lo stesso sia veramente un lavoro di gruppo e come i singoli componenti siano distribuiti ai quattro angoli del globo, inoltre, per ognuno, viene specificato l’oggetto del contributo, la mail etc.

Sono presenti anche sviluppatori italiani (almeno dal nome e indirizzo) tra i quali:

Andrea Arcangeli

Dario Ballabio

Daniele Bellucci

Mattia Dongili

Riccardo Facchetti

Luca Risolia

Alessandro Rubini

Alessandro Zumm.

Mi scuso se ne ho tralasciato qualcuno, naturalmente sono nomi che risulteranno sconosciuti alla stragrande maggioranza dei lettori, per non dire a tutti, in pratica sono dei Francesco Tarugi qualsiasi. No, non cercate questo nome sul web (non c’è, a differenza del manzoniano Carneade), e non è il cardinale Francesco Maria, eppure il Nostro prese il posto di un famosissimo italiano, anzi, uno dei più famosi a livello mondiale. A loro vanno i più sentiti ringraziamenti miei e, senz’altro, di tutti gli utenti Linux, ringraziamenti che, doverosamente, devono essere estesi a tutti i contributori.

– MAINTAINERS come CREDITS, ma per i manutentori, e qui troviamo un nome nuovo, Stefano Brivio, per il quale vale quanto già detto in precedenza.

Gli altri files presenti contengono le informazioni necessarie sulle modalità di riportare gli errori (REPORTING-BUGS), note di rilascio e istruzioni per la compilazione (README) e altro.

Per finire possiamo dire che il Kernel è veramente un software affidabile e stabile: è molto raro un suo crash (collasso), in genere il blocco è dovuto alle applicazioni.

Nei rari casi di blocco il Kernel lancia un avviso di Kernel panic , avviso che, usando la macchina in modo normale, pochissimi hanno avuto l’occasione di vedere.

Conclusioni

In questo articolo si è visto come si è sviluppato il sistema GNU/Linux, e, in modo particolare, cosa sono le distribuzioni nonché si è brevemente esaminato come si presenta il Kernel nei suoi aspetti esteriori.

di Tullio Bertinelli

 

Linkografia

Naturalmente sul web esistono moltissimi link ai vari argomenti trattati, il rischio è di avere troppe informazioni, qui sono riportati quelli richiamati dal testo.

http://distrowatch.com/

http://linuxcounter.net/

http://linuxcounter.net/guessing.html

http://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg

http://it.wikipedia.org/wiki/Kernel

http://it.wikipedia.org/wiki/Kernel_linux

https://www.kernel.org/

http://it.wikipedia.org/wiki/Carneade

http://it.wikipedia.org/wiki/Francesco_Maria_Tarugi