FreeBSD vs Linux

Qualche giorno fa è uscito su FreeSoftware Magazine un articolo che confrontava pregi e difetti di questi due sistemi operativi open. Inizialmente l’idea era semplicemente di tradurlo.. ma la tentazione di dire la mia è stata troppo forte 🙂

Parto quindi con la semplice traduzione (a cui ho inserito qualche nota) dopo di che se avreta ancora voglia di leggere ci sono i miei commenti.

GNU/Linux è decisamente il più famoso sistema operativo costruito con software aperto e libero. Tuttavia non è l’unico: anche FreeBSD sta accumulando consensi grazie alla sua stabilità, alla sua robustezza e alla sua sicurezza. In questo articolo cercheremo le similitudini e le differenze tra questi sistemi operativi.

Introduzione

FreeBSD è un sistema operativo basato sulla Berkeley Software Distribution (BSD), che a sua volta è una modifica dello UNIX AT&T, creato dall’Università della California. Durante lo sviluppo di FreeBSD, per evitare problemi legali con i proprietari del codice, gli sviluppatori hanno deciso di ricostruire il BSD originale piuttosto che copiarne il codice.

Diversamente da GNU/Linux, dove ogni singolo componente viene sviluppato separatamente e messo assieme grazie alle distribuzioni, FreeBSD è stato concepito come un completo sistema operativo: il kernel, i drivers per le periferiche, gli strumenti di amministrazione e tutti gli altri componenti del software sono mantenuti nella stessa revisione di sistema.

Lo sviluppo iniziale di Linux risale al 1991 grazie a Linus Torvalds che utilizzò Minixun sistema operativo concepito da Andrew Tanenbaum a fini didattici—come piattaforma di partenza per il suo sistema. Nel 1990 il progetto GNU, iniziato da Richard Stallman nel 1983, aveva già prodotto e messo assieme tutte le librerie, i compilatori, gli editor di testo, le shell e il restro del software per dar vita ad un sistema operativo libero; mancava il kernel. Gli sviluppatori dil Linux decisero di adattare quel kernel in modo tale che potesse lavorare col software GNU per costituire un sistema operativo completo: nacque così GNU/Linux.

Il kernel, gran parte del codice di FreeBSD è stato rilasciato e distribuito sotto licenza BSD anche se diverse componenti del sistema utilizzano altri tipi di licenze come la GPL, la LGPL o la ISC. Il kernel Linux, e la maggioranza dei programmi che fanno parte del progetto GNU vengono proprio rilasciati sotto la GPL (GNU Public Licence) che è stata concepita dalla Free Software Foundation.

Differenze tecniche

Sia FreeBSD che Linux seguono la filosofia UNIX tuttavia permangono delle differenze tra questi sistemi operativi—cerchiamo di evidenziarle da un punto di vista tecnico.

Periferiche

I dispositivi hardware come i dischi, schede di rete, stampanti, schede grafiche, mouse e tastiere vengono classificate usando il termine device nel contesto dei sistemi operativi; Linux e FreeBSD usano una diversa nomenclatura per questi hardware.

Linux usa nomi predefiniti per ogni tipo di periferica e, per questo motivo, eth0 è la prima scheda di rete Ethernet a prescindere dal tipo di chip presente nella scheda. FreeBSD, d’altro canto, utilizza un nome differente per ogni tipo di periferica e per ogni chip presente: ad esempio, una singola scheda di rete con chipset RealTek 8129 viene chiamata rl0 sotto FreeBSD.

Sotto Linux le informazioni hardware possono essere ottenute esaminando il contenuto della directory /proc; in alternativa da linea di comando si può utilizzare lspci o lsusb. Questi comandi non fanno nient’altro che riformattare le informazioni contenute dentro /proc. FreeBSD non usa la directory /proc, bensì il comando sysctl che può essere utilizzato sia per mostrare tutte le informazioni sull’hardware presente che per configurarlo o aggiornarlo.

Runlevels e scripts di avvio

Runlevel è il termine utilizzato per descrivere la modalità operativa di un sistema come il riavvio, lo spegnimento, modalità singolo utente o multiutente. Sotto GNU/Linux il file /etc/inittab descrive questi diversi runlevel e il processo init (inizializzazione) permette il sistema di passare da uno all’altro.

FreeBSD usa comandi come reboot o shutdown -h per cambiare i runlevel invece del comando telinit utilizzato da GNU/Linux.

Sotto GNU/Linux ogni runlevel ha una sottodirectory in /etc/ o /etc/rc.d/, a seconda della distribuzione in uso: Debian, ad esempio, usa /etc/. Queste sottodirectory sono rc0.d, rc1.d e così via fino all’ultimo runlevel (abitualmente sono sette). Ogni directory rcx.d contiene link simbolici a script di avvio che risiedono nella directory /etc/init.d/. (Uno Unix con tale tipo di init viene chiamato SysV n.d.t.)

Sotto FreeBSD gli scripts di avvio risiedono nella directory /etc/rc.d/ se riguardano il sistema e nella directory /usr/local/etc/rc.d/ se riguardano applicativi di terze parti. Questi scripts usano parametri come start o stop per controllare quale servizio debba esser lanciato all’avvio (start e reboot) e quali allo spegnimento. (Uno Unix con tale tipo di init viene chiamato BSD n.d.t.)

Anche se gran parte delle distribuzioni GNU/Linux utilizzano un init di tipo SysV come debian, redhat, mandrake e le loro derivate (Ubuntu, Fedora e Mandriva) ve ne sono diverse che o usano init in stile BSD (Slackware o Crux) o usano un init del tutto originale non assimilabile né a SysV né a BSD come il caso di gentoo. n.d.t.

Kernel

Ovviamente il disegno dei kernel Linux e FreeBSD presentano differenze, ma ci sono anche caratteristiche comuni:

  • Moduli: supporto per la carica e la scarica dei moduli senza dover ricompilare il kernel o riavviare la macchina.
  • Versioni: ogni kernel ufficiale usa un numero di versione.
  • Costruzione di un kernel personalizzato: tra i benefici che si possono rilevare ricompilando un kernel personalizzato possiamo citare una maggiore velocità di avvio, un consumo inferiore di memoria e un supporto migliore all’hardware.

