                               Panoramica su BSD

  Greg Lehey

   <grog@FreeBSD.org>

   Revisione: 43184

   FreeBSD e un marchio registrato della FreeBSD Foundation.

   AMD, AMD Athlon, AMD Opteron, Athlon, Elan, Opteron, e PCnet sono marchi
   della Advanced Micro Devices, Inc.

   Apple, AirPort, FireWire, Mac, Macintosh, Mac OS, Quicktime, e TrueType
   sono marchi della Apple Computer, Inc., registrati negli Stati Uniti e in
   altri paesi.

   Linux e un marchio registrato di Linus Torvalds.

   Motif, OSF/1, e UNIX sono marchi registrati e IT DialTone e The Open Group
   sono marchi del The Open Group negli Stati Uniti e in altri paesi.

   Sun, Sun Microsystems, Java, Java Virtual Machine, JDK, JRE, JSP, JVM,
   Netra, Solaris, StarOffice e SunOS sono marchi o marchi registrati della
   Sun Microsystems, Inc. negli Stati Uniti e in altri paesi.

   XFree86 e un marchio della The XFree86 Project, Inc.

   Molti dei nomi identificativi usati dai produttori e dai venditori per
   distinguere i loro prodotti sono anche dei marchi. Quando questi nomi
   appaiono nel libro, e il FreeBSD Project e al corrente del marchio,
   vengono fatti seguire dal simbolo <<(TM)>> o <<(R)>>.

   2013-11-13 di hrs.
   Sommario

   Nel mondo open source, la parola <<Linux>> e quasi sinonimo di <<Sistema
   Operativo>>, ma non si tratta del solo sistema operativo UNIX(R) 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(R). Alcuni dei piu grandi operatori del web, come Yahoo!,
   usano BSD. Il server FTP piu affollato del mondo nel 1999 (ora defunto),
   ftp.cdrom.com, usa BSD per trasferire 1.4 TB di dati al giorno.
   Chiaramente questo non e un mercato di nicchia: BSD e un segreto ben
   mantenuto.

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

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

   Traduzione a cura di Gabriele Renzi <surrender_it@yahoo.it>.

   [ HTML Multiplo / HTML Singolo ]

     ----------------------------------------------------------------------

   Indice

   1. Cos'e BSD?

   2. Cosa, un vero UNIX(R)?

   3. Perche BSD non e piu conosciuto?

   4. Paragone tra BSD e Linux

1. Cos'e BSD?

   BSD sta per <<Berkeley Software Distribution>>. E il nome delle
   distribuzioni di codice sorgente dell'Universit`a della California,
   Berkeley, che erano originariamente estensioni al sistema operativo
   UNIX(R) 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 e basata su codice proveniente da Berkeley, non dal
       progetto GNU.

     * Utilit`a 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 da uno dei due progetti separati, il progetto
       XFree86(TM) e il progetto X.Org. Questo e 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`a.

