b'\n_START_ARTICLE_\nFreeBSD\n_START_SECTION_\nOrigini\n_START_PARAGRAPH_\nIl progetto FreeBSD (il nome si deve a David Greenman) ha origine all\'inizio del 1993 come evoluzione dell\'"Unofficial 386BSD Patchkit" ad opera di Nate William, Rod Grimes e Jordan Hubbard. La prima distribuzione su CD-ROM fu FreeBSD 1.0 e apparve nel dicembre 1993. Nella primavera del 1994, tuttavia, alcuni sviluppi di una lunga controversia legale tra l\'universit\xc3\xa0 di Berkeley e la Novell ebbero effetti anche sul sistema operativo FreeBSD._NEWLINE_Il codice del FreeBSD 1.0 era basato su quello del 386BSD 0.1, il quale a sua volta derivava dal sistema Net/2. Questo codice, che conteneva parti con copyright AT&T UNIX, fu poi acquistato da Novell, che ne rivendic\xc3\xb2 la propriet\xc3\xa0 nei confronti dell\'universit\xc3\xa0 di Berkeley. In realt\xc3\xa0 le due parti in causa raggiunsero un accordo perch\xc3\xa9 gran parte del codice che BSD aveva preso dallo UNIX di AT&T, era stato ampiamente modificato, se non completamente riscritto._NEWLINE_FreeBSD doveva comunque eliminare le porzioni di codice prese dal sistema proprietario. La sfida era particolarmente impegnativa: buona parte del codice andava riscritta. Tuttavia gi\xc3\xa0 nel novembre dello stesso anno vedeva la luce FreeBSD 2.0, versione ancora piuttosto instabile ma libera dai vincoli di propriet\xc3\xa0 sul codice. Si susseguirono poi altre versioni intermedie di miglioramento: la 3.x (ottobre 1998), la 4.x (marzo 2000) la 5.x (2003) fino ad arrivare alla 6.x (2005), la 7.x distribuita il 27 febbraio 2008, la 8.x del novembre 2009, la 9.2 del settembre 2013 e 10.0 del 20 gennaio 2014.\n_START_SECTION_\nLa fondazione\n_START_PARAGRAPH_\nLo sviluppo di FreeBSD \xc3\xa8 supportato in parte dalla "FreeBSD Foundation". La Fondazione \xc3\xa8 un\'organizzazione non-profit che accetta donazioni. Qualche donazione \xc3\xa8 ottenuta dallo sponsor degli sviluppatori ed \xc3\xa8 utilizzata per acquistare hardware e infrastrutture di rete, per i summit e per il supporto legale del progetto stesso.\n_START_SECTION_\nCaratteristiche\n_START_PARAGRAPH_\nFreeBSD \xc3\xa8 un sistema operativo utilizzato soprattutto in ambito server._NEWLINE_Questo \xc3\xa8 dovuto alla stabilit\xc3\xa0 e scalabilit\xc3\xa0 della parte di networking di FreeBSD. Grande attenzione \xc3\xa8 posta inoltre alle problematiche di sicurezza, ed attualmente sono disponibili tre sistemi di firewall: IPFW, IPFilter e PF, integrato nel sistema dalla versione 6.0._NEWLINE_Nonostante debba la sua fama soprattutto a questo, FreeBSD pu\xc3\xb2 essere benissimo usato come sistema operativo desktop. Migliaia sono infatti le applicazioni disponibili tramite i ports, cio\xc3\xa8 il sistema di gestione pacchetti di FreeBSD, e tra di esse si trovano browser internet, ambienti grafici integrati, suite per ufficio, lettori multimediali e molto altro._NEWLINE_I ports liberano l\'utente dal problema delle dipendenze relative ai pacchetti, cio\xc3\xa8 il complesso di altri programmi e librerie necessari per assicurare il corretto funzionamento sulla macchina del programma che stiamo installando; pertanto, installando un programma tramite l\'albero dei ports, verranno scaricati i sorgenti pi\xc3\xb9 aggiornati del programma stesso, e non il suo eseguibile binario, ed anche i sorgenti aggiornati di tutti i programmi dai quali esso dipende; successivamente i programmi vengono ricompilati ex novo sulla macchina dell\'utente ed installati nelle corrette directory pronti per l\'uso. Una gestione simile si ha nelle distribuzioni Gentoo e Arch Linux.\n_START_SECTION_\nNetworking\n_START_PARAGRAPH_\nLo stack del FreeBSD \xc3\xa8 basato su quello TCP/IP ma supporta anche IPv6, SCTP, IPSec, IPX, AppleTalk e le reti wireless.\n_START_SECTION_\nLo storage\n_START_PARAGRAPH_\nFreeBSD ha diverse caratteristiche relative allo storage. Soft updates mantiene l\'integrit\xc3\xa0 del filesystem in caso di crash del sistema. Il framework GEOM supporta caratteristiche come RAID, full disk encryption (cifratura dei dati dell\'intero disco) e la concatenazione dei dischi. Il filesystem snapshot \xc3\xa8 una caratteristica che permette di creare in modo efficiente un\'immagine istantanea del filesystem, permettendo pure di ripristinare il sistema da un filesystem live. FreeBSD supporta inoltre il filesystem ZFS come alternativa al normale UFS2.\n_START_SECTION_\nSicurezza\n_START_PARAGRAPH_\nFreeBSD supporta diverse caratteristiche relative alla sicurezza come access control list (ACLs), la verifica di eventi, gli attributi estesi del filesystem e mandatory access control (MAC). Queste caratteristiche furono sviluppate dal progetto TrustedBSD il quale fu fondato da Robert Watson con l\'obiettivo di implementare i concetti dal Common Criteria e quelli del TCSEC. Questo progetto procede ancora e molte delle sue estensioni sono state integrate nelle distribuzioni FreeBSD._NEWLINE_Questo progetto ha pure adattato l\'implementazione della National Security Agency dal SELinux a FreeBSD._NEWLINE_Altri lavori inclusi nello sviluppo di OpenBSM, un\'implementazione open source delle API (BSM) della Sun e del supporto del formato dei file log, i quali aggiungono maggiore sicurezza al sistema._NEWLINE_Mentre molti componenti del progetto TrustedBSD sono stati inclusi nei sorgenti per FreeBSD, molte caratteristiche, ormai pienamente maturate, trovano la loro collocazione in altri sistemi operativi, come ad esempio: OpenPAM e UFS2 sono stati adottati in NetBSD. Il framework TrustedBSD MAC \xc3\xa8 stato adottato dalla Apple per il proprio sistema operativo macOS.\n_START_SECTION_\nPortabilit\xc3\xa0\n_START_PARAGRAPH_\nFreeBSD \xc3\xa8 stato adattato ad una variet\xc3\xa0 di architetture di processori. Il progetto FreeBSD organizza le architetture in livelli che caratterizzano il supporto previsto. Livello 1 le architetture sono completamente mature e supportate. Livello 2 le architetture sono sotto sviluppo. Livello 3 le architetture sono sperimentali e non hanno uno sviluppo attivo e nel caso del livello 4 non hanno assolutamente alcun supporto.\n_START_SECTION_\nKernel\n_START_PARAGRAPH_\nFreeBSD ha un kernel monolitico. Il solo kernel di FreeBSD (spesso abbreviato in kFreeBSD) \xc3\xa8 utilizzato da altre distribuzioni, quali ad esempio Debian GNU/kFreeBSD.\n_START_SECTION_\nCompatibilit\xc3\xa0 Linux\n_START_PARAGRAPH_\nIl Linux compatibility layer consente di eseguire file ELF a 32 e 64-bit compilati per Linux. In genere non sono presenti significativi cali di prestazioni rispetto ad un\'esecuzione nativa. Vari programmi compilati per Linux sono inclusi e mantenuti nella ports collection. Per l\'esecuzione di questi ultimi, \xc3\xa8 necessaria l\'installazione di alcuni moduli kernel (tra l\'altro necessari per l\'installazione del modulo kernel del driver NVIDIA) e di un sistema Linux di base (al momento di FreeBSD 11.0-RELEASE vengono utilizzati i binari di CentOS 6.x).\n_START_SECTION_\nSviluppo\n_START_PARAGRAPH_\nI committers di FreeBSD periodicamente distribuiscono il sistema. L\'uscita ufficiale avviene con la versione RELEASE, che succede ai RELEASE CANDIDATES, o RCn (con n = da 1 a 3). La fase in lavorazione \xc3\xa8 rappresentata dalla versione STABLE che include le innovazioni gi\xc3\xa0 approvate in una release abbastanza stabile dedicata ai beta testers e sviluppatori, mentre \xc3\xa8 rappresentato dalla versione CURRENT il vero e proprio lavoro in corso, spesso instabile, che a sua volta pu\xc3\xb2 essere sintetizzato con gli snapshot temporanei che congelano la situazione del codice ad uno specifico punto temporale.\n_START_SECTION_\nPort e Package\n_START_PARAGRAPH_\nLa Collezione dei Ports e dei Package di FreeBSD offre un modo semplice e coerente di installare le applicazioni precompilate nel caso dei package e autocompilanti nel caso dei ports, meccanismo molto rodato ed utile per gli utenti e gli amministratori e, per certi versi, assimilabile a quello utilizzato dalla distribuzione Debian del sistema Gnu/Linux. Attualmente ci sono diverse migliaia di port disponibili._NEWLINE_La Collezione dei Port supporta l\'ultima release dei rami FreeBSD-CURRENT e FreeBSD-STABLE. Le release precedenti non sono supportate e possono o non possono funzionare correttamente con una collezione di port aggiornata. Col tempo, le modifiche alla collezione dei port possono basarsi su funzionalit\xc3\xa0 non presenti nelle vecchie release. Quando possibile, si cerca di non rompere il supporto alle release recenti, ma talvolta non \xc3\xa8 possibile. Quando accade, le patch inviate dalla comunit\xc3\xa0 utenti per mantenere il supporto alle vecchie release vengono solitamente accettate._NEWLINE_Ogni port elencato contiene tutte le patch necessarie per rendere il codice sorgente dell\'applicazione originale compilabile ed eseguibile sotto FreeBSD. Installare un\'applicazione \xc3\xa8 semplice: basta scaricare il port, decomprimerlo e digitare make nella directory del port. Tuttavia, il metodo pi\xc3\xb9 conveniente (e comune) \xc3\xa8 scaricare il framework per l\'intera lista dei port, installando l\'intera gerarchia dei port durante l\'installazione di FreeBSD, in modo da avere migliaia di applicazioni pronte per essere installate; navigando nel tree dei ports fino ad arrivare al codice sorgente desiderato, \xc3\xa8 possibile compilarlo facilmente col comando:_NEWLINE_   make install clean_NEWLINE_Il Makefile di ogni port scarica automaticamente il codice sorgente dell\'applicazione, sia esso presente in un disco locale, in un CD-ROM, o in un sito FTP. Il codice viene decompresso nel sistema, vengono applicate le patch ed infine compilato. Se il particolare port lo prevede, pu\xc3\xb2 essere eseguita una procedura di configurazione preliminare. Se tutto \xc3\xa8 andato bene, un semplice make install installer\xc3\xa0 l\'applicazione e la registrer\xc3\xa0 nel sistema dei package._NEWLINE_Per la maggior parte dei ports, esiste anche un package precompilato, che evita all\'utente il lavoro di compilare tutto. L\'installazione di un pacchetto remoto pu\xc3\xb2 essere effettuata mediante il seguente comando:_NEWLINE_   pkg_add -r nomepacchetto_NEWLINE_La procedura si incarica in maniera trasparente di connettersi in remoto su internet al server che contiene il pacchetto e di scaricarlo installandolo e registrandolo. Ovviamente si tratta del binario precompilato che non rappresenta l\'ultima versione del sorgente e neppure la versione ad hoc ottenibile con la compilazione, ma \xc3\xa8 comunque un buon metodo per avere l\'applicazione rapidamente installata e funzionante, senza cognizioni specifiche e senza ulteriori procedure pre o post installazione._NEWLINE_La Collezione dei Ports e dei Packages \xc3\xa8 senz\'altro una delle punte di diamante che distinguono tutti i sistemi operativi BSD in genere, che restano sempre strettamente legati tra software e sistema operativo mantenendo una coerenza ed una solidit\xc3\xa0 non riscontrabile in altri sistemi, ed in special modo FreeBSD \xc3\xa8 l\'unico ambiente che esprime ed espande questa caratteristica nel modo pi\xc3\xb9 completo, trasparente ed user-friendly possibile.\n_START_SECTION_\nPort\n_START_PARAGRAPH_\nLa gestione dei ports permette di scaricare localmente il ports tree, attualizzato alla versione desiderata, di tutto il software mantenuto per FreeBSD. Inizialmente, ogni singola directory nel tree locale, contiene una descrizione del software ed un Makefile. I ports possono essere installati eseguendo make all\'interno della propria directory, oppure servendosi di software di ports management, ad esempio portmaster o poudriere (quest\'ultimo consente la creazione ed il mantenimento di una repository, ed \xc3\xa8 uno degli approcci preferiti da utenti esperti, specialmente per l\'utilizzo delle jails in fase di compilazione).\n_START_SECTION_\nPackage\n_START_PARAGRAPH_\nPer molti ports, esistono binari precompilati gi\xc3\xa0 esistenti. Questo metodo \xc3\xa8 molto veloce ed evita il processo di compilazione, ma in questo caso gli utenti non possono configurare le opzioni di compile-time. Tuttavia, nonostante sia in genere sconsigliato, \xc3\xa8 possibile mantenere un sistema ibrido di pacchetti precompilati e ports compilati in locale.'