I comandi per caricare e scaricare i moduli del kernel, come quello per elencare i moduli caricati sono diversi in ogni sistema. Chi utilizza Linux usufruisce del comando modprobe per caricare un modulo e per elencare quali moduli sono disponibili; lsmod si limita a mostrare i moduli caricati all’interno del kernel mentre rmmod scarica dal kernel i moduli indesiderati. Chi utilizza FreeBSD usufruisce di kldstat per elencare i moduli caricati, kldload per caricare un modulo e kldunload per scaricarlo.

Il kernel Linux usa tre numeri per ogni versione: il prima rappresenta la cosidetta major version—al momento tale numero è ‘2’; il secondo numero indica se è stabile (numeri pari) o una versione sperimentale di sviluppo (numeri dispari) mentre l’ultimo numero indica la versione della patch. Lo si può osservare nella versione più recente: 2.6.21. In FreeBSD il kernel ha due numeri di cui il primo rappresenta la major version mentre il secondo l’aggiornamento.

Costruire un kernel personalizzato in entrambi i sistemi richiede una compilazione da sorgenti. Comunque, i passi per la costruzione differiscono da sistema a sistema.

  1. La prima tappa consiste nello scaricare il codice sorgente oppure ottenerlo da un supporto fisico come un DVD o un CD—questa tappa è necessaria in entrambi i sistemi.
  2. Come seconda tappa occorre creare il file di configurazione del kernel al fine di stabilire quali parti del kernel compilare, quale driver hardware supportare e quanti moduli debba avere il kernel. In Linux questa configurazione avviene grazie alla presenza di un’interfaccia che si preoccupa di creare al posto nostro il .config. Sempre sotto Linux se desideriamo una GUI (Graphic User Interface) daremo il comando make menuconfig o make xconfig se invece ci basta una CLI (Command Line Interface) eseguiremo il comando make config. FreeBSD utilizza un approccio diverso: è presente un file di configurazione standard che va personalizzato utilizzando un qualsiasi editor di testo grazie al quale sarà possibile commentare o decommentare le opzioni che controllano i processi.
  3. Alla fine, in entrambi i sistemi, si utilizzerà il comando make per compilare e installare il kernel.

Installazione del software

Il software sviluppato da terze parti può esser distribuito o tramite binari o tramite sorgenti. Abitualmente questo software viene pacchettizzato utilizzando strumenti di archiviazione e compressione come tar e gzip. Tuttavia, la gran parte delle distribuzioni GNU/Linux utilizzano un loro formato particolare di pacchettizzazione e prevedono uno strumento per l’installazione, la rimozione e la configurazione del software. Debian, ad esempio utilizza i pacchetti dal formato .deb e strumenti come apt o dpkg per maneggiarli; Fedora, Mandriva e Suse utilizzano invece pacchetti .rpm e strumenti come yum, urpmi e yast. Utilizzando questi applicativi il processo di installazione di un software da linea di comando è piuttosto semplice; il seguente esempio mostra come installare il programma di manipolazioni di immagini The GIMP:

# apt-get install gimp

su Debian o

# urpmi gimp

su Mandriva.

FreeBSD prevede due strumenti interessanti per l’installazione del software:

Pacchetti

Un pacchetto è un singolo file compresso che contiene binari precompilati, documentazione e files di configurazione, comprese le informazioni che permettono al sistema di installare il software nelle directory giuste del filesystem. Strumenti come pkg_add, pkg_delete, pkg_info, ecc., vengono utilizzate per maneggiare i pacchetti. Caricare e installare automanticamente un pacchetto è piuttosto facile se si utilizza il comando pkg_add:

# pkg_add -r gimp

Ports

In FreeBSD il termine port significa una collezione di files destinati al fine di automatizzare il processo di compilazione e installazione di un programma a partire dal suo codice sorgente.

L’abilità che hanno gli applicativi che si occupano della gestione del software di capire le dipendenze è una caratteristica ad entrambe le metodologie: pacchetti e ports. I ports sono molto utili quando abbiamo bisogno di un controllo completo sui parametri di compilazione per ottenere il massimo dell’ottimizzazione per la nostra macchina; il pacchetto ha l’indubbio vantaggio rispetto al port di esser di dimensioni più ridotte dal momento che non contiene codice sorgente. Inoltre, l’installazione di un pacchetto non prevede che l’utente abbia nessun tipo di comprensione sui processi di compilazione. Dal momento che entrambe le strategie sono possibili sta all’utente scegliere, di volta in volta, quale tecnologia usare.

Si può installare un applicativo dal suo sorgente in entrambi i sistemi utilizzando i classici metodi di compilazione e installazione utilizzando la sequenza:

  1. # ./configure
  2. # make
  3. # make install

Shell

Bash (Bourne-Again SHell) è la shell di default in quasi tutte le distribuzioni GNU/Linux. In una installazione di default FreeBSD non prevede comunque bash. Ovviamente non si pone nessun problema dal momento che è possibile installarla:

# pkg_add -r bash

Le distribuzioni GNU/Linux scelgono la shell bash perché è stata scritta per il progetto GNU; FreeBSD usa csh, in linea con i sistemi UNIX tradizionali.

Nel caso in cui si preferissero altre shell come tcsh o csh, si possono installare in entrambi i sistemi operativi utilizzando le modalità sopra descritte. La scelta della shell è una decisione del tutto personale che dipende dal tipo di esperienza che si possiede e la tipologia di lavoro che si intende mettere in pratica.

Installazione

Come detto sopra, Linux e FreeBSD possono essere installati su diverse piattaforme. Si può anche scegliere di installare entrambi i sistemi operativi sullo stesso PC. Prima di tutto vediamo quali sono procedure coinvolte nel processo di installazione di ognuno di questi sistemi e dopo vedremo come farli coesistere sulla stessa macchina.

Installare GNU/Linux

La procedura per installare questo sistema operativo differisce a seconda della distribuzione, ma i passi basilari sono piuttosto simili tra loro:

  • Scegliere il mezzo di installazione, ovvero DVDs, CDs o installazione dalla rete.
  • Ottenere informazioni complete sulla macchina su cui verrà destinato il sistema.
  • Avviare l’installazione.
  • Scegliere lingua, paese e layout di tastiera.
  • Partizionare il disco rigido e scegliere il tipo di filesystem.
  • Lanciare l’installazione automatica del software di base.
  • Configurare le periferiche hardware devices e installare software di terze parti.

Ogni distribuzione possiede strumenti propri per muoversi in questi passi e alcune sono più facili di altre: YaST è uno strumento completo piuttosto semplice da usare dotato di una interfaccia grafica (GUI). Viene usato per l’amministrazione e l’installazione utilizzata da SUSE e altre distribuzioni GNU/Linux; Debian o Slackware, diversamente, utilizzano interfacce meno intuitive per gli utenti alle prime armi.

Installare FreeBSD

FreeBSD è munito di un programma che si chiama sysinstall che funge da assistente per il processo di installazione: è un programma che gira in console suddiviso in menù e semplici schermate che controllano e configurano il sistema durante tutte le fasi dell’installazione.

Non appena il PC viene avviato, parte sysinstall e FreeBSD è pronto per esser installato. sysinstall possiede diverse opzioni di installazione ma per la maggior parte degli utenti è consigliabile usare quella “standard”, scelta che si può fare direttamente dal menù come mostrato in figura 1.

Begin standard installation for sysinstall menu

Figura 1: Iniziare l’installazione standard dal menù di sysinstall

Le fasi principali dell’installazione di FreeBSD sono:

  • Liberare spazio sul disco e installare il boot manager: FreeBSD usa le slices per partizionare un disco rigido.
  • Scegliere cosa installare: il software è suddiviso in insiemi, ad esempio, l’insieme User provvede all’installazione del software per un utente standard compresi i binari e la documentazione. Nel caso in cui abbiate dubbi scegliere All è la scelta migliore poiché contiene tutti i sorgenti del sistema, i binari la documentazione e il sistema X-Windows.
  • Scegliere il mezzo di installazione: sysinstall prevede diverse modalità come CD/DVD, FTP, HTTP o NFS.
  • Avvio dei processi: questa rappresenta l’ultima possibilità di annullare il processo di installazione e non effettuare alcuna modifica alla macchina nel caso abbiate ripensamenti.
  • Post-installazione: il processo di configurazione parte quando il software è stato installato. In questa fase è possibile configurare le schede di rete, i servizi, i server FTP, l’ora, la zona geografica, la tastiera e tutte le altre periferiche hardware.

Installare entrambi i sistemi: GNU/Linux e FreeBSD sullo stesso PC

Entrambi i sistemi operativi possono coesistere sulla stessa macchina e l’utente può scegliere quale lanciare durante il processo di avvio. Per procedere a questa convivenza dobbiamo tenere in considerazione i seguenti fatti:

  • Boot manager: ovviamente dobbiamo poter scegliere quale sistema avviare.
  • Spazio sul disco: GNU/Linux e FreeBSD usano diversi tipi di filesystem e organizzano i dischi fissi in modo diverso.

Linux usa le lettere hd per i dischi rigidi IDE mentre FreeBSD usea la lettera s per le slices, che sono le porzioni in cui è suddiviso il disco fisso (diverse dalle partizioni DOS, n.d.t.), pertanto i metodi di gestione del disco fisso sono diversi da caso a caso. Sotto Linux hda1 rappresenta la prima partizione del primo disco IDE; sotto FreeBSD invece, una slice viene suddivisa in diverse sottopartizioni: per questo motivo il primo disco IDE è ad0 mentre ad0s1a è la sottopartizione a della prima silce del primo disco.

Per installare entrambi i sistemi sulla stessa macchina bisogna pur partire da uno dei due— partiamo ad esempio da GNU/Linux. Quando si arriva alla fase in cui occorre partizionare il disco, occorre creare almeno due partizioni primarie: la prima per GNU/Linux e la seconda per FreeBSD (mentre si può installare GNU/Linux su una partizione logica-estesa non è possibile farlo con FreeBSD, n.d.t.). Ricordiamoci che un disco può avere non più di quattro partizioni primare, o tre primarie e una estesa (suddivisa a sua volta in partizioni logiche, una per ogni file system).

Un semplice schema di partizionamento del disco a tale scopo può essere il seguente:

  • Una primaria per l’avvio.
  • Una primaria per il filesystem root.
  • Una primaria per l’area di swap.
  • Una primaria per FreeBSD.

Una volta che GNU/Linux è operativo siamo pronti a installare FreeBSD nella partizione primaria libera prevista. In questa partizione, che abbiamo già costruito con GNU/Linux, bisognerà creare almeno una slice per FreeBSD. Questa slice avrà almeno quattro partizioni:

  1. Partizione a per il filesystem di root.
  2. Partizione b per l’area di swap.
  3. Partizione e per il filesystem /var.
  4. Partizione f per il filesystem /usr.

La dimensione di ogni partizione dipende strettamente dalle dimensioni del disco fisso: si può assegnare lo spazio per ogni partizione a seconda delle convenienze (lo spazio non è più un problema sui moderni PC che abitualmente sono muniti di dischi da 100GB e oltre).

(Eventualmente è possibile condividere le partizioni di swap tra FreeBSD e GNU/Linux, come spiegato nel Linux+FreeBSD mini HOWTO.)

Per avviare i sistemi operativi abbiamo bisogno di un bootmanager. Quando si installa GNU/Linux abitualmente ci viene chiesto di scegliere tra GRUB o LiLo. Se abbiamo installato e configurato GRUB durante il processo di installazione di GNU/Linux non abbiamo bisogno di aggiungere alcun bootmanager durante il processo di installazione di FreeBSD: possiamo configurare GRUB all’interno della nostra distribuzione GNU/Linux in modo da far comparire anche FreeBSD tra le scelte dei sistemi da avviare. Qui sotto c’è un esempio del file /boot/grub/menu.lst (il file di configurazione di GRUB) che permette l’avvio di FreeBSD e Debian:

default    0
timeout    5title       Debian GNU/Linux

root        (hd0,0)

kernel      /boot/vmlinuz-2.6.8-2-386 root=/dev/hda1 ro

initrd      /boot/initrd.img-2.6.8-2-386

savedefault

boot

title    FreeBSD

root     (hd0,2,a)

kernel   /boot/loader

KDE running under Debian GNU/Linux
KDE che gira sotto Debian GNU/Linux
KDE running under FreeBSD
KDE che gira sotto FreeBSD

Conclusioni

FreeBSD e GNU/Linux sono davvero due grandi opzioni: la scelta di uno o l’altro dipende da molti fattori. Abitualmente FreeBSD viene utilizzato nei server web: compagnie come Yahoo! o Sony Japan ripongono piena fiducia in FreeBSD e sopra vi fanno girare i loro portali internet; grazie alla sua licenza permissiva la stessa Microsoft include porzioni di codice BSD dentro Windows.

Nonostante il fatto che recentemente FreeBSD abbia iniziato a prender piede anche sui desktop, in quell’ambito GNU/Linux ha decisamente ancora la meglio, tuttavia anche GNU/Linux viene utilizzato per molti server web. Gli utenti che hanno familiarità con sistemi tradizionali UNIX scopriranno di poter utilizzare entrambi i sistemi senza grossi problemi. FreeBSD e Linux: un regalo di qualità, robustezza, sicurezza e stabilità dalla comunità opersource al mondo dei sistemi operativi.

Arturo Fernànde

 

Ora che l’articolo è finito fatemi dire due parole.

Tre o quattro anni fa, preso da una mania di voler sperimentare nuovi sistemi operativi da una parte e insofferente nei confronti di Linux dall’altra ho provato FreeBSD.

Linux non mi soddisfaceva, ma per motivi ben diversi da quelli che possono avere tanti utenti che si avvicinano a questo sistema e che hanno sempre usato Windows. Innanzitutto GNU/Linux, così per come è concepito non è uno UNIX.

Verissimo, è POSIX compliant, essenzialmente risponde a determinate caratteristiche tipiche dei dialetti UNIX, ma non è POSIX.

Torvalds stesso sembra non preoccuparsene un gran che se non nelle primissime versioni di Linux e i motivi sono essenzialmente due:

  1. Il POSIX, standard dell’IEEE, come quelli di numerosi altri gruppi, viene pubblicato per la vendita a un costo abbastanza elevato, e quindi non disponibile in rete
  2. La priorità è la funzionalità a discapito dello standard.

BSD invece è Unix puro, ma al di là di questo c’ è altro: il difetto principale di Linux è di non essere un sistema operativo.

A prescindere dalla distribuzione scelta GNU/Linux consiste in un kernel con delle applicazioni GNU e degli script appiccicati sopra. Gli strumenti di pacchettizzazione, di gestione del software installato, gli script di init del sistema sono strettamente legati alla distribuzione scelta.

Conseguentemente se si desidera configurare un driver, un applicativo, modificare una configurazione bisogna stare molto attenti. Sono tante le guide che si trovano per problematiche connesse a sistemi GNU/Linux ma capita spesso che tali guide o siano generiche o siano pensate specificatamente per distribuzioni diverse dalla nostra.

Facciamo qualche esempio:

1. supponiamo di voler installare un applicativo che non si trova nei repository della nostra distribuzione, un programma per il quale non è disponibile un pacchetto binario. Ovviamente sarà possibile compilarlo e installarlo con

# ./configure && make && make install

ma sappiamo che è una scelta infelice! Ogni distribuzione tiene traccia a suo di tutto quello che è installato grazie alla presenza di un database e gli strumenti di amministrazione ci consentono di rimuovere o aggiornare facilmente ogni programma. Questo applicativo quindi sfuggirà al database e non sarà facile né aggiornarlo né eventualmente rimuoverlo. Per non parlare di eventuali problemi legati alle dipendenze e come tenerli aggiornati.
2. supponiamo di voler configurare un qualsiasi programma, dobbiamo tener conto con cautela della documentazione dell’applicativo in questione dal momento che ogni distribuzione ha un suo modo per gestire le configurazioni. Non possiamo quindi semplicemente editare il file di configurazione come ci dice la guida del programma installato perché magari la nostra distro ha previsto che tale configurazione avvenga diversamente; tipicamente è previsto un frontend che lo faccia al posto nostro, un’interfaccia che magari utilizza altri file che sono ben poco pertinenti con l’applicativo che ci interessa. Si pensi ad esempio a SUSE che un tempo (non so se lo faccia ancora) installava KDE sotto /opt o a Mandrake che stravolgeva completamente tutti i menù di tutti i desktop manager affinché potessero esser tutti uguali.

D’altra parte sono problemi immaginabili dal momento che chi sviluppa un applicativo sicuramente non ha un sistema analogo al nostro. La grande possibilità di personalizzare il sistema su GNU/Linux è la principale causa di questo problema. Rimane il fatto che si ha l’idea di una scarsa omogeneità del sistema con pezzi diversi indipendenti l’uno dall’altro.

I BSD, in particolare FreeBSD, non sono così. C’è il sistema e gli applicativi, esiste una logica ferrea a cui ogni componente deve ubbidire, nonostante sia presente una grande estrema flessibilità. FreeBSD ha trovato non “una soluzione” ma la soluzione nel gestire gli applicativi GNU sotto un kernel prescelto e questa soluzione si chiama ports.

Il sistema dei ports, come solo accennato nell’articolo consiste in un albero di directory che contengono degli scripts . Per ogni applicativo esiste una directory che contiene un Makefile il CRC dei relativi sorgenti. L’albero è organizzato in sottodirectory in base alla tipologia dell’applicativo. Quando si desidera installare un programma tramite un port basta raggiungere la directory del programma desiderato e dare

# make install

Il Makefile in quella directory si preoccuperà di:

  1. Scaricare i sorgenti.
  2. Verificare che non sia corrotto.
  3. Lanciare il configure con le opzioni desiderate.
  4. Compilare i binari.
  5. Comprimere il tutto in un pacchetto.
  6. Installare l’applicativo

Questa soluzione è talmente funzionale che è stata di recente adottata anche sotto Linux e nel momento in cui sono nate le prime distribuzioni che adottavano tecnologie simili (Crux Linux e Gentoo Linux) sono tornato ad usare GNU/Linux a tempo pieno.Premesso che Crux e Gentoo non sono le sole distribuzioni a basarsi su sorgenti, tra queste sono le più diffuse e adottano strategie diverse l’una dall’altra.

Crux nasce nel 2000 da un’idea di Per Lidén ed è una distribuzione GNU/Linux sviluppata da programmatori letteralmente innamorati dell’architettura FreeBSD; ne copiano l’init, il sistema dei ports e addirittura la struttura stessa dello handbook, il manuale della documentazione.

Gentoo prende solo spunto dall’idea dei ports ma sviluppa una tecnologia originale che chiama portage.

Non voglio entrare nel dettaglio delle differenze tra port e portage perché esula dal contesto. A mio avviso i ports superano portage nella gestione delle dipendenze quando si tratta di rimozione di pacchetti.

Tuttavia gli strumenti di gentoo hanno riscosso successo anche presso FreeBSD al punto da dar vita ad una distribuzione FreeBSD basata su portage invece che su ports: la G/FBSD.

Crux ha decisamente una collezione di pacchetti inferiore a quella di Gentoo, la comunità di Gentoo è decisamente più numerosa e per questo motivo a suo tempo ho scelto Gentoo.

Entrambe hanno dato luce a distribuzioni binarie derivate: da Crux nasce Arch, e da Gentoo nasce Sabayon, entrambe hanno un discreto numero di adepti anche in Italia e si mostrano decisamente meno ostiche delle distibuzioni a cui si ispirano.

Chiaramente non sono affatto scelte consigliabili a chi si avvicina al mondo Linux, ma è sempre bello sapere che quando e se vi stancherete di SUSE, Fedora, Madriva o Ubuntu c’è qualcosa che potrebbe interessarvi 🙂

23 comments so far

  1. gismondo on

    gran bel post, complimenti vivissimi 🙂

  2. BSD on

    Bello,
    molto chiaro ed esauriente.
    Ottimo!

  3. sughero on

    Vi ringrazio, stavo per credere al primo postulato di Stefano Epifani

  4. BSD on

    lol forte quel postulato , dai ke lo rompiamo ;D

  5. assente on

    Che tristezza nel 2007 parlare ancora di Linux vs Freebsd.. ci metti Kde/Gnome sopra e quasi ti dimentichi delle “differenze” che ci sono sotto. (te ne accorgi solo quando devi installare i drivers che per bsd non ci sono).

    Secondo me si dovrebbe più parlare di innovazioni che non di queste differenze tutto sommato banali.

    Qualche esempio?
    – la gerarchia di Gobolinux
    – il filesystem reiser4
    – Nautilus che è in stallo http://ubuntuforums.org/showthread.php?t=465866

  6. sughero on

    @ assente
    Non riesco a capire il tuo punto di vista.
    Ti sembra che le differenze tra un BSD e Ubuntu o SUSE siano irrisorie?
    A me non tanto! Sostieni di non renderti conto del sistema di gestione dei pacchetti a meno che non siano driver?

    Oppure forse ti sembra scontato l’articolo che ho tradotto e il relativo commento?
    Su questo non posso forse che darti ragione, devo aver parlato troppo con chi dice che Linux ha ancora problemi di usabilità 🙂 ; dipende poi dai punti di vista.
    Ho scritto articoli ben più banali , visto che ho scoperto che molti ignoravano certe questioni banali .
    Quest’articolo comunque non aveva assolutamente la pretesa di parlare di questioni scottanti, nuove e di attualità quanto piuttosto di confrontare progetti molto maturi.

    Gli argomenti che tu sollevi sono senz’altro interessanti, e molto più attuali.
    Tuttavia dal momento che si tratta di progetti in essere ognuno può avere il suo parere e solo il tempo dirà che succederà.

    -Gobolinux è senz’altro una distribuzione interessante. Io non l’ho mai provata anche perché stravolgere il filesystem in quel modo mi sa un po’ di bestemmia. Poco importa che sia simile al Mac OS X da tutti osannato, io sono riluttante.
    Sarà questione di abitudine ma queste directory Programs e Users mi ricordano un po’ Windows 😀

    -reiser4. Ho mollato da tempo reiserfs da quando mi seccò letteralmente un intero filesystem. Era reiser 3 ma quell’episodio mi brucia ancora tanto, quindi al momento non mi sento di riprovarlo e fare esperimenti. Sto ancora con ext3.

    -Nautilus mi ha sempre fatto cacca come tanta roba sotto gnome. Sia chiaro, questione di punti di vista; strettamente personali. Nasce con gnome 1.4 come una sorta di pachiderma lentissimo in cui tutto è presente. Forse allora la cosa aveva anche senso: non era poi così chiaro che mozilla sarebbe stato il browser standard, i DE per X non erano quelli di oggi. Con gnome 2.0 migliorano un pochino le cose ma il confronto con konqueror non regge assolutamente. Se è da un anno che non ci sono stati aggiornamenti significativi forse vorrà dire che inizia a far schifo anche agli sviluppatori stessi?

  7. Luca on

    Sono un utente Linux da anni. Ho provato varie distribuzioni: Slackware, Mandrake(ante Mandriva), Suse, Debian Woody, Ubuntu e sorelle (Kubuntu e Xubuntu che uso al momento) e sto per installare il Sidux, che ritengo molto interessante. Qualche tempo fa ho avuto esperienza prima col PC-BSD e poi col FreeBSD. La prima cosa che ho notato è la velocità nettamente superiore, poi la praticità dei ports che dava un bel senso di “scarno” e di controllo che forse provai con la Slackware. Insomma, mi piaceva. Però, devo aggiungere, per un uso “desktop” ho avuto dei problemi, sia con la configurazione stampante sia con la fatidica rotellina del mouse. Le ho provate tutte, ma nada!
    Sarei curioso di ritentare ora, magari qualcosa si è sviluppato, magari posso far andare il WiFi…
    Che dici?
    Saluti

  8. sughero on

    @luca: è da un po’ di tempo che non aggiorno più la mia FreeBSD, quindi non ti so ben dire per quello che riguarda il mouse, anche se mi sembra quasi scontato pensare che funzioni.
    Per la stampante penso che debba funzionare: su FreeBSD si usa CUPS esattamente come su Linux e i driver solitamente (salvo rare eccezioni) sono quelli inclusi in gimp.
    Per la WiFi, ho seri dubbi; come ben saprai anche sotto linux spesso si fa uso di firmware proprietari e non credo che la situazione sia molto semplice sui BSD

  9. Luca on

    Mi diresti in breve cosa apprezzi di più della Gentoo, nell’uso quotidiano dico, tenendo conto che è una distribuzione totalmente compilata (e compilante) e che questo potrebbe ridurre di molto il tempo per l’effettivo uso delle applicazioni?
    Se pensi che su Debian ci sono tool come checkinstall e dh_make, che dissolvono i problemi accennati riguardo la pulizia del sistema post compilazione o la futura rimozione dei pacchetti – perchè creano dei normali pacchetti .deb – quale è la reale convenienza di una Gentoo?
    Senza polemica sono veramente curioso perchè non l’ho mai testata.

    Ciao

  10. sughero on

    @Luca
    inizialmente credevo fermamente nell’ottimizzazione del kernel e degli applicativi per l’architettura.
    Le opzioni di compilazioni in gentoo sono contenute dentro /etc/make.conf e valgono tutte le volte che si lancia gcc.
    I benchmark e l’esperienza tuttavia rivelano che il guadagno è ben poca cosa rispetto ad applicativi compilati per generiche piattaforme x86. Dipende ovviamente poi di cosa si parla. Passi per il server X, per openoffice o per firefox, ma ha davvero senso ottimizzare la compilazione per bash o per vi?
    Non sono affatto un fanatico della mia distribuzione e, se vuoi saperlo, mi sto un po’ stufando di dover sempre aspettare un sacco prima di avere un aggiornamento funzionante.
    Il grosso svantaggio delle distro che usano sistemi di compilazione di default è proprio la lunga attesa mentre il vero vantaggio non è tanto l’ottimizzazione quanto la totale personalizzazione del sistema.
    Intendiamoci, puoi ottenere gli stessi identici risultati usando debian solo che è più macchinoso.
    Se usi debian, non credo che installi regolarmente il software usando checkinstall, farai piuttosto uso dei repository ufficiali.
    Userai comunque checkinstall in casi particolari in cui ti interessa una particolare versione di sviluppo per un applicativo e comunque non di regola.
    Intendiamoci, con ogni distribuzione teoricamente puoi costruirti un OS “from scratch” il punto è quale distro te lo permette con maggior facilità.
    Facciamo un esempio così forse risulta più comprensibile quello che intendo:
    Ammettiamo che usi debian o una derivata e vuoi installarti l’ultima subversion di AMSN perché diversamente dalla stabile supporta la webcam.
    AMSN è un client MSN che fa uso delle librerie tcl/tk.
    La cosa migliore è scaricarsi i sorgenti di AMSN-CVS o AMSN-SVN compilarli e invece di dare il make install alla fine creare un opportuno pacchetto binario .deb magari usando checkinstall.
    Magari sei anche fortunato ed esistono degli sviluppatori non ufficiali che hanno già fatto il lavoro per te e puoi usare un loro repository.
    Sicuramente avrai bisogno però anche delle tcl/tk 8.5 che non sono ancora stabili. Le librerie tcl/tk sono alla base di diversi applicativi, magari ne hai anche qualcuno installato sul tuo sistema e quello che hai installato dipende dalla versione 8.4 delle tcl/tk. Che fare?
    O ti tieni entrambe le versioni o crei nuovi pacchetti pure per i vecchi applicativi che non desidereresti ricompilare in modo che anche quelli usino tcl/tk 8.5.
    Nel momento in cui le tcl/tk 8.5 diventeranno stabili cosa succederà? Un bel casotto!
    Quasi sicuramente gli sviluppatori di debian li avranno compilati diversamente da come li hai compilati tu. Dovrai quindi disinstallare tutto a manina: apt-get e suoi derivati possono prevedere un aggiornamento dalle tck/tk 8.4 e non da una versione sperimentale che hai creato tu o che hai perché hai scaricato pacchetti non ufficiali.
    Mai avuto casini negli aggiornamenti perché hai usato pacchetti e repo non ufficiali?
    Con gentoo il problema si pone lo stesso ma è decisamente più abordabile dal momento che sei sempre TU a creare i pacchetti per il tuo sistema e non gli sviluppatori.
    Se aggiorno una libreria ricompilarmi tutte le dipendenze fa sempre parte del gioco e non consiste in un’installazione “fuori dai canoni”.
    Altro vantaggio è quello di rendere la compilazione estremamente semplice, quasi mai ti beccherai degli errori di compilazione come invece succede su sistemi pensati su pacchettizzazione binaria.
    Un port è un portage è semplicemente una directory dove sono contenute delle informazioni per l’installazione di un pacchetto compreso l’indirizzo di un sorgente.
    Con gentoo o con FreeBSD non dovrò cercarmi sul web i sorgenti, il sistema sa già dove andarli a pescare; non dovrò manualmente passare 1000 opzioni al ./configure dal momento che mi basta opportunatamente attribuire determinati valori a variabili d’ambiente. Con gentoo usi la variabile USE, se vuoi ad esempio che venga compilata l’interfaccia gtk basta che tu aggiunga “gtk” a $USE; con freebsd basta addirittura che la variabile esista, quindi se è definita $WITH_GTK automaticamente viene passato –with-gtk al ./configure.
    Ogni distro ha le sue manie, ricordo SUSE che metteva kde sotto /opt (lo fa ancora??).
    Gentoo ha il difetto di distinguere tra le versioni di kde e di piazzarle sotto /usr/kde/x.y dove x.y è la versione di kde; quando la compilazione è una cosa non abituale per un sistema capita spesso che tu non sappia dove sono contenuti determinati headers, oppure che tu abbia bisogno del pacchetto -dev perché la tua distro è pensata su binari e non su sorgenti e headers.
    Su gentoo il problema non si pone, non esistono i pacchetti -dev dal momento che se non li avessi non potresti mai ricompilarti le dipendenze.
    Spero di esser stato chiaro
    ciao

  11. ecalzo on

    ciao, bellissimo post complimenti.
    Una domanda,
    come OS per un desktop casalingo per websurfing,mp3, musica, dvd burn e altro piu’ eventuale ma non indispensabile prog per p2p su macchina athlon 64 4200 2g di ram che bsd consiglieresti?
    grazie ciao

  12. sughero on

    @ecalzo
    Non ho poi questa vasta esperienza sui sistemi BSD. L’unico che ho usato è FreeBSD che a suo tempo mi entusiasmò per il suo sistema di aggiornamento.
    Parlando di sistemi 386, al tempo i BSD erano decisamente più utilizzati in ambito server e chiunque lo utilizzasse in ambito desktop si sentiva in qualche modo di affrontare un’impresa un po’ pionieristica.

    FreeBSD era decisamente più duttile per un utilizzo su desktop rispetto a openBSD o a netBSD. Altri sistemi come ad esempio Darwin sia in flavour Apple che GNU penso che risultassero troppo brigosi per un utilizzo giornaliero e la loro installazione per molti è stata semplicemente il soddisfacimento di una curiosità.

    Non che ora i BSD siano pensati come il sistema per il desktop ma la situazione è decisamente migliorata.

    Dal 2003 molte cose sono cambiate; l’emulatore linux non è più antidiluviano, il supporto dei driver è nettamente migliorato. La macchina che hai non dovrebbe avere problemi con nessun sistema anche se continuo a credere che anche oggi per il desktop FreeBSD rimanga la scelta migliore.

    FreeBSD mantiene il più alto numero di utenti tra gli user BSD, uno handbook di grande chiarezza ed un supporto online veramente eccellente.
    Dal momento che non mi parli di linux e che alla fine gli applicativi sarebbero sempre i soliti targati GPL (Mozilla, mplayer, amule…) non credo che ci possa essere un sistema sul quale quei programmi girino meglio o peggio. La scelta dell’OS dovrebbe dipendere a mio avviso dal tuo gusto personale. Tra le novità interessanti di questi ultimi anni in ambito BSD emerge sicuramente DragonFly che non conosco e che sembra esser degno di esser provato.
    Buona scelta

  13. Paolo52 on

    Anch’io dopo qualche anno di uso in ambito desktop di Linux al posto di Win mi sono incuriosito a provare un BSD. Mmhhh. Ecco la mia personale opinione. A livello server non ci piove: un BSD può essere benissimo usato come o più di Linux. Però non opterei mai per un FreeBSD ma per OpenBSD che, nella rincorsa agli UNIX rigorosi, è ancora più rigoroso ancora (basta pensare ai /dev/wd0) e davvero ha una stabilità eccezionale. In ambito desktop ho pianto di commozione quando un suono è uscito dalla scheda audio con OpenBSD. Per dirla tutta: in giro sulla rete per cercare documentazione mi sono imbattuto in un tizio che, dopo aver dato consigli a destra e a manca confessava, mentre rispondeva sull’installazione del server grafico, che lui non aveva mai usato OpenBSD in ambiente grafico ma solo da console (sic!). FreeBSD è un compromesso, che ha la sua punta di diamante in un discutibile progetto come PC-BSD, dove si passa da un eccesso ad un altro: da sistema per smanettoni ad un sistema che s’installa in modo scemo. Mentre con OpenBSD non ho avuto problemi d’installazione perchè assolutamente coerente, con FreeBSD un disastro. Per due volte m’ha mangiato una partizione Linux, comunque passi. Il fatto è che sia PC-BSD che FreeBSD mi hanno dato fastidiosi random reboot, mentre OpenBSD sotto questo aspetto andava benissimo. Mistero. Anche per la compilazione ho avuto problemi, tipo quelli che si hanno con distro linux come Mandriva o SUSE che infatti presuppongono che tu compili poco, almeno teoricamente. Niente a che vedere con l’efficienza e l’efficacia di Gentoo che non sbaglia un emerge. Ecco: la gestione dei ports a me sembra essere un po’ così: efficiente ma non sempre efficace. Tra i due termini ci sono grosse dfferenze. Settore documentazione. Lasciamo perdere. Si dice che ti devi leggere i manuali prima. Si, peccato che spesso siano indietro di qualche annetto. Quindi o trovi roba vecchia o scarso seguito in giro. Difficilmente in un forum trovi alla fine della discussione la soluzione al problema ma spesso un incartamento su dettagli tecnici senza che nessuno dica si fa così e così. Esempio? Installazione di ntfs-3g. A me riesce di montarlo ma non di farlo partire all’avvio. Se qualcuno sa la soluzione (diverse da quelle trovate in rete) me la mandi. Conclusione, per non farla lunga: è un sistema che come Desktop monterei per un ufficio in cui le incombenze sono minime: qualche documento in videoscritture tutto l’altro gestito da applicativi diciamo esterni (tipo MySQL, Apache, ecc). Con il vantaggio che l’impiegato non avrebbe possibilità di navigare da fannullone su Youtube perchè non vedrebbe nulla o il suo linux-firefox crasherebbe all’istante sul click del video! Scusate la prolissità.

  14. sughero on

    Di recente ho visto che quest’articolo ha generato una discussione qui.
    Desidero fare alcune precisazioni:
    1. la cosa mi fa solo piacere.
    2. non ho nessuna avversità nei confronti di Linux, al contrario lo adoro! Non sono un trasfugo verso BSD, ho diversi flavour linux sulle mie box e anche se lo fossi non sentirei di dover dare delle giustificazioni per esser passato a BSD.
    3. il fatto che GNU/Linux non sia un sistema operativo organico non è necessariamente uno svantaggio, sta nella distribuzione affrontare questo problema, dal momento che i ruoli sia di GNU (procurare gli applicativi) che di Torvalds (sviluppare il kernel) son chiari.
    4. considerare spam sia quanto detto da Fernandé (e da me tradotto credo molto fedelmente) che le mie personali considerazioni sta nel lettore.
    5 Nella frase:

    “Verissimo, è POSIX compliant, essenzialmente risponde a determinate caratteristiche tipiche dei dialetti UNIX, ma non è POSIX.”

    Non vedo nessuna contraddizione.
    Non sono io a dirlo, si può leggere anche qui: è fatto noto che Torvalds agli inizi, nella stesura della primissima versione del kernel, avesse chiesto alla mailing list di minix ragguagli su dove reperire gli standard POSIX; essendosi poi reso conto che tali standard non sono pubblici

    Torvalds dovette quindi ricorrere al “piano B”, ovvero riscrivere le funzionalità capaci di emulare quelle descritte nel manuale di una workstation Sun dell’Università di Helsinki.
    Procedura lunga e noiosa, ma certamente più veloce di quella che avrebbe comportato seguire passo passo uno standard della complessità del Posix.

  15. Lello on

    Mi fa molto piacere tutto questo interesse verso oss.Mi dispiace leggere, ancora oggi, di problemi con la rotellina del mouse risolti (o mai esistiti) da anni semplicemente leggendo il manuale del server X.Non perdiamo la rotta.Questo non e’software gratis, e’ open source e con questo spirito va affrontato.Scusatemi.Non voleva essere una nota polemica.Come dicevo, mi fa molto piacere che ci sia una nutrita schiera di utenti gasati da installazioni con interfaccia grafica o desktop 3d rotanti.L’uscita di Ubuntu, per esempio, ha fatto avvicinare moltissime persone all’open source, ma purtroppo poche sono andate oltre a premere 4 volte [Avanti]…Sotto ogni sistema Linux/BSD c’e’ un cuore pulsante, un mondo tutto da scoprire fatto di codice generato dalla passione verso questo potente strumento di comunicazione quale e’ il personal computer oggi.
    Quindi, complimenti a te per l’ articolo, ora tocca a noi con il coding; il gioco e’ proprio questo.

    Ciao
    Gabriele

  16. marrist on

    beh, come dare torto all’autore del post per i giudizi su GNU linux |

    Ma vogliamo parlare di prestazioni ? è la differenza maggiore tra linux e freebsd.

    FREEBSD NON ha rivali a prestazioni e nell’uso desktop praticamente NON swappa MAI !
    Ci sono rimasto di sasso quando l’ho visto ! lo swap praticamente rimane inattivo !

    Io ho cambiato linux x freebsd oramai da più di un anno e mi trovo benissimo anche nell’uso desktop e con coputer vecchi anche di 15 anni !

    Ho un server web e mail su un 486DX2 66 MHz che va una meraviglia, con linux… beh aspetta e spera !

    ciao

  17. Falko on

    Ciao a tutti, ho letto con interesse l’articolo ed i relativi commenti e non posso che trovarmi daccordo su chi ha affermato che l’architettura FreeBSD sia effettivamente superiore a quella Linux per molti aspetti. Io utilizzo FreeBSD da relativamente poco e provengo dalla distribuzione Slackware (che per molte cose sembra un fork di BSD stesso, ad esempio l’installer); sicuramente la cosa più bella che ho trovato in questa distro è la facilità incredibile che si ha nella gestione dei pacchetti e dei sorgenti (estremamente omogenea) e la facilità di aggiornamento che è stata introdotta (almeno nella 7.x), sembra quasi di usare un sistema Slackware con la flessibilità di Debian e la facilità di Ubuntu (a patto di aver un minimo di conoscenza della shell, si intende), senza contare che il sistema risulta anche estremamente veloce e versatile 🙂

    Cosa dire, è un sistema validissimo che va almeno provato, se poi vi piacerà beh: benvenuti nel favoloso mondo di *BSD 🙂

  18. GaioLi on

    Grazie per la traduzione…
    Una sola nota: i termini stranieri in italiano sono invarianti, per cui non dovresti scrivere “files” o “drivers”, ma “file” e “driver”, esattamente come non parli di “films” e “tirs”

  19. cawnus on

    Per ora ho provato varie distro.
    Per ora per me è Gentoo (Funtoo) il top della vita con portage che semplifica l’impossibile.
    è un olio.. un orologio svizzero; la flessibilità incomparabile.

    Ma.. dato cehl a voglia di provare non mi è ancora fcessata… provo freeBSD ma:
    1) on voglio asolutamente usare pkg_add (per me un os per pc desktop deve essere compilato sfruttando ottimizzazioni (quindi un bel -march=native ci va alla perfezione :))

    i ports mi deludono assai.
    Trovo un sacco di errori; la documentazione scarseggia come i post di risoluzione problemi.
    A distanza di mesi gli stessi problemi in fase di compilazione sono identici.

    Al che risuta troppo complesso (o, per meglio dire occorre troppo tempo) voler ottenere un OS totalmente comiplato.
    Eppure ciò mi spiace davvero erchè provo volentieri.
    (LFS.. mnon ci penso nemmeno… troppo per me)

    Gentoo invece è troppo ma tropoo geniale. Portage è una tecnologia incredibile.
    Quindi… se non vengono corretti problemini abbastanza semplici ma comunque tediosi con i ports… come fai a chiamare OS bsd e non Linux?
    gentoo è di tutto e di più
    lo “pennelli” a tuo piacimento dove vuoi 😀

    anche in una chitarra elettronica.

    E’ micidiale 😮

  20. Simone on

    Wow! Siete fichissimi, altro che windows!

  21. Domenico on

    Mi hanno regalato tre Sun Netra T1 105 e dopo vari tentativi con le varie distribuzioni linux per sparc64 (non sono riuscito a far andare entrambe le schede di rete, debian addirittura le rilevava entrambe con lo stesso mac address) ho provato freeBSD. Fantastico nessun problema con schede di rete ed altri driver. Poi ho provato ad istallare gmirror per avere i due dischi della macchina in raid1, seguendo un post ho preso il disco secondario ed installato su un’altra macchina e, sorpresa, si è avviata normalmente senza nessun messaggio d’errore, solo il raid risultava degradato.
    Per cui installata una utilizzando il secondo disco e risincronizzando il raid, in breve tempo avevo tutte e tre le macchine on-line (basta cambiare il nome dell’host di ogni macchina). Meglio di ghost.

  22. Fox on

    Buongiorno a tutti,

    ho trovato per caso questo ottimo vecchio post. Sono un utente Desktop che adopera Slackware ma ama parecchio FreeBSD. Se anche Slackware un giorno si arrendesse a Systemd (attualmente, per fortuna, si limita a elogind) passerei a FreeBSD. Sperando che almeno lì non arrivi mai un obbrobrio simile.


Scrivi una risposta a Lello Cancella risposta