Giu 07 2008

BSD vs Linux

Tag:Tag , , , , , crackmaker @ 13:58

tux_bsdDa un pò di tempo avevo l’intenzione di sperimentare nuovi sistemi operativi. In particolare l’idea di smanettare con qualche SO basato su BSD era sempre più forte nonostante la consapevolezza che eventuali problemi relativi alla disponibilità dei driver mi avrebbe reso la vita un pò più complicata. In questo articolo cercherò di esporre quelle che sono le principali differenze tra una distribuzione BSD e una distribuzione Linux .

Innanzitutto BSD sta per ‘Berkeley Software Distribution”. È il nome delle distribuzioni di codice sorgente dell’Università della California, Berkeley, che erano originariamente estensioni al sistema operativo UNIX del settore Ricerca della AT&T. Molti progetti open source di sistemi operativi sono basati su una versione di questo codice sorgente noto come 4.4BSD-Lite. Inoltre, essi comprendono un gran numero di pacchetti provenienti da altri progetti Open Source, incluso, in particolare, il progetto GNU. L’intero sistema operativo comprende:

  • Kernel. Diversamente dal kernel Linux, ci sono differenti kernel BSD con differenti caratteristiche.
  • Libreria C. La libreria C BSD è basata su codice proveniente da Berkeley, non dal progetto GNU.
  • Applicazioni. Alcune delle applicazioni derivano dal progetto GNU, altre no.
  • X. L’X Window System usato nella maggior parte delle versioni di BSD viene mantenuto da uno dei due progetti separati, il progetto XFree86 e il progetto X.Org Questo è lo stesso codice usato da Linux. BSD in genere non specifica un ‘desktop grafico” come GNOME o KDE, anche se questi sono disponibili.
  • Utilità. Shell, file manager, compilatori e linker

BSD è creato e distribuito da una comunità di persone con grande preparazione tecnica e voglia di fare che contribuiscono da tutto il mondo. Alcuni dei componenti di BSD sono progetti open source a se stanti gestiti da diversi responsabili.

Il kernel BSD viene sviluppato ed aggiornato secondo il modello di sviluppo open source. Ogni progetto mantiene un albero dei sorgenti liberalmente accessibile in un Concurrent Versions System, un sistema di gestione delle versioni concorrenti, che contiene tutti i file sorgenti del progetto, inclusa la documentazione ed altri file inerenti.

Un grande numero di sviluppatori da tutto il mondo contribuisce al miglioramento di BSD. Essi sono divisi in tre grandi gruppi.

  • I contributor scrivono codice o documentazione. Non gli è permesso di effettuare il commit (aggiungere codice) direttamente all’albero dei sorgenti. Affinché il loro codice sia incluso nel sistema, esso deve essere rivisto e controllato da uno sviluppatore registrato, noto come committer.
  • I committer sono sviluppatori con accesso in scrittura all’albero dei sorgenti. Per poter divenire un committer, un individuo deve dimostrare abilità nell’area nella quale è attivo.
  • Il core Team. FreeBSD e NetBSD hanno ognuno un core team che gestisce il progetto. I core team si sono modificati nel corso del progetto, ed i loro ruoli non sempre sono ben definiti. Non è necessario essere uno sviluppatore per far parte del core team, anche se di norma è così. Le regole per il core team variano da un progetto ad un altro, ma in generale chi ne fa parte ha più autorità nell’indirizzamento del progetto rispetto agli altri membri.

Questa organizzazione differisce da Linux in vari modi. Nessuna persona controlla il contenuto del sistema. In pratica, questa differenza è sopravvalutata, poiché il Capo Architetto può richiedere che il codice sia rimosso, ed anche nel progetto Linux viene permesso a molte persone di effettuare cambiamenti. D’altra parte, c’è un deposito centrale, un punto singolo dove è possibile trovare i sorgenti dell’intero sistema, incluse tutte le vecchie versioni.
I progetti BSD mantengono l’intero “Sistema Operativo”, non solo il kernel. Questa distinzione è utile solo marginalmente: né BSD né Linux sono utili senza applicazioni. Le applicazioni usate su BSD sono spesso le stesse usate su Linux.
Come risultato di un mantenimento formalizzato di un singolo CVS per l’albero dei sorgenti, lo sviluppo di
BSD è chiaro, ed è possibile accedere ad ogni versione del sistema dal numero di release o dalla data. Il

CVS permette anche aggiornamenti incrementali del sistema: ad esempio, il repository di FreeBSD viene aggiornato più o meno 100 volte al giorno anche se la maggior parte dei cambiamenti sono piccoli.

Esistono diverse release di BSD. FreeBSD, NetBSD and OpenBSD fomiscono il sistema in tre “release” differenti. Come per Linux, alle release vengono assegnati dei numeri come 14.1 o 3.5. Inoltre, il numero di versione ha un suffisso che indica il suo scopo.

La versione di sviluppo del sistema è chiamata CURRENT. FreeBSD assegna un numero alla CURRENT, ad esempio FreeBSD 5.0-CURRENT. NetBSD usa uno schema di denominazione leggermente differente ed aggiunge un suffisso di una singola lettera che indica i cambiamenti nell’interfaccia interna, ad esempio NetBSD 14.3G. OpenBSD non assegna un numero (”OpenBSDcurrent”) Tutti gli sviluppi del sistema vanno in questo ramo. A intervalli regolari, tra le due e le quattro volte all’anno, i progetti fanno uscire una versione RELEASE del sistema, disponibile su CD-ROM e come libero download da siti FTP, ad esempio OpenBSD 2.6-RELEASE o NetBSD 14-RELEASE. La versione RELEASE è intesa per gli utenti finali ed è la versione normale del sistema. NetBSD fornisce anche patch release, versioni con solo piccole correzioni, con una terza cifra, ad esernpio NetBSD 1.4.2. Quando vengono trovati dei bug in una versione RELEASE, vengono corretti, e le correzioni vengono aggiunte all’albero del CVS. In FreeBSD, la versione risultante viene detta STABLE, mentre in NetBSD ed OpenBSD continua a chiamarsi RELEASE. Caratteristiche minori possono essere aggiunte a questo ramo dopo un periodo di test nel ramo CURRENT. ln contrasto, Linux mantiene due alberidi codice differenti: lo versione stabile e la versione di sviluppo. Le versioni stabili hanno un numero di versione pari, come 2.0, 2.2 o 2.4. Le versioni di sviluppo hanno numero di versione dispari, come 2.1, 2.3 o 2.5. In ogni caso, il numero è seguito da un ulteriore numero che indica la versione esatta. Inoltre, ogni venditore aggiunge i suoi programmi utente o le sue utilità, dunque anche il nome della distribuzione è importante. Ogni venditore di distribuzione assegna anche un numero di versione alla distribuzione, dunque una descrizione completa dovrebbe essere una cosa del tipo ‘TurboLinux 6.0 con kernel 2.2.14″

In contrasto alle numerose distribuzioni Linux, ci sono solo quattro BSD open source. Ogni progetto BSD mantiene il suo albero dei sorgenti ed il suo kernel. In pratica, comunque, ci sono meno divergenze tra i codici dei programmi utente dei vari progetti di quante ce ne siano in Linux. È difficile catalogare gli obiettivi di ogni progetto: le differenze sono molto soggettive.

Di base, FreeBSD punta alle alte prestazioni e alla facilità d’uso per l’utente finale, ed è molto usato dai fornitori di contenuti web. Funziona su diverse piattaforme, inclusi i sistemi basati su i386 (’PC”), i sistemi basati sui processori AMO a 64-bit, i sistemi basati su UltraSPARC®, i sistemi basati su processori Alpha della Compaq e i sistemi basati sulle specifiche NEC PC-98. Il progetto FreeBSD ha nettamente più utenti degli altri.

NetBSD punta alla massima portabilità: (’of course it runs NetBSD” - ovviamente ci gira NetBSD). Funziona su macchine che vanno dai palmtop ai grossi server, ed è anche stato usato dalla NASA in alcune missioni spaziali. È una scelta particolarmente buona per il vecchio hardware non Intel.

OpenBSD punta alla sicurezza e alla purezza del codice: usa una combinazione dei concetti open source e un rigoroso controllo del codice per creare un sistema lo cui correttezza sia dimostrabile, rendendolo lo scelta
di organizzazioni attente alla sicurezza come banche, borse e dipartimenti del governo statunitense. Come NetBSD, funziona su un gran numero di piattaforme.

DragonFlyBSD punta ad alte prestazioni e scalabilità sotto qualsiasi sistema dal singolo sistema mono-processore al sistema massicciamente clasterizzato. DragonFlyBSD ha diversi obbiettivi a lungo termine, anche se è concentrato nel fornire un’infrastruttura SMP facile da capire, mantenere e sviluppare.

Ci sono anche altri due sistemi operativi BSD che non sono open source, BSD/OS e il Mac OS® X della Apple.
BSD/OS fu il pù antico dei derivati di 4.4BSD. Non fu open source, anche se le licenze per il codice sorgente erano disponibili ad un costo relativamente basso. Per molti aspetti assomiglia a FreeBSD. Due anni
dopo l’acquisizione di BSDi da parte di Wind River Systems, BSD/OS non riuscì a sopravvivere come prodotto indipendente. Supporto e codice sorgente sono ancora disponibili da Wind River, anche se tutto il nuovo sviluppo è concentrato sul sistema operativo embedded VxWorks.
Mac OC X è l’ultima versione del sistema operativo per lo linea Macintosh® della Appie Computer Inc. L’anima BSD UNIX di questo sistema operativo, Darwin, è disponibile come un sistema operativo open source completamente funzionante per computer x86 e ppc. Il sistema grafico Aqua/Quartz e molti altri aspetti proprietari di Mac OS X rimangono comunque closed source. Numerosi sviluppatori di Darwin sono anche committer di FreeBSD, e viceversa.

Linux è disponibile con licenza GNU Genaral Public License (GPL), che è pensata per eliminare il software closed source. In particolare, ogni lavoro derivante da un prodotto rilasciato sotto GPL deve essere fornito anche con il codice sorgente, se richiesto. AI contrario, lo licenza BSD è meno restrittiva: le distribuzioni dei soli binari sono permesse Ciò è particolarmente attraente per le applicazioni embedded.

Poiché sono disponibili meno applicazioni per BSD che per Linux, gli sviluppatori BSD hanno creato un pacchetto di compatibilità con Linux, che permette ai programmi per Linux di funzionare su BSD. Il pacchetto include sia modifiche al kernel, in modo da permettere l’esecuzione corretta di chiamate di sistema Linux, che file di compatibilità, come la libreria C. Non c’è una differenza notevole nella velocità di esecuzione tra una applicazione in esecuzione su una macchina Linux ed una applicazione in esecuzione su una macchina BSD con pari caratteristiche.
La natura “tutto da una sola fonte” di BSD fa sì che gli aggiornamenti siano molto più semplici da gestire rispetto alla maggior parte dei casi in Linux. BSD gestisce gli aggiornamenti della versione di libreria fornendo moduli di compatibilità per le versioni precedenti, dunque è possibile eseguire binari di parecchi anni prima senza problemi

A questo punto chi dovrebbe usare BSD e chi dovrebbe usare Linux?
Questa è una domanda molto difficile a cui rispondere. La linea guida potrebbe essere: “Se non è rotto, non aggiustarlo” cioè, se usi già un sistema operativo open source, e ne sei soddisfatto, probabilmente non c’è ragione di cambiare.
I sistemi BSD, in particolare FreeBSD, possono avere prestazioni notevolmente migliori di Linux. Ma questo non avviene in tutti i campi. In molti casi, c’è una differenza minima nelle prestazioni. In alcuni casi, Linux può comportarsi meglio di FreeBSD. In generale, i sistemi BSD hanno una reputazione migliore di affidabilità, principalmente come risultato di una base di codice più maturo.
I progetti BSD hanno una reputazione migliore per quanto concerne qualità e completezza della loro documentazione. I diversi progetti di documentazione mirano a fornire attivamente documentazione aggiornata, in molte lingue, e coprendo tutti gli aspetti del sistema.
La licenza BSD può essere più attraente della GPL. BSD può eseguire lo maggior parte dei binari Linux, mentre Linux non può eseguire i binari BSD. Molte implementazioni di BSD possono anche eseguire i binari di altri sistemi di tipo UNIX. Come risultato, BSD può rappresentare un percorso di migrazione più semplice da altri sistemi rispetto a Linux.

Allora potremmo chiederci…perchè BSD è poco conosciuto? Per un certo numero di ragioni. Gli sviluppatori BSD sono spesso più interessati a ripulire il loro codice che a fagli pubblicità. Molta della popolarità di Linux è dovuta a fattori esterni al progetto Linux, come la stampa, e le compagnie formate per fornire servizi relativi a Linux. Fino a poco tempo fa, le varie versioni di BSD open source non avevano tali spinte. Gli sviluppatori BSD tendono ad avere più esperienza di quelli di Linux, ed hanno meno interesse nel rendere il sistema facile da usare. I nuovi arrivati tendono a sentirsi più a loro agio con Linux.

Lascia una risposta