NetBSD

NetBSDNetBSD è una versione Open Source e liberamente redistribuibile del sistema operativo BSD, derivato da Unix. E’ stato il secondo discendente BSD open source ad essere rilasciato ufficialmente, dopo 386BSD, ed è attivamente sviluppato. E’ noto per la sua portabilità e per la qualità del design e della implementazione, spesso utilizzato in sistemi embedded e come punto di partenza per il porting di altri sistemi operativi a nuove piattaforme hardware.

La bandiera logo di NetBSD, disegnata da Grant Bissett, è stata introdotta nel 2004 ed è una astrazione del logo precedente, disegnato da Shawn Mueller nel 1994. Questo era basato sulla famosa fotografia della Seconda Guerra Mondiale “Alzando la bandiera su Iwo Jima” che qualcuno percepiva come culturalmente indelicata e inappropriata per un progetto internazionale.

Storia

NetBSD, come il suo progetto fratello FreeBSD, fu derivato dalla release originale 4.3BSD della Università della California Berkeley tramite Networking/2 e 386BSD. Il progetto cominciò come risultato della frustrazione all’interno della comunità di sviluppatori 386BSD per il passo e la direzione dello sviluppo del sistema operativo. I quattro fondatori del progetto NetBSD, Chris Demetriou, Theo de Raadt, Adam Glass e Charles Hannum, sentirono che un modello di sviluppo più aperto avrebbe apportato benefici al progetto; un modello incentrato su codice corretto, pulito e portabile. Il loro obiettivo era produrre un sistema operativo basato su BSD che fosse unificato, multipiattaforma e di alta qualità.

A causa dell’importanza delle reti come Internet nella natura collaborativa e distribuita del suo sviluppo, de Raadt suggerì il nome NetBSD, che fu prontamente accettato dagli altri fondatori.

Il repository del codice sorgente NetBSD fu creato il 21 marzo 1993, e la prima release ufficiale, NetBSD 0.8, fu fatta nell’aprile 1993. Era derivata da 386BSD 0.1 più il patchkit 0.2.2 non ufficiale, con numerosi programmi dalla Net/2 che mancavano in 386BSD, e vari altri miglioramenti.

Nell’agosto dello stesso anno fu rilasciato NetBSD 0.9, che conteneva molti miglioramenti e bug fix. Era ancora una release per la sola piattaforma PC, anche se erano già in corso i lavori per aggiungere il supporto per altre architetture.

NetBSD 1.0 fu rilasciato nell’ottobre 1994. Fu la prima release multipiattaforma, e supportava PC, HP 9000 serie 300, Amiga, Macintosh 68k, serie Sun-4c e PC532. Inoltre in questa release il codice derivato da Net/2 legalmente contestabile fu rimpiazzato con codice equivalente da 4.4BSD-Lite, in accordo con la sentenza del caso USL vs BSDi.

Nel 1994 per ragioni discutibili, uno dei fondatori, Theo de Raadt, fu allontanato dal progetto. Successivamente egli fondò un nuovo progetto, OpenBSD, da una versione fork di NetBSD 1.0 verso la fine del 1995.

Le release di NetBSD 1.x continuarono ad intervalli grossomodo annuali, inframezzate da release minor “patch” . NetBSD 1.3 introdusse la collezione di pacchetti pkgsrc nel 1998. Nel 1999 NetBSD 1.4 fu rilasciato e supportava 16 diverse piattaforme nella versione binaria, e molte altre nel codice sorgente.

Nel dicembre 2004 fu rilasciato NetBSD 2.0. Il cambio di numero principale di versione esprimeva l’introduzione di una implementazione nativa dei thread per tutte le piattaforme (basata sul modello Scheduler Activations) e il supporto SMP su diverse architetture CPU. 48 piattaforme erano supportate nella release binaria della 2.0, con altre 6 solo nel codice sorgente.

Dalla release 2.0 in poi, ogni release maggiore di NetBSD corrisponde a un incremento del numero di versione principale, ossia le release principali successive alla 2.0 sono 3.0, 4.0, ecc. Le release minori precedenti vengono adesso divise in release di mantenimento “stable” numerate come x.y, e release di security/bug fix numerate come x.y.z.

La versione attuale di NetBSD è la 4.0 rilasciata il 19 dicembre 2007.

Sicurezza

NetBSD offre numerose features nell’area sicurezza. Il Kernel Authorization Framework (Kauth) è un sottosistema che gestisce tutte le richieste di autorizzazione dentro al kernel, ed è usato nella politica di sicurezza dell’intero sistema. Consente l’inserimento di moduli esterni nel processo di autorizzazione. NetBSD inoltre incorpora features di mitigazione degli exploit, MPROTECT e Segvguard dal progetto PaX, e le estensioni GCC Stack Smashing Protection (SSP, anche nota come ProPolice). Gli eseguibili verificati (Verified Executabiles, VeriExec) sono un sottosistema di integrità file a livello kernel presente in NetBSD. Consente agli utenti di impostare le fingerprint digitali (hash) dei file nel sistema per la verifica da parte del Veriexec, e previene l’esecuzione dei file in caso di manomissione. E’ possibile per esempio autorizzare il Perl ad eseguire solo script corrispondenti alle fingerprint. Il Cryptografic Device driver (CGD) fornisce funzionalità che consentono l’utilizzo di dischi o partizioni (compresi CD e DVD) per lo storage criptato.