2. Cosa, un vero UNIX(R)?

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

   E vero che lo UNIX(R) AT&T non e open source, e nel senso del copyright
   BSD in definitiva non e UNIX(R), ma d'altro canto l'AT&T ha importato
   sorgenti da altri progetti, in maniera rilevante dal Computer Sciences
   Research Group dell'Universit`a 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 cambio 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 piu 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(R) su licenza piuttosto che
   sviluppare da soli un nuovo sistema operativo. In particolare, la Sun
   Microsystems rilicenzio UNIX(R) ed implemento una versione commerciale di
   4.2BSD, che chiamo SunOS. Quando alla AT&T stessa fu permesso di vendere
   UNIX(R) 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`a 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(R). 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. Cio 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 rilascio all'inizio
   del 1992 come 386BSD. Allo stesso tempo, un altro gruppo di ex membri del
   CSRG formo una compagnia chiamata Berkeley Software Design Inc. e rilascio
   una versione beta di un sistema operativo chiamato BSD/386, che era basato
   sugli stessi sorgenti. Il nome del sistema operativo e 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
   comincio 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,
   OpenBSD si ramifico da NetBSD, e nel 2003, DragonFlyBSD si ramifico da
   FreeBSD.

3. Perche BSD non e piu conosciuto?

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

    1. Gli sviluppatori BSD sono spesso piu interessati a ripulire il loro
       codice che a fagli pubblicit`a.

    2. Molta della popolarit`a di Linux e 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 piu esperienza di quelli di
       Linux, ed hanno meno interesse nel rendere il sistema facile da usare.
       I nuovi arrivati tendono a sentirsi piu a loro agio con Linux.

    4. Nel 1992, l'AT&T cito 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(R)>>. Con
       l'eliminazione delle ultima vestigia del codice AT&T da BSD, si era
       perso anche il diritto di usare il nome UNIX(R). Per questo noterete
       riferimenti nei libri al <<sistema operativo 4.3BSD UNIX(R)>> ed al
       <<sistema operativo 4.4BSD>>.

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

4. Paragone tra BSD e Linux

   Dunque qual'e l'effettiva differenza tra, diciamo, Debian Linux e FreeBSD?
   Per l'utente medio, la differenza e sorprendentemente piccola: entrambi
   sono sistemi operativi tipo UNIX(R). 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, OpenBSD e DragonFlyBSD sono piccole.

  4.1. Chi possiede BSD?

   Nessuna persona o societ`a possiede BSD. Esso e creato e distribuito da
   una comunit`a 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.

  4.2. 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 e permesso di
       effettuare il commit (aggiungere codice) direttamente all'albero dei
       sorgenti. Affinche 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`a nell'area nella quale e attivo.

       E a discrezione del committer la volont`a di confrontarsi con qualcuno
       prima di effettuare cambiamenti. In generale, un committer con
       esperienza puo effettuare cambiamenti che sono ovviamente corretti
       senza interrogare nessuno. Ad esempio, un committer del progetto di
       documentazione puo 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, puo 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 e 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 e necessario essere uno
       sviluppatore per far parte del core team, anche se e normale che sia
       cos`i. Le regole per il core team variano da un progetto ad un altro,
       ma in generale chi ne fa parte ha piu autorit`a 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 e sopravvalutata, poiche il Capo Architetto puo richiedere
       che il codice sia rimosso, ed anche nel progetto Linux viene permesso
       a molte persone di effettuare cambiamenti.

    2. D'altra parte, c'e un deposito centrale, un punto singolo dove e
       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 e utile solo marginalmente: ne BSD ne 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 e chiaro, ed e 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 piu o meno 100
       volte al giorno. La maggior parte dei cambiamenti sono piccoli.

  4.3. Release di BSD

   FreeBSD, NetBSD and OpenBSD forniscono 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 e 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 e intesa per gli
       utenti finali ed e 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 e
   seguito da un ulteriore numero che indica la versione esatta. Inoltre,
   ogni venditore aggiunge i suoi programmi utente o le sue utilit`a, dunque
   anche il nome della distribuzione e 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>>

  4.4. Quali versioni di BSD sono disponibili?

   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.

   E difficile catalogare gli obiettivi di ogni progetto: le differenze sono
   molto soggettive. Di base,

     * FreeBSD punta alle alte prestazioni e alla facilit`a d'uso per
       l'utente finale, ed e molto usato dai fornitori di contenuti web.
       Funziona su diverse piattaforme, inclusi i sistemi basati su i386
       (<<PC>>), i sistemi basati sui processori AMD a 64-bit, i sistemi
       basati su UltraSPARC(R), i sistemi basati su processori Alpha della
       Compaq e i sistemi basati sulle specifiche NEC PC-98. Il progetto
       FreeBSD ha nettamente piu utenti degli altri.

     * NetBSD punta alla massima portabilit`a: <<of course it runs NetBSD>>,
       ovviamente ci gira NetBSD. Funziona su macchine che vanno dai palmtop
       ai grossi server, ed e anche stato usato dalla NASA in alcune missioni
       spaziali. E 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.

     * DragonFlyBSD punta ad alte prestazioni e scalabilit`a sotto qualsiasi
       sistema dal singolo sistema mono-processore al sistema massicciamente
       clasterizzato. DragonFlyBSD ha diversi obbiettivi a lungo termine,
       anche se e 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(R) X della Apple:

     * BSD/OS fu il pu 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 riuscii a sopravvivere come prodotto indipendete. Supporto
       e codice sorgente sono ancora disponibili da Wind River, anche se
       tutto il nuovo sviluppo e concentrato sul sistema operativo embedded
       VxWorks.

     * Mac OS(R) X e l'ultima versione del sistema operativo per la linea
       Macintosh(R) della Apple Computer Inc.. L'anima BSD UNIX(R) di questo
       sistema operativo, Darwin, e 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(R) X rimangono comunque closed source. Numerosi sviluppatori di
       Darwin sono anche committer di FreeBSD, e viceversa.

  4.5. Come differisce la licenza BSD dalla GNU Public?

   Linux e disponibile con licenza GNU General Public License (GPL), che e
   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 e
   meno restrittiva: le distribuzioni dei soli binari sono permesse. Cio e
   particolarmente attraente per le applicazioni embedded.

  4.6. Cos'altro dovrei sapere?

   Poiche sono disponibili meno applicazioni per BSD che per Linux, gli
   sviluppatori BSD hanno creato un pacchetto di compatibilit`a 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`a, come la
   libreria C. Non c'e una differenza notevole nella velocit`a 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`i che gli aggiornamenti
   siano molto piu semplici da gestire rispetto alla maggior parte dei casi
   in Linux. BSD gestisce gli aggiornamenti della versione di libreria
   fornendo moduli di compatibilit`a per le versioni precedenti, dunque e
   possibile eseguire binari di parecchi anni prima senza problemi.

  4.7. Cosa dovrei usare, BSD o Linux?

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

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

     * <<Se non e rotto, non aggiustarlo>>: se usi gi`a un sistema operativo
       open source, e ne sei soddisfatto, probabilmente non c'e 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'e una differenza minima nelle prestazioni. In
       alcuni casi, Linux puo comportarsi meglio di FreeBSD.

     * In generale, i sistemi BSD hanno una reputazione migliore di
       affidabilit`a, principalmente come risultato di una base di codice piu
       maturo.

     * I progetti BSD hanno una reputazione migliore per quanto concerne
       qualit`a 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 puo essere piu attraente della GPL.

     * BSD puo eseguire la maggior parte dei binari Linux, mentre Linux non
       puo eseguire i binari BSD. Molte implementazioni di BSD possono anche
       eseguire i binari di altri sistemi di tipo UNIX(R). Come risultato,
       BSD puo rappresentare un percorso di migrazione piu semplice da altri
       sistemi rispetto a Linux.

  4.8. Chi fornisce supporto, servizi, e training su BSD?

   BSDi / FreeBSD Mall, Inc. forniscono contratti di supporto per FreeBSD da
   quasi un decennio.

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