# Panoramica su BSD

Greg
Lehey

    grog@FreeBSD.org

&tm-attrib.freebsd; &tm-attrib.apple; &tm-attrib.linux; &tm-attrib.opengroup; &tm-attrib.sun; &tm-attrib.xfree86; &tm-attrib.general;

Nel mondo open source, la parola Linux è quasi sinonimo di Sistema Operativo, ma non si tratta del solo sistema operativo &unix; open source. Secondo l'Internet Operating System Counter, ad Aprile del 1999 il 31.3% delle macchine connesse in rete ha in esecuzione Linux. Il 14.6% fa girare BSD &unix;. Alcuni dei più grandi operatori del web, come Yahoo!, usano BSD. Il server FTP più affollato del mondo, ftp.cdrom.com, usa BSD per trasferire 1.4 TB di dati al giorno. Chiaramente questo non è un mercato di nicchia: BSD è un segreto ben mantenuto.

Dunque, qual è il segreto? Perché BSD non è conosciuto meglio? Questo documento risponde a questa e ad altre domande.

In questo documento, le differenze tra BSD e Linux verranno evidenziate così.

&trans.it.surrender;

## Cos'è BSD?

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:

- Il kernel BSD, che gestisce lo scheduling dei processi, l'utilizzo della memoria, il supporto multiprocessore (SMP), i driver dei vari dispositivi, ecc.

  Diversamente dal kernel Linux, ci sono differenti kernel BSD con differenti caratteristiche.

- La libreria C, le API di base per il sistema.

  La libreria C BSD è basata su codice proveniente da Berkeley, non dal progetto GNU.

- Utilità come shell, file manager, compilatori e linker.

  Alcune delle applicazioni derivano dal progetto GNU, altre no.

- L'X Window System, che gestisce la visualizzazione grafica.

  L'X Window System usato nella maggior parte delle versioni di BSD viene mantenuto come un progetto separato, il progetto &xfree86;. Questo è lo stesso codice usato da Linux. BSD in genere non specifica un desktop grafico come GNOME o KDE, anche se questi sono disponibili.

- Molti altri programmi ed utilità.

## Cosa, un vero &unix;?

I sistemi operativi BSD non sono cloni, ma derivati open source del sistema operativo &unix; dell'AT&T Research, che è anche l'antenato del moderno &unix; System V. Questo potrebbe sorprendere. Come è potuto accadere questo, se la AT&T non ha mai rilasciato il suo codice come open source?

È vero che lo &unix; AT&T non è open source, e nel senso del copyright BSD in definitiva non è &unix;, ma d'altro canto l'AT&T ha importato sorgenti da altri progetti, in maniera rilevante dal Computer Sciences Research Group dell'Università della California a Berkeley, CA. Iniziato nel 1976, il CSRG ha iniziato a rilasciare nastri con il loro software, chiamandolo Berkeley Software Distribution o BSD.

Le versioni iniziali di BSD consistevano principalmente di programmi utente, ma questo cambiò drammaticamente quando il CSRG sottoscrisse un contratto con la Defense Advanced Projects Research Agency (DARPA) per migliorare i protocolli di comunicazione della loro rete, ARPANET. I nuovi protocolli furono conosciuti come Internet Protocols, e in seguito come TCP/IP, ai nomi dei protocolli più importanti. La prima implementazione distribuita in maniera estesa fu parte di 4.2BSD, nel 1982.

Nel corso degli '80, sorsero un certo numero di compagnie che producevano workstation. Molti preferirono usare &unix; su licenza piuttosto che sviluppare da soli un nuovo sistema operativo. In particolare, la Sun Microsystems rilicenziò &unix; ed implementò una versione commerciale di 4.2BSD, che chiamò SunOS. Quando alla AT&T stessa fu permesso di vendere &unix; commercialmente, cominciarono con una implementazione ridotta all'osso nota come System III, presto seguita da System V. Il codice fondamentale di System V non comprendeva la parte di rete, dunque tutte le implementazioni includevano software addizionale tratto da BSD, incluso il software legato al TCP/IP, ma anche utilità come la shell csh e l'editor vi. Complessivamente, questi miglioramenti furono conosciuti come le Estensioni Berkeley.