Portabilità

NetBSD è stato portato ad un vasto numero di archittetture 32 e 64 bit, dai minicomputer VAX ai Pocket PC PDA. Il suo motto è “ovviamente ci gira NetBSD”. A far data dal 2007, NetBSD supporta 54+ piattaforme hardware (comprendenti circa 17 architetture cpu diverse). Nonostante il kernel Linux 2.6 includa supporto per un numero maggiore di architetture processore, NetBSD supporta più piattaforme di qualsiasi singola distribuzione Linux. Il kernel e la userland di queste piattaforme sono tutti compilati da un albero sorgente centrale unificato gestito da CVS.

A causa della gestione del codice sorgente centralizzata, e del design portabile, l’aggiunta di feature (che non siano specifiche di un certo hardware) può beneficiare tutte le piattaforme immediatamente, richiedendo pochissimo o nessun re-porting.

La portabilità di NetBSD è dovuta ad una quantità di interfacce per il bus space e il DMA. Usando questo strato di portabilità, i driver di periferica sono in qualche modo isolati dalla piattaforma hardware. Ciò consente di utilizzare un singolo driver su numerose piattaforme nascondendo i dettagli di come esattamente il driver parla con l’hardware e riduce enormemente la quantità di lavoro necessario per portarlo ad una nuova architettura.

Questo rende possibile, ad esempio, ad un driver per una specifica scheda PCI di funzionare indipendentemente dal fatto che la scheda sia inserita in uno slot PCI su architettura IA32, oppure Alpha, PowerPC, SPARC o qualsiasi altra piattaforma con bus PCI. Inoltre, un singolo driver per una singola periferica può funzionare attraverso bus diversi (ISA, PCI, PCMCIA, ecc.).

Al confronto, il codice dei driver di periferica Linux spesso necessita di essere riscritto per ogni nuova architettura. Come conseguenza, nei recenti sforzi di porting compiuti dagli sviluppatori Linux e NetBSD, NetBSD ha richiesto molto meno tempo per essere portato sul nuovo hardware.

Questa indipendenza dalla piattaforma aiuta lo sviluppo dei sistemi embedded, specialmente dopo NetBSD 1.6, quando l’intera catena di tool di sviluppo (compilatori, assembler, linker, ecc.) ha iniziato a supportare a pieno la cross-compilazione. La struttura di cross-compilazione di NetBSD consente di compilare un intero sistema NetBSD per una architettura su un altro sistema di architettura diversa (spesso più veloce o con maggiori risorse hardware), persino su un diverso sistema operativo da quando la struttura supporta la maggior parte dei sistemi compatibili POSIX.

Il sistema pkgsrc

NetBSD offre pkgsrc (abbreviazione per “package source”), una struttura per la compilazione di pacchetti applicativi software di terze parti che si installeranno quasi “automagicamente”. La raccolta pkgsrc contiene più di 6400 pacchetti al gennaio 2007. La compilazione di pacchetti come GNOME, KDE, Apache o Perl avviene semplicemente digitando “make install” nella directory appropriata. Questo causerà il prelievo del codice sorgente, la scompattazione, l’applicazione di eventuali patch, la compilazione e l’installazione del pacchetto in modo che possa essere rimosso in seguito. Un’alternativa alla compilazione dai sorgenti è l’utilizzo di pacchetti binari precompilati. In entrambi i casi, qualsiasi dipendenza/prerequisito sarà installato automaticamente dal sistema dei pacchetti, senza necessità di intervento manuale.

Seguendo la religione della portabilità, pkgsrc è stato reso portabile non solo attraverso le piattaforme che eseguono NetBSD, ma anche – con l’aiuto del sistema bootstrap basato su autoconf – a numerosi altri sistemi operativi Unix-like, come GNU/Linux, le altre varianti BSD, Solaris, Darwin/Mac OS X, IRIX, Interix e altri. pkgsrc è stato anche adottato come sistema di pacchetti ufficiale di DragonFlyBSD.

Licenza

Tutto il kernel NetBSD e la maggior parte del codice sorgente della userland è rilasciato sotto i termini della licenza BSD (varianti a quattro, tre e due clausole). Ciò essenzialmente consente a chiunque di usarli, modificarli, distribuirli o venderli come vogliono, a patto di non rimuovere gli avvisi di copyright e il testo di licenza (le varianti a quattro clausole includono anche condizioni relative al materiale pubblicitario). Per ciò, lo sviluppo di prodotti basati su NetBSD è possibile senza dover rendere pubbliche le modifiche fatte al codice. In contrasto, la GPL stabilisce che le modifiche al codice sorgente devono essere rilasciate al pubblico quando vengono rilasciati prodotti derivanti dalle modifiche stesse.

NetBSD include anche gli strumenti di sviluppo GNU ed altri pacchetti, che sono coperti dalla GPL e da altre licenze open source.

La NetBSD Foundation è l’entità legale che detiene i marchi e le proprietà intellettuali associati a NetBSD, ed ha ottenuto lo status di organizzazione non-profit rispetto alla tassazione americana. I membri dell’associazione sono gli sviluppatori NetBSD che hanno accesso in modifica al CVS dei sorgenti. Esiste un consiglio di direzione, eletto per due anni dal voto dei membri.

Fonte: Wikipedia

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.