Perché NetBSD

Da Wiki di NetBSD Italia.

Molto spesso nuovi utenti, soprattutto utenti di sistemi GNU/Linux chiedono perché provare ed utilizzare NetBSD e/o pkgsrc e non altri sistemi operativi Unix-like.

Questo documento cercherà di descrivere le numerose qualità di NetBSD e rispondere a questo tipo di domande, focalizzandosi sulle differenze (o pregi per gli utenti NetBSD) rispetto agli altri sistemi Unix-like.

Indice

NetBSD

Pulito, portabile, stabile e sicuro

I quattro aggettivi che descrivono al meglio NetBSD sono:

Pulito

L'attenzione al buon design ed alla qualità del codice in NetBSD è di fondamentale importanza, è anche uno tra i motivi per cui anche progetti commerciali importanti come QNX e Android, giusto per citarne alcuni.

Citando un motto di NetBSD: Non funziona se non è corretto.

Portabile

Al momento della scrittura di questo documento NetBSD gira su ben 59 diverse architetture.

La portabilità su NetBSD è forse l'elemento che lo distingue maggiormente dagli altri sistemi operativi, e per raggiungere questo scopo NetBSD utilizza livelli di astrazione e framework in modo tale da semplificare nuovi porting.

Non a caso il motto di NetBSD è: Certamente ci gira NetBSD.

Stabile

Il kernel NetBSD ha alle spalle decenni e decenni di sviluppo, basta pensare che la prima versione di BSD è apparsa nel 1977, mentre la prima versione di NetBSD nel 1993.

Tutte le modifiche inoltre, vengono accettate e discusse solitamente da più sviluppatori, e modifiche importanti devono essere discusse con il team core@.

Inoltre le versioni formali vengono rilasciate solo quando sono pronte e ben testate.

Sicuro

La sicurezza in NetBSD è un obiettivo fondamentale, grazie alla sua pulizia, semplicità e minimalismo si evitano bug.

Nel sistema operativo inoltre sono presenti pseudo-device come ad esempio cgd(4), che permette di criptare le partizioni, ipf(4) e pf(4) (quest'ultimo importato da OpenBSD) come firewall, veriexec(4) per il controllo dell'integrità dei file, etc.

Anche mostrare agli utenti solo le informazioni riguardanti loro (ad esempio mostrare su ps(1) o top(1) solo i processi di quell'utente) è semplicissimo:

# sysctl -w security.curtain=1

Per maggiori informazioni riguardo alla sicurezza: security(8).

Comunità

NetBSD, da buon progetto libero ed aperto, è utilizzato e sviluppato da persone provenienti da tutto il mondo.

Negli anni si sono sviluppate comunità amichevoli e attive sia internazionali, nazionali e anche locali.

Ci sono canali IRC dedicati completamente a NetBSD e/o pkgsrc.

Ci sono anche diversi wiki, tra cui NetBSD Community Wiki ricchi di informazioni utili o più accessibili o approfondite delle man page.

Oltre a questi mezzi uno tra i mezzi più utilizzati per mettersi in contatto con la comunità sono le mailing list.

Anche collaborare a NetBSD e/o pkgsrc è semplice, grazie alla potenzialità degli PR o a progetti come pkgsrc-wip. Un altro modo per entrare in stretto contatto con gli sviluppatori è partecipare agli hackathon eventi dedicati a correggere bug che si svolgono solitamente su #NetBSD-code@Freenode.

Documentazione

L'intero sistema, dai tool più basilari, le librerie di sistema, i device driver, i file di configurazione agli interni del kernel sono ben documentati in man page.

Oltre alle man page ci sono guide complete ai vari componenti del sistema operativo NetBSD che coprono i più diversi argomenti capaci di guidare il cammino di apprendimento dell'utente:

sysinst(8)

L'installazione di NetBSD è semplice e rapida grazie a sysinst(8) il programma TUI automaticamente avviato al boot dal dispositivo di installazione per installare NetBSD.

Mentre alcuni sistemi Unix-like non forniscono nessun tipo di interfaccia per l'installazione e altri sistemi, specialmente certe distribuzioni GNU/Linux forniscono GUI pesanti e che rendono il processo di installazione lungo, NetBSD fornisce sysinst(8), ottimo compromesso tra semplicità, leggerezza e rapidità di installazione.

L'installazione del sistema base infatti impiega soltanto pochi minuti (meno di 10 minuti) anche su macchine considerate obsolete da altri sistemi operativi.

rc.conf(5)

A differenza di altri sistemi Unix-like per la configurazione di base (servizi, rete, ecc.) c'è un singolo e semplice file di configurazione: /etc/rc.conf.

La sua sintassi è semplicissima, per un servizio (sshd(8)) ad esempio:

sshd=YES

Anche configurare un indirizzo IP statico o l'hostname è semplicissimo:

defaultroute=192.168.1.1
ifconfig_lii0="inet 192.168.1.15 netmask 255.255.255.0"
hostname=jones

Per chi non ama questo approccio monofile ovviamente NetBSD dà la libertà all'utente di configurare ciò in più file, per l'esempio precedente:

# echo "192.168.1.1" > /etc/mygate
# echo "inet 192.168.1.15 netmask 255.255.255.0" > /etc/ifconfig.lii0
# echo "jones" > /etc/myname

Insomma: NetBSD: a te la scelta.

pkgsrc

Portabilità

Uno tra gli aspetti ereditati da NetBSD è la portabilità, non solo pkgsrc gira su tutti i port port NetBSD ma anche su molti altri sistemi operativi Unix-like.

In questo modo è possibile pacchettizzare una volta sola ed usare ovunque, l'unico vincolo a cui si è legati è la portabilità del software del pacchetto stesso.

Non a caso pkgsrc è il sistema dei pacchetti ufficiale anche di DragonFlyBSD.

audit-packages(1)

Tutti i pacchetti in pkgsrc sono costantemente monitorati dal team pkgsrc-security@, se presentano vulnerabilità non verrannò installati come di consueto, ma verrà invece stampato un messaggio di errore che avverte l'utente della vulnerabilità presente nel pacchetto con un link contenente tutte le informazioni (per maggiore informazione su come installare pacchetti vulnerabili: ALLOW_VULNERABLE_PACKAGES).

I programmi audit-packages(1) e download-vulnerability-list(1) provvedono ciò:

# download-vulnerability-list
[...]
$ audit-packages
Package mutt-1.4.2.3nb2 has a signature-spoofing vulnerability, see: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-1268
Package imlib2-1.4.0nb2 has a unspecified vulnerability, see: http://secunia.com/advisories/32354/
Package png-1.2.32beta01 has a denial-of-service vulnerability, see: http://sourceforge.net/project/shownotes.php?release_id=635463&group_id=5624

Curva di apprendimento

La filosofia Unix tutto è un file applicata ad un sistema dei pacchetti risulta vincente: per installare un pacchetto dai sorgenti basta sapersi muovere tra le directory e digitare:

# make install

Allo stesso tempo in un tempo molto breve si riescono a scrivere shell script da un paio di righe capaci di cercare pacchetti tramite un espressione regolare:

#!/bin/sh

PKGSRCDIR=/usr/pkgsrc

if [ -z $1 ]; then
	echo "usage: $0 regexp"
	exit 1
fi

for category in $(find ${PKGSRCDIR} -type d -maxdepth 1 ); do
	grep -s -e $1 ${category}/*/DESCR
done

Diventare MAINTAINER ed iniziare a mantenere e creare pacchetti è semplice, tutto è ben documentato su The pkgsrc guide e grazie a pkgsrc-wip tutti possono contribuire alla collezione dei pacchetti di NetBSD.

Strumenti personali