Il nastro BSD conteneva codice AT&T e dunque richiedeva una licenza per il sorgente &unix;. Dal 1990, il finanziamento del CSRG si stava esaurendo, e se ne stava per affrontare la chiusura. Alcuni membri del gruppo decisero di rilasciare il codice BSD, che era Open Source, senza il codice proprietario della AT&T. Ciò accadde infine con il Networking Tape 2, in genere noto come Net/2. Net/2 non era un sistema operativo completo: mancava circa il 20% del codice del kernel. Uno dei membri del CSRG, William F. Jolitz, scrisse il codice rimanente e lo rilasciò all'inizio del 1992 come 386BSD. Allo stesso tempo, un altro gruppo di ex membri del CSRG formò una compagnia chiamata Berkeley Software Design Inc. e rilasciò una versione beta di un sistema operativo chiamato BSD/386, che era basato sugli stessi sorgenti. Il nome del sistema operativo è cambiato di recente in BSD/OS.

386BSD non divenne mai un sistema operativo stabile. Invece, due altri progetti se ne distaccarono nel 1993: NetBSD e FreeBSD. I due progetti presero inizialmente direzioni divergenti, a causa della differente pazienza nell'attendere miglioramenti a 386BSD: la gente di NetBSD cominciò all'inizio dell'anno, e la prima versione di FreeBSD non fu pronta fino alla fine dell'anno. Nel frattempo, i codici erano diventati abbastanza differenti da renderne difficile la fusione. Inoltre, i progetti avevano obiettivi differenti, come vedremo in seguito. Nel 1996, un ulteriore progetto, OpenBSD, si divise da NetBSD.

## Perché BSD non è più conosciuto?

Per un certo numero di ragioni, BSD è relativamente sconosciuto:

1. Gli sviluppatori BSD sono spesso più interessati a ripulire il loro codice che a fagli pubblicità.

2. 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, la varie versioni di BSD open source non avevano tali spinte.

3. 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.

4. Nel 1992, l'AT&T citò in giudizio BSDI, il produttore di BSD/386, sostenendo che il prodotto conteneva codice sotto copyright della AT&T. Il caso fu risolto in tribunale nel 1994, ma lo spettro della causa continua a perseguitare alcune persone. Nel marzo 2000 un articolo pubblicato sul web sosteneva che il caso era stato concluso recentemente.

   Un dettaglio che venne chiarito dall'azione legale fu il nome: negli anni '80, BSD era stato conosciuto come BSD &unix;. Con l'eliminazione delle ultima vestigia del codice AT&T da BSD, si era perso anche il diritto di usare il nome &unix;. Per questo noterete riferimenti nei libri al sistema operativo 4.3BSD &unix; ed al sistema operativo 4.4BSD.

5. C'è una certa percezione che il progetto BSD sia frammentato e belligerante. Il Wall Street Journal parlò di balcanizzazione dei progetti BSD. Come per l'azione legale, questa percezione si basa principalmente su vecchie storie.

## Paragone tra BSD e Linux

Dunque qual'è l'effettiva differenza tra, diciamo, Debian Linux e FreeBSD? Per l'utente medio, la differenza è sorprendentemente piccola: entrambi sono sistemi operativi tipo &unix;. Entrambi vengono sviluppati da progetti non commerciali (questo non si applica a molte altre distribuzioni di Linux, ovviamente). Nella sezione seguente, daremo un'occhiata a BSD e lo paragoneremo a Linux. La descrizione si applica molto da vicino a FreeBSD, che conta per un 80% delle installazioni BSD, ma le differenza da NetBSD ed OpenBSD sono piccole.

### Chi possiede BSD?

Nessuna persona o società possiede BSD. Esso è 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 gestiti da diversi responsabili.

### Come viene sviluppato ed aggiornato BSD?

I kernel BSD vengono sviluppati ed aggiornati seguendo il modello di sviluppo open source. Ogni progetto mantiene un albero dei sorgenti liberamente 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. Il CVS permette agli utenti di estrarre (in sostanza, estrarre una copia di) ogni versione desiderata del sistema.

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.

  È a discrezione del committer la volontà di confrontarsi con qualcuno prima di effettuare cambiamenti. In generale, un committer con esperienza può effettuare cambiamenti che sono ovviamente corretti senza interrogare nessuno. Ad esempio, un committer del progetto di documentazione può correggere errori tipografici o grammaticali senza un confronto con altri. D'altro canto, dagli sviluppatori che stanno per effettuare cambiamenti profondi o complessi ci si aspetta che sottopongano i cambiamenti a revisione prima di renderli effettivi. In casi estremi, un membro del core team, con una funzione simile a un Capo Architetto, può ordinare che i cambiamenti siano rimossi dall'albero, un processo noto come marcia indietro. Tutti i committer ricevono una lettera che descrive ogni modifica individuale, dunque non è possibile effettuare un commit segretamente.

- 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 è normale che sia 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:

1. 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.

2. D'altra parte, c'è un deposito centrale, un punto singolo dove è possibile trovare i sorgenti dell'intero sistema, incluse tutte le vecchie versioni.

3. 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.

4. 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. La maggior parte dei cambiamenti sono piccoli.

### Release di BSD

Ogni progetto BSD fornisce il sistema in tre release differenti. Come per Linux, alle release vengono assegnati dei numeri come 1.4.1 o 3.5. Inoltre, il numero di versione ha un suffisso che indica il suo scopo:

1. 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 1.4.3G. OpenBSD non assegna un numero (OpenBSD-current). Tutti gli sviluppi del sistema vanno in questo ramo.

2. 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 1.4-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 esempio NetBSD 1.4.2.

3. 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.

In contrasto, Linux mantiene due alberi di codice differenti: la 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

### Quali versioni di BSD sono disponibili?

In contrasto alle numerose distribuzioni Linux, ci sono solo tre 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 PC e processori Alpha della Compaq. 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 la cui correttezza sia dimostrabile, rendendolo la scelta di organizzazioni attente alla sicurezza come banche, borse e dipartimenti del governo statunitense. Come NetBSD, funziona su un gran numero di piattaforme.

Ci sono anche altri due sistemi operativi BSD che non sono open source, BSD/OS e il &macos; X della Apple:

- BSD/OS è il più antico dei derivati di 4.4BSD. Non è open source, anche se licenze per il codice sorgente sono disponibili ad un costo relativamente basso. Assomiglia a FreeBSD in molti sensi.

- &macos; X è l'ultima versione del sistema operativo per la linea &macintosh; della Apple 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 &macos; X rimangono comunque closed source. Numerosi sviluppatori di Darwin sono anche committer di FreeBSD, e viceversa.

### Come differisce la licenza BSD dalla GNU Public?

Linux è disponibile con licenza GNU General 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. Al contrario, la licenza BSD è meno restrittiva: le distribuzioni dei soli binari sono permesse. Ciò è particolarmente attraente per le applicazioni embedded.

### Cos'altro dovrei sapere?

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.

### Cosa dovrei usare, BSD o Linux?

Cosa significa tutto questo in pratica? Chi dovrebbe usare BSD, chi dovrebbe usare Linux?

Questa è una domanda molto difficile a cui rispondere. Qui ci sono alcune linee guida:

- Se non è rotto, non aggiustarlo: 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.

- La licenza BSD può essere più attraente della GPL.

- BSD può eseguire la 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.

### Chi fornisce supporto, servizi, e training su BSD?

BSD ha sempre supportato BSD/OS, e recentemente ha annunciato contratti di supporto per FreeBSD.

Inoltre, ognuno dei progetti ha una lista di consulenti a pagamento: FreeBSD, NetBSD, e OpenBSD.