FreeBSD
FreeBSD sistema operativo | |
---|---|
![]() ![]() | |
Sviluppatore | The FreeBSD Project |
Famiglia | BSD |
Release corrente | 14.1 (4 giugno 2024) |
Tipo di kernel | Kernel monolitico |
Piattaforme supportate | IA-32, x86-64, PowerPC, ARM, RISC-V |
Tipo licenza | Software libero |
Licenza | BSD |
Stadio di sviluppo | In produzione |
Sito web | www.freebsd.org |
In informatica FreeBSD è un sistema operativo Unix-like[1] libero derivato dalla Berkeley Software Distribution (BSD) (disponibile per le architetture Intel IA-32, AMD64, DEC Alpha, IA-64, NEC PC-9801, UltraSPARC, PowerPC ed altre).
Storia
[modifica | modifica wikitesto]Origini
[modifica | modifica wikitesto]Il 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à di Berkeley e la Novell ebbero effetti anche sul sistema operativo FreeBSD.
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ò la proprietà nei confronti dell'università di Berkeley. In realtà le due parti in causa raggiunsero un accordo perché gran parte del codice che BSD aveva preso dallo UNIX di AT&T, era stato ampiamente modificato, se non completamente riscritto.
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à nel novembre dello stesso anno vedeva la luce FreeBSD 2.0, versione ancora piuttosto instabile ma libera dai vincoli di proprietà 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.
Fondazione
[modifica | modifica wikitesto]Lo sviluppo di FreeBSD è supportato in parte dalla "FreeBSD Foundation". La Fondazione è un'organizzazione non-profit che accetta donazioni. Qualche donazione è ottenuta dallo sponsor degli sviluppatori ed è utilizzata per acquistare hardware e infrastrutture di rete, per i summit e per il supporto legale del progetto stesso.[2]
"Licenza FreeBSD" o "Licenza BSD semplificata"
[modifica | modifica wikitesto]Licenza FreeBSD | |
---|---|
Autore | The FreeBSD Project |
Editore | Pubblico dominio |
Data di pubblicazione | ? |
Compatibile con DFSG | Si |
Software libero | Si[3] |
Approvata OSI | Si[4] |
Compatibile GPL | Si[3] |
Copyleft | No[3] |
Linking da codice sotto differente licenza | Si |
La licenza a due clausole FreeBSD (Free BSD License, come viene chiamata dalla Free Software Foundation) è una versione semplificata della licenza BSD a tre clausole, da cui si differenzia per l'assenza della clausola di non-endorsement. Inoltre aggiunge un ulteriore disclaimer riguardo ai punti di vista e alle opinioni espresse nel software. La FSF dichiara che la licenza FreeBSD è compatibile con la GPL. La FSF incoraggia anche gli utenti a essere specifici nel riferirsi alla licenza per nome (ad es. senza riferirsi ad essa semplicemente come a una "licenza BSD" o come a una "licenza stile-BSD"), così come accade per la nuova/modificata licenza BSD, per evitare confusione con la licenza BSD originale.
La OSI ha ratificato come licenza Open Source la licenza FreeBSD sotto il nome di "Licenza BSD semplificata".[4] FreeBSD è distribuita sotto diverse licenze open source. Il codice Kernel è distribuito sotto la clausola 2 della licenza BSD la quale permette a chiunque di usare e ridistribuire FreeBSD. Altro codice incluso nelle distribuzioni di FreeBSD è sotto diverse licenze quali: GPL, LGPL, ISC o CDDL. Tutto il codice sotto GPL e CDDL è chiaramente separato dal codice sotto libera licenza, in modo che sia facile per ogni utente, quali i produttori di dispositivi embedded, l'utilizzo di permissive free software licence.
Copyright (c) <YEAR>, <OWNER> All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of the FreeBSD Project.
Altri progetti, come NetBSD, usano una licenza a due clausole simile alla FreeBSD, senza però il disclaimer aggiuntivo.[5]
Descrizione
[modifica | modifica wikitesto]Caratteristiche
[modifica | modifica wikitesto]È un sistema operativo utilizzato soprattutto in ambito server e questo è dovuto alla stabilità e scalabilità della sua parte di networking; grande attenzione è posta inoltre anche alle problematiche di sicurezza, ed attualmente sono disponibili tre sistemi di firewall (IPFW, IPFilter e PF)[6], integrato nel sistema a partire dalla versione 6.0: nonostante debba la sua fama soprattutto a questo, può essere usato efficacemente come sistema operativo desktop: migliaia sono infatti le applicazioni disponibili tramite i ports, cioè il sistema di gestione pacchetti di FreeBSD, e tra di esse si trovano web browser, ambienti grafici integrati, suite per ufficio, lettori multimediali ecc.
I ports liberano l'utente dal problema delle dipendenze relative ai pacchetti, cioè il complesso di altri programmi e librerie necessari per assicurare il corretto funzionamento sulla macchina del programma stesso che stiamo installando; pertanto, installando un programma tramite l'albero dei ports, verranno scaricati i sorgenti più 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 anche nelle distribuzioni Linux Gentoo e Arch Linux).
Networking
[modifica | modifica wikitesto]Lo stack protocollare è basato su TCP/IP supportando ad esempio anche IPv6, SCTP, IPSec e le reti wireless. Fino a prima della versione 11[7]FreeBSD supportava lo stack protocollare IPX, ma dato che nel frattempo è diventato obsoleto il suo supporto è stato eliminato.
Storage
[modifica | modifica wikitesto]FreeBSD ha diverse caratteristiche relative allo storage. Soft updates mantiene l'integrità 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 è 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[8] come alternativa al normale UFS2.
Sicurezza
[modifica | modifica wikitesto]FreeBSD supporta diverse caratteristiche relative alla sicurezza come access control list (ACLs)[9], 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.
Questo progetto ha pure adattato l'implementazione della National Security Agency dal SELinux a FreeBSD. 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.
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 è stato adottato dalla Apple per il proprio sistema operativo macOS.
Kernel
[modifica | modifica wikitesto]FreeBSD ha un kernel monolitico.[10] Il solo kernel di FreeBSD (spesso abbreviato in kFreeBSD) è utilizzato da altre distribuzioni, quali ad esempio Debian GNU/kFreeBSD.[11]
Portabilità
[modifica | modifica wikitesto]FreeBSD è stato adattato ad una varietà 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.
Compatibilità Linux
[modifica | modifica wikitesto]Il 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, è 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).[12]
Installer
[modifica | modifica wikitesto]- Sysinstall è uno strumento per installazione del sistema fornita da FreeBSD Project, ha un'interfaccia testuale ed è divisa in schermate di menù che permettono la configurazione ed il controllo del processo d'installazione del sistema operativo.
- Bsdinstall è il nuovo strumento di installazione introdotto con FreeBSD 9.0 per sostituire Sysinstall.
- Finstall è uno strumento per installare FreeBSD ed i sistemi derivati da FreeBSD, attraverso un'interfaccia grafica.
Port e Package
[modifica | modifica wikitesto]La 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.
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à non presenti nelle vecchie release. Quando possibile, si cerca di non rompere il supporto alle release recenti, ma talvolta non è possibile. Quando accade, le patch inviate dalla comunità utenti per mantenere il supporto alle vecchie release vengono solitamente accettate.
Ogni port elencato contiene tutte le patch necessarie per rendere il codice sorgente dell'applicazione originale compilabile ed eseguibile sotto FreeBSD. Installare un'applicazione è semplice: basta scaricare il port, decomprimerlo e digitare make nella directory del port. Tuttavia, il metodo più conveniente (e comune) è 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, è possibile compilarlo facilmente col comando:
make install clean
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ò essere eseguita una procedura di configurazione preliminare. Se tutto è andato bene, un semplice make install installerà l'applicazione e la registrerà nel sistema dei package.
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ò essere effettuata mediante il seguente comando:
pkg_add -r nomepacchetto
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 è comunque un buon metodo per avere l'applicazione rapidamente installata e funzionante, senza cognizioni specifiche e senza ulteriori procedure pre o post installazione.
La Collezione dei Ports e dei Packages è 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à non riscontrabile in altri sistemi, ed in special modo FreeBSD è l'unico ambiente che esprime ed espande questa caratteristica nel modo più completo, trasparente ed user-friendly possibile.
Port
[modifica | modifica wikitesto]La 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 è uno degli approcci preferiti da utenti esperti, specialmente per l'utilizzo delle jails in fase di compilazione).
Package
[modifica | modifica wikitesto]Per molti ports, esistono binari precompilati già esistenti. Questo metodo è 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, è possibile mantenere un sistema ibrido di pacchetti precompilati e ports compilati in locale.
Utility per la gestione di ports and package
[modifica | modifica wikitesto]Ci sono molte utility disponibili per la gestionie del software sia sotto interfaccia grafica GUIs, sia sotto riga di comando CLIs e sono le seguenti:
- barry - Gestisce i ports sotto KDE
- bpm – Un gestore di ports collection sotto GUI
- kports - Gestisce i ports sotto KDE
- pib - Un gestore di ports collection sotto GUI
Sviluppo
[modifica | modifica wikitesto]I 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 è rappresentata dalla versione STABLE che include le innovazioni già approvate in una release abbastanza stabile dedicata ai beta testers e sviluppatori, mentre è rappresentato dalla versione CURRENT il vero e proprio lavoro in corso, spesso instabile, che a sua volta può essere sintetizzato con gli snapshot temporanei che congelano la situazione del codice ad uno specifico punto temporale.
Versioni
[modifica | modifica wikitesto]Sistemi derivati
[modifica | modifica wikitesto]Dal sistema operativo FreeBSD sono derivati i seguenti progetti che talvolta sono dei veri e propri fork e altre volte sono assimilabili alle distribuzioni del mondo Gnu/Linux; questi sono:
DESKTOP:
- PC-BSD, sistema orientato all'uso personale, destinato alle macchine da scrivania/ufficio, pacchetti gestiti tramite sistema grafico di uso semplice (non più sviluppato)
- DesktopBSD, sistema orientato all'uso personale e semplice completato e personalizzabile da script ad hoc (non più sviluppato)
- Ghost BSD, sistema desktop basato su interfaccia Gnome
MINIMALI:
- PicoBSD, sistema funzionante eseguibile da un solo Floppy disk (non più sviluppato)
- MiniBSD, sistema da 12-15 Mb, utilizzabile da chiavette USB o schedine di memorie Nand (non più sviluppato)
- ClosedBSD, sistema completo utilizzabile su immagini di dimensioni ridotte da 1.4 Mb (es. floppy) a 12.8 Mb di grandezza (mini CD)
- PenBSD, sistema pensato per funzionare da chiavette USB
LIVE:
- FreeSBIE, sistema utilizzabile direttamente da supporto ottico rimovibile (cd, DVD, ecc.) (non sviluppato dal 2007)
- BSDeviant, sistema da 210 Mb utilizzabile da CD-ROM senza necessità di Hard drive (non sviluppato dal 2004)[13]
- GuLIC-BSD, sistema utilizzabile direttamente da immagine disco tradotto totalmente in Castigliano, derivato dal progetto FreeSBIE
AD HOC:
- FreeNAS, sistema per costruire un Network Attached Storage box
- M0n0wall, sistema per costruire un firewall box essenziale, su qualunque device
- PFsense, sistema per costruire un firewall box, utilizzando un normale PC
FORKS:
- Debian GNU/kFreeBSD, sistema ibrido GNU Debian che utilizza il kernel FreeBSD al posto dell'usuale kernel Linux (non più sviluppato)
- DarwinOS, sistema ibrido FreeBSD/NeXTStep progettato da Apple
- DragonFlyBSD, sistema nato da un fork di FreeBSD 4.8 che prosegue lo sviluppo di FreeBSD 4.x
- Orbis OS, sistema Basato su FreeBSD 9, ideato dalla Sony, montato sulla PlayStation 4
Note
[modifica | modifica wikitesto]- ^ DistroWatch, DistroWatch.com: FreeBSD, su distrowatch.com. URL consultato il 20 giugno 2018.
- ^ About the FreeBSD Foundation, su freebsdfoundation.org, The FreeBSD Foundation. URL consultato il 6 settembre 2009 (archiviato dall'url originale il 28 marzo 2010).
- ^ a b c Various Licenses and Comments about Them - GNU Project - Free Software Foundation (FSF): FreeBSD license, su gnu.org, Free Software Foundation. URL consultato il 21 gennaio 2013.
- ^ a b Open Source Initiative OSI - The BSD License:Licensing, su opensource.org, Open Source Initiative. URL consultato il 21 gennaio 2013 (archiviato il 29 novembre 2009).
- ^ NetBSD Licensing and Redistribution, su netbsd.org, The NetBSD Foundation. URL consultato il 21 gennaio 2013.
- ^ Chapter 30. Firewalls, su freebsd.org. URL consultato il 20 giugno 2018.
- ^ (EN) FreeBSD 11.0-RELEASE Release Notes, su The FreeBSD Project. URL consultato il 17 ottobre 2022.
- ^ Pawel Jakub Dawidek, ZFS committed to the FreeBSD base., su lists.freebsd.org, Fri Apr 6 02:58:34 UTC 2007. URL consultato il 20 giugno 2018.
- ^ 13.9. Access Control Lists, su freebsd.org. URL consultato il 20 giugno 2018.
- ^ (EN) Configuring the FreeBSD Kernel, su freebsd.org. URL consultato il 25 novembre 2016.
- ^ (EN) What does the 'k' in "kFreeBSD" stand for?, su wiki.debian.org. URL consultato il 25 novembre 2016.
- ^ Linux® emulation in FreeBSD, su freebsd.org. URL consultato il 13 ottobre 2017.
- ^ (EN) BSDeviant, su bsdeviant.unixpunx.org (archiviato dall'url originale il 21 febbraio 2006).
Bibliografia
[modifica | modifica wikitesto]- (EN) FreeBSD Handbook, su docs.freebsd.org.
- Manuale di FreeBSD, su docs.freebsd.org.
Voci correlate
[modifica | modifica wikitesto]Altri progetti
[modifica | modifica wikitesto]Wikimedia Commons contiene immagini o altri file su FreeBSD
Wikinotizie contiene l'articolo FreeBSD 9 dedicato alla memoria di Dennis Ritchie, 13 gennaio 2012
Collegamenti esterni
[modifica | modifica wikitesto]- (EN) Sito ufficiale, su freebsd.org.
- (EN) Opere riguardanti FreeBSD, su Open Library, Internet Archive.
- Repository sorgenti di FreeBSD, su cgit.freebsd.org.
- (EN) Sito di segnalazione bug, su bugs.freebsd.org.
- (EN) Denis Howe, FreeBSD, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL
- FreshPorts - The Place For Ports, su freshports.org.
- FreeSBIE (Live CD)
- The FreeBSD Ports Archive, su freebsdsoftware.org.
- Gruppo Utenti FreeBSD Italia, su gufi.org.
Controllo di autorità | VIAF (EN) 184084280 · LCCN (EN) no96008251 · GND (DE) 4529581-5 · J9U (EN, HE) 987007365079205171 |
---|