Da più di un anno ci s'interroga su Windows 95, OS/2 Warp, Windows NT: qual'è il sistema operativo
per PC più sofisticato, il più veloce, il più affidabile, ecc. ?
Cosa è meglio installare sulle nostre macchine sempre più sofisticate, sempre più dotate di
mips, RAM e tanto, tanto spazio su hard disk?
Diciamo la verità, il 1995 è stato, informaticamente parlando, un anno importante sotto almeno
un punto di vista:
un numero consistente di utenti si è reso conto dell'inadeguatezza del DOS e della sua simpatica (?)
interfaccia grafica, responsabili della necessità di caricare QEMM & Co. per avere liberi i fatidici
600 KB di RAM (su macchine che ne hanno mediamente 8 MB), di utilizzare extenders quali il DOS4GW o
il GO32 per infrangere la tristissima barriera dei 16-bit-modo-reale (su processori a 32 bit da ormai
10 anni), di impiccarsi con driver più o meno contorti (non per colpa loro) quali Disk Manager e simili
per gestire più di 1024 dannati cilindri di HD, e via discorrendo ...
Quale che sia la scelta finale dell'utente, la comunità PC si avvia dunque verso l'utilizzo di
sistemi operativi più adeguati ai tempi e alle potenzialità dell'hardware; e questo è un aspetto positivo.
Tuttavia, i S.O. che ho citato prima non sono "casuali": ci sono stati, in una certa misura, "imposti"
da pubblicità martellanti e da periodici specializzati forse troppo avvezzi a seguire il branco (o ...le
pressioni di certi gruppi).
Possibile, dunque, che non ci siano altri sistemi desktop al di fuori di
Windows ed OS/2?
Certo, dirà qualcuno, c'è la grande famiglia Unix: i "veri" Sistemi Operativi, nati per il multitasking
e il multiuser, adattissimi al crescente bisogno di networking, robusti, potenti e collaudati.
Gli Unix, tuttavia, sono mediamente piuttosto ingordi di RAM e spazio su disco, hanno poche applicazioni
appetibili per la classica utenza SOHO (Small Office and Home Office), e per di più costano (assai) cari.
Bene, da un po' di tempo non è più così: mai sentito parlare di Linux ?
Nato grazie al talento di uno studente di informatica un po' fuori dagli schemi, il finlandese Linus
Torvalds, Linux è uno Unix, ma uno Unix particolare: pur protetto da copyright, è
infatti liberamente distribuibile, sorgenti compresi.
Vale allora la pena soffermarsi a parlare di questo validissimo sistema operativo, adottato da
centinaia di migliaia di persone e che ha favorito, come vedremo, la nascita di tanti piccoli siti
Internet in tutto il mondo.
Linux nasce nei primi anni Novanta, quasi per caso: Torvalds voleva esercitarsi nella programmazione
assembler dell'80386 in modo protetto, così scrisse un semplice scheduler in grado di permettere un
rudimentale multitasking tra due processi; in quel periodo, lo Unix più popolare tra gli studenti d'informatica era Minix, scritto dal professor Andy Tanembaum a scopo principalmente didattico e venduto,
completo di sorgenti, ad un prezzo decisamente contenuto rispetto a tutti gli altri Unix.
Internet ospitava un gruppo di discussione (newsgroup) su Minix, cui partecipava anche Linus; proprio
tra gli utenti di questo gruppo saranno reclutati, alcuni mesi più tardi, i primi tester di Linux,
che Torvalds stava sviluppando da solo con l'intenzione di sperimentare il più possibile.
La prima versione di Linux ad essere testata da altri che Linus stesso e pochi intimi non era neppure
un vero sistema operativo: composto praticamente dal solo kernel, richiedeva Minix per partire;
tuttavia, con il passaggio al linguaggio C, Linux stava crescendo rapidamente, e il suo autore pensava
già di farne "un miglior Minix di Minix". Man mano che Linux progrediva, un numero sempre maggiore di
programmatori e sistemisti Unix si interessava al progetto, aderendo entusiasticamente agli appelli
periodicamente lanciati dall'autore, intesi a creare un vero e proprio "team" di sviluppo distribuito
un po' in tutto il mondo (chi se non Internet poteva permettere tutto ciò ?). Un apporto fondamentale
veniva poi dal patrimonio GNU, prontamente adattato e adottato.
Tralasciando le varie fasi dello sviluppo, veniamo ai giorni nostri:
Linux è attualmente uno Unix assai moderno e funzionale, molto efficiente e continuamente aggiornato.
Strutturalmente, fonde aspetti tipici degli Unix di derivazione BSD con altri tipicamente System V; si può anzi
affermare che raccoglie le idee migliori dei due mondi.
Tecnicamente, Linux è uno Unix aderente allo standard POSIX; basato su un kernel monolitico ma reso flessibile dalla
possibilità di caricare come moduli runtime molte sue parti (es. supporti per periferiche, driver per file system,
moduli di rete, ecc.), adotta per i propri eseguibili il formato binario ELF.
Multitasking, multiuser ma non multithreading (d'altronde, sono pochi gli stessi Unix commerciali multithreading),
Linux fa largo uso di shared libraries.
Ciò, unito alla buona compattezza delle librerie stesse e alla notevole efficienza del compilatore GNU
C/C++di cui è dotato, permette di ottenere eseguibili compatti ed efficienti (compreso lo stesso kernel): all'atto pratico,
Linux è lo Unix per x86 con le più basse richieste hardware (CPU e RAM). Lo scheduler compatto ed efficace (preemptive,
pur se a quantum fisso), la notevole cura con cui sono realizzati la maggior parte dei device drivers e le elevate
prestazioni del file system proprietario (Extended-2 File System) fanno il resto: la piattaforma minima richiesta per
Linux è un 386 (anche SX) con 4 MB di RAM (lo spazio minimo richiesto su HD è di 40MB, consigliati almeno 100),
indicativamente potete aspettarvi un ottimo multitasking Unix da una macchina 486 con 8MB di RAM e dischi IDE (specie
rinunciando al sistema grafico X-Window: d'altronde, Linux ha un impareggiabile supporto per le
console modo testo ed un interessante sistema grafico full-screen in continuo sviluppo, SVGALIB, veloce e poco avido
di risorse); è possibile realizzare un completo server WWW con un Pentium, 16 MB di RAM e un buon HD EIDE senza soffrire
complessi di inferiorità rispetto a sistemi più blasonati e ben più costosi.
I ridotti costi di installazione e gestione hanno incoraggiato, come si diceva, la nascita di numerosi nodi Internet
medio-piccoli: fino a due anni fa, allestire un nodo imponeva spese proibitive in hardware e software (linea dedicata
a parte, un server http consisteva tipicamente in una SparcStation con SunOS); serviva, in più, personale con
esperienza su piattaforme Sun.
Tornando all'hardware, va sottolineato che Linux è uno Unix multipiattaforma: a dispetto della specificità del kernel,
inizialmente sviluppato in assembler 386, sono stati realizzati (e sono in continuo sviluppo) porting per gli hardware
più vari; oltre alla celebre architettura a 64 bit Digital ALPHA (la stessa Digital ha favorito il porting, assistendo
Torvalds e dotandolo di una macchina su cui sperimentare), per la quale presto Linux rappresenterà un'alternativa
"ufficiale" al costoso Digital Unix, ci sono versioni per Sparc, M.I.P.S., PowerPC, sistemi Motorola 68k (Amiga,
Macintosh, Atari), Acorn ARM, Fujitsu AP1000.
E' inoltre in fase di sviluppo una versione SMP (multiprocessore) del Linux per x86, basata sulle specifiche Intel
SMP 1.1 per x86: release sperimentali girano già su piastre Pentium biprocessore.
Linux è un sistema molto dinamico, in continuo sviluppo: quotidianamente, gruppi di lavoro in tutto
il mondo collaborano tramite Internet per sviluppare le varie parti del sistema, particolarmente il kernel, che
progredisce con un tasso sconosciuto agli altri Unix.
Per conciliare le opposte esigenze di sperimentare nuove soluzioni su un significativo parco utenti, e
contemporaneamente di assicurare una buona stabilità e affidabilità al sistema, Torvalds & Co. hanno creato, di
fatto, due "linee di produzione": una deputata al rilascio di versioni "stabili", caratterizzata da un'evoluzione
tesa più al bug-fixing e al miglioramento della coerenza e della solidità del sistema, e una dedicata allo sviluppo
di versioni "sperimentali", caratterizzata dalla continua introduzione di soluzioni avanzate, tese al miglioramento
delle prestazioni e al supporto di periferiche sempre nuove (Linux è uno dei sistemi operativi per x86 con la miglior
dinamica nel supporto alle periferiche; conta altresì il più ampio parco di periferiche supportate tra gli Unix per
PC). Questa suddivisione permette agli "smanettoni" d'avere sempre un sistema aggiornatissimo (le patch d'aggiornamento per il kernel escono mediamente 2 volte a settimana), pagando lo scotto del beta-testing, e parallelamente
permette a chi non può permettersi di rischiare (es. società) di avere la necessaria tranquillità.
Tradizionalmente, le versioni del kernel denominate con seconda cifra pari (es. 1.0.9, 1.2.13) appartengono alla
linea "stabile", mentre quelle con seconda cifra dispari (1.1.58, 1.3.99) alla linea "sperimentale".
Periodicamente, le versioni vengono riallineate: così, la 1.1.99 è stata l'ultima versione "sperimentale", dopo la
quale è nata la 1.2.0; generalmente, comunque, lo sviluppo procede in parallelo per le due linee sin quando la
linea "stabile" non ha raggiunto una release considerata "soddisfacente".
Linux è, come detto, liberamente distribuibile: è possibile scaricarlo da Internet o
acquistarlo in CD-ROM a basso prezzo, sempre con il permesso di copiarlo liberamente.
Non esiste una versione "unica" del sistema operativo nel suo complesso; ovvero, per intenderci, non esiste un unico
"CD di Linux". Il sistema è, infatti, organizzato in "distribuzioni".
Una manualistica in crescita, e spesso free, è utilissima per conoscere Linux da varie
angolazioni e apprezzarne le potenzialità sia in ambito hobbistico che professionale; ma lo spirito stesso di questo
Sistema spinge a provare, installandolo sul proprio PC: niente può sostituire l'esperienza diretta, in questo caso
davvero a costo zero!
Nei prossimi articoli, affronteremo più in dettaglio alcuni aspetti tecnici di Linux, daremo uno sguardo al panorama
delle numerosissime applicazioni native (free e non), e per finire illustreremo passo-passo l'installazione completa
del sistema da CD-ROM; nel frattempo, consiglio una visita al sito WWW di Linux,
www.linux.org.
In prospettiva, questa rubrica ospiterà regolarmente notizie dal mondo Linux, con commenti tecnici e recensioni
software.
Distribuzioni
Sono "raccolte di software" che contengono il sistema-base (kernel, utility, tools vari -compilatori, sistema grafico X,
etc.-) e una scelta più o meno vasta di applicazioni (tipicamente free anch'esse).
Ciascuna distribuzione differisce per aspetti quali l'organizzazione delle directory, le modalità di installazione,
la scelta delle applicazioni, la presenza di eventuali applicazioni "custom"; ma tutte le distribuzioni garantiscono,
al termine dell'installazione, un sistema completo e funzionante.
Le distribuzioni più note sono la Slackware e la Debian; ultimamente ha incontrato un certo favore
anche la Red Hat.
Non bisogna confondere il concetto di distribuzione con quello di CD set: in un set di CD di Linux sono
spesso presenti più distribuzioni (un esempio per tutti: il set di 6 CD Infomagic Developer's Resource contiene le
distribuzioni Slackware, Debian, Red Hat), ciascuna con la propria documentazione e routine di
installazione.
Basti poi pensare che è possibile scaricare una distribuzione da Internet.
ELF: Executable and Linking Format
Formato binario adottato da diversi Unix, in alternativa al più vecchio a.out
Con il formato a.out, le librerie dinamiche devono essere caricate in "punti fissi" dello spazio di indirizzi
virtuale del sistema operativo; con l'elf, invece, ciò non è più necessario.
Questo comporta una maggior facilità nell'uso delle librerie dinamiche: mentre con l'a.out il programmatore deve
preoccuparsi che non generino conflitti di indirizzo quando vengono richiamate in memoria da un'applicazione, con
l'elf il problema non sussiste più, in quanto gli indirizzi di base di queste librerie possono essere traslati a
tempo di esecuzione.
Un più ampio ed efficiente uso delle librerie dinamiche permette, almeno in linea generale, di ottimizzare lo
sfruttamento della memoria del sistema e di contenere la dimensione dei file eseguibili; per contro, nei sistemi x86
si paga una piccola penalità in prestazioni (stimabile in valori dall'1% al 5% a seconda dei casi) dovuta alla
necessità di dedicare uno dei pochi registri interni delle CPU x86 alla memorizzazione di un offset reso necessario
dalla suddetta indipendenza di indirizzo per il codice delle librerie (in processori aventi un buon numero di
registri interni ad uso generico, questo non costituisce un problema).
FSF: Free Software Foundation
Associazione fondata negli anni '80 da Richard Stallman, ex programmatore e ricercatore MIT, con lo scopo di
sviluppare e promuovere software di libera distribuzione, in opposizione con il software commerciale, tipicamente
"chiuso": nell'accezione FSF, deve essere possibile studiare, modificare e copiare il software (che quindi va
fornito completo di sorgenti), affinché il patrimonio culturale del mondo informatico possa beneficiare dell'opera di
ognuno (e affinché non sia necessario, spesso, "reinventare la ruota" per motivi di copyright).
Il progetto più importante della FSF è senz'altro lo GNU Project; tuttavia, va sottolineata
l'influenza che la filosofia della FSF ha avuto su un'intera generazione di programmatori; influenza che certamente
ha pesato, ad esempio, sul progetto Linux.
Un interessante "estratto" di questo modo di pensare è rappresentato dal
manifesto GNU e dal celebre GNU copyleft, la particolare forma di copyright
con cui viene tutelato il software GNU e ormai adottata da molti altri gruppi di sviluppo di free software.
GCC: Gnu C Compiler
Compilatore C/C++ sviluppato nell'ambito del progetto GNU.
Si tratta di un compilatore free in grado di generare codice per un gran numero di piattaforme hardware: tra queste,
Intel x86, Sparc, MIPS, Alpha, HP PA. Dotato di capacità di cross-compiling, è fornito di numerosi tool.
La notevole versatilità ed efficienza di questo compilatore (sia in termini di tempo di compilazione che di velocità e compattezza
del codice prodotto), insieme alla sua natura di free software, spingono molti programmatori Unix ad adottarlo in
luogo dei compilatori proprietari delle piattaforme utilizzate; inoltre, la sua presenza (in connubio con le librerie
di sistema sviluppate dallo stesso progetto GNU) ha permesso lo sviluppo di sistemi Unix free quali Linux, FreeBSD,
GNU stesso (GNU HURD).
E' stato portato con successo anche sotto sistemi operativi non Unix, quali DOS (il porting più noto, per opera di D.J.
Delorie, si chiama DJGPP ed incorpora un DOS Extender a 32 bit), OS/2 (EMX, nato grazie a Eberhard Mattes),
WindowsNT.
GNU: Gnu's Not Unix
Il progetto GNU nasce per iniziativa di Richard Stallman e più in generale della FSF alla fine
degli anni '80.
Lo scopo è sviluppare un sistema operativo Unix "free", ovvero di libera distribuzione (concetto in realtà meno
intuitivo di quanto potrebbe sembrare), in opposizione agli Unix commerciali, protetti da rigidi vincoli legali che
impediscono, ad esempio, la libera diffusione del codice sorgente.
Il manifesto GNU chiarisce meglio lo spirito del progetto, tuttora in sviluppo; ad ogni
modo, la realizzazione di un sistema interamente GNU (kernel compreso) procede a rilento, principalmente per le
difficoltà tecniche presentate dallo sviluppo del kernel GNU HURD; così, una larga parte del
software GNU è stato sfruttato dagli sviluppatori di Linux per completare il sistema operativo, che va dunque
guardato come un "sistema Linux - GNU".
Il notevole (sia dal punto di vista quantitativo che qualitativo) bagaglio di software GNU è stato sfruttato anche al
di fuori del mondo Unix; basti pensare al successo del compilatore GNU C/C++, dell'editor Emacs,
delle GNU File Utilities, etc. nelle versioni per sistemi operativi quali DOS, OS/2, NT.
HURD: Hirds of Unix-Replacing Daemons
Kernel GNU in fase di sviluppo.
Si tratta in realtà dello "strato superiore" che ricopre il microkernel MACH su cui il sistema operativo GNU si basa
(presentandosi, in effetti, come uno dei pochi Unix a microkernel; ad esempio, Linux usa un kernel monolitico), cui passa
i messaggi.
La struttura a microkernel e il basarsi interamente sulla libreria standard di sistema GNU libc rendono HURD un sistema
molto interessante, giacchè potenzialmente assai versatile ed elastico, ed in grado di essere portato con grande
facilità sotto le più svariate piattaforme hardware; inoltre, la struttura a microkernel permetterebbe secondo molti
una miglior efficienza nel campo dello sfruttamento della memoria. All'atto pratico, è noto che le principali società
di sviluppo di Sistemi Operativi, Unix e non, si muovono decisamente verso strutture a microkernel.
Purtroppo, le difficoltà tecniche presenti nello sviluppo di un sistema innovativo quale GNU HURD, coniugate forse
alle scarse risorse in ore-lavoro a disposizione degli sviluppatori, ne hanno rallentato molto lo sviluppo; ad ogni
modo, vengono periodicamente rese disponibili su Internet mini-distribuzioni (sorgenti o binarie) in alpha test.
La lentezza nello sviluppo di HURD ha spinto molti a chiedersi se a questo punto non sia meglio dedicare tutte le
energie alla crescita del sistema Linux, ormai considerato la "bandiera" degli OS free: discussioni al riguardo
possono essere trovate nelle FAQ dell'area Usenet gnu.misc.discuss, comunque la posizione assunta dalla FSF è
che HURD, essendo tecnicamente più avanzato (almeno sul piano teorico), sarebbe in grado di "battersi" meglio contro i
sistemi operativi commerciali dei prossimi anni; ad ogni modo, lo sviluppo di HURD non toglie risorse significative a
quello di Linux, il cui team è senz'altro numeroso.
E comunque, due Sistemi Operativi free sono meglio di uno ...
Per maggiori informazioni on-line su GNU HURD, consiglio:
www.cs.pdx.edu/~trent/gnu/hurd/
La documentazione su Linux
Inizialmente, il team di sviluppo di Linux pareva considerare la documentazione come del tutto secondaria rispetto
allo sviluppo del sistema; il che, poiché i primi utenti di Linux erano gli stessi componenti del team (o quantomeno
hackers Unix, dotati di notevoli conoscenze e/o tempo da investire), non sorprende; tuttavia, man mano che il
sistema raggiungeva una base di utenza sempre maggiore, la necessità di una documentazione organica, chiara e
aggiornata diventava pressante, pena la frustrazione dei neoutenti e il collasso delle (sempre più numerose)
newsgroup Usenet dedicate a Linux.
La nascita del Linux Documentation Project (vedere il sito www.linux.org) è
stata la risposta logica a questa necessità.
Attualmente, oltre alle complete man pages e alla documentazione in forma texinfo, gli utenti dispongono
di diverse guide freeware specifiche: sottolineo la preziosa Linux Installation and Getting Started, la
Sistem Administrator's Guide, la Network Administrator's Guide (utilissima anche ai TCP network
administrators che non usano Linux); i programmatori troveranno utili la Linux Programmer's Guide e la
Kernel Hacker's Guide.
Tutte queste guide sono disponibili su Internet (tipicamente in formato Postscript), come riferimento cito
sunsite.unc.edu/pub/Linux/docs/LDP/. Ovviamente, i CD set di
Linux le contengono anch'essi.
Linux su Internet
Nato su Internet, Linux è, ovviamente, molto presente sulla Rete delle Reti.
Il sito-base è www.linux.org, sul quale è possibile trovare una grande quantità di
informazioni aggiornate su Linux e sui progetti ad esso correlati, nonché link a svariati siti FTP per scaricare
distribuzioni, applicazioni, documentazione, etc.
Ad ogni modo, è qui opportuno sottolineare siti FTP "storici", quali
Sunsite presso l'Università della California, TSX-11 presso il MIT.
Più vicino a noi, merita attenzione il sito FTP dell'Università di Padova: oltre
ad effettuare un prezioso mirror di Sunsite, ospita materiale specifico quale il Progetto PLUTO, una
distribuzione di Linux completamente in Italiano.
Il progetto XFree86
Nato nel 1992 su iniziativa di quattro programmatori, il progetto XFree86 si prefissava l'obiettivo di rendere
disponibile un X server per tutti gli Unix versione x86; a quel tempo, infatti, gli X server per piattaforma Intel
non erano molto stabili, ed avevano prestazioni poco soddisfacenti.
L'avvento di sistemi operativi Unix "free", come Linux, ha dato un notevole impulso al progetto, che ha prodotto
finora (Maggio 96) 7 versioni di XFree86; l'ultima (3.1.2) si basa su X11R6, e supporta un numero di schede video per
PC veramente elevato.
Il team originario di XFree86 si è espanso ed evoluto, fino a costituire un'organizzazione senza fini di lucro
denominata The XFree86 Project, Inc., che dal 1994 aderisce all'X Consortium.
E' in fase di sviluppo una versione di XFree86 per il sistema operativo OS/2.
Per maggiori informazioni conviene visitare il sito WWW del Progetto XFree86:
www.xfree86.org; per saperne di più sul sistema grafico X Window in generale, segnalo
www.x.org.
|