\articolo{NetBSD: un sistema UNIX multi-piattaforma}{Bernardo Innocenti}
\index{Innocenti!articolo di}

\paragrafo {Introduzione}

\A \`e un computer estremamente versatile, sopratutto grazie al suo
sistema operativo unico.  Molti sanno che con \A \`e possibile emulare
molti altri computer, primi tra tutti i Macintosh ed i PC, accedendo
cos\`{\i} a tutto il software disponibile per queste piattaforme.
Tuttavia, \`e anche possibile {\em usare} (non {\em emulare}) un sistema
operativo del tutto diverso da quello nativo. Questo articolo descrive
NetBSD\index{NetBSD}, un sistema UNIX che per alcuni utenti potrebbe
rappresentare una valida alternativa ad AmigaOS.

UNIX\index{Unix} \`e per molti aspetti il sistema operativo pi\`u singolare che
esista. Per prima cosa, \`e di gran lunga il pi\`u vecchio tra quelli che
vengono tuttora utilizzati e sviluppati attivamente.  Eppure, nonostante
questa apparente vecchiaia, \`e senz'altro il pi\`u versatile e innovativo
dei sistemi operativi moderni.

Il successo di UNIX \`e stato determinato da un insieme di fattori, primo
tra tutti l'uso del linguaggio C, che venne sviluppato da Brian Kerningham
e Dennis Ritchie appositamente per questo scopo. UNIX \`e da sempre un
sistema operativo aperto, facilmente portabile e totalmente slegato
dall'architettura dell'hardware sottostante, ed \`e proprio per questi
motivi che in venti lunghi anni UNIX si \`e potuto evolvere senza alcun
limite imposto dalle esigenze di compatibilit\`a verso il basso.

Oggi sono molti gli ambienti che offrono un multitasking reale, ma
pochi sono quelli che supportano la multiutenza e un'adeguata protezione
della memoria e nessuno di questi, eccetto UNIX, viene distribuitto
gratuitamente con i sorgenti completi del kernel e di tutte le utility di
sistema.

Quando UNIX venne ideato, non esistevano ancora i terminali CRT e il
concetto di personal computer era un sogno cos\`{\i} lontano che neppure
la letteratura fantascientifica lo prendeva in considerazione.

Per questo motivo UNIX conserva ancora oggi alcune peculiarit\`a che sono
tipiche di un sistema che veniva usato tramite una telescrivente. Gi\`a
allora molti utenti potevano collegarsi contemporaneamente a un solo
mainframe e ognuno poteva lanciare pi\`u processi contemporanei per
minimizzare il tempo di collegamento all'host.

L'uso di UNIX con le telescriventi spiega perch\'e molti dei comandi
storici di UNIX generano un output cos\`{\i} compatto (talvolta anche
piuttosto criptico), in modo da non sprecare troppa carta.  La console di
sistema ed i terminali si chiamano ancora ``tty", abbreviazione di
teletype, e supportano vari parametri di configurazione, tra cui il
baudrate del collegamento seriale. Un altro fatto curioso che vale la pena
di citare \`e che le man page formattate per la visualizzazione sui
terminali utilizzano tuttora un sistema molto singolare per evidenziare in
neretto i titoli: per fare un esempio, la parola {\c{SYNOPSIS}} \`e
scritta {\c{S\^{ }HSY\^{ }HYN\^{ }HNO\^{ }HOP\^{ }HPS\^{ }HSI\^{ }HIS\^{ }HS}}, dove
{\c{\^{}H}} \`e il carattere BACKSPACE. In questo modo, la
testina di una stampante torna indietro e riscrive due volte ogni
carattere, producendo cos\`{\i} un nero pi\`u marcato!

In un'epoca in cui i produttori di software si sforzano solamente di
creare interfacce utente sempre pi\`u belle e colorate e di renderne
l'utilizzo sempre pi\`u intuitivo anche per chi riesce a malapena ad usare
il mouse, UNIX sembra essere totalmente in controtendenza. Eppure gran parte
dei concetti pi\`u innovativi dell'informatica moderna sono nati con UNIX
e solo in seguito sono stati ``presi in prestito" o portati anche su altri
sistemi operativi. Per fare solo un piccolo elenco dei pi\`u celebri
basta ricordare il multitasking, la multiutenza, la shell, il filesystem
gerarchico, l'e-mail, il sistema UUCP\index{UUCP}, l'utility make, gli archiviatori,
il protocollo TCP/IP\index{TCP/IP} (e quindi Internet), X Window, il software GNU (e
quindi anche il gcc), il sistema di impaginazione {\TeX}, il World Wide
Web (ed in seguito Java).

In teoria con un minimo sforzo \`e possibile portare un ambiente UNIX su
una nuova architettura hardware. \`E sufficiente riscrivere o modificare
solo le parti di codice che interagiscono a basso livello con l'hardware e
alcuni driver dei dispositivi di I/O. Per questo motivo UNIX esiste in una
variet\`a incredibile di distribuzioni diverse, ognuna delle quali a sua
volta pu\`o supportare molte architetture.

UNIX \`e oggi il sistema operativo di elezione in molti ambienti dove la
compatibilit\`a MS-DOS non \`e n\'e necessaria, n\'e desiderabile. Le
universit\`a, gli istituti di ricerca e gli enti governativi americani
costituiscono gran parte dell'utenza UNIX.  Anche i sistemi operativi
usati sulle workstation Sun, SGI e HP sono in realt\`a degli UNIX
proprietari.

Oggi i personal computer, \A incluso, sono divenuti abbastanza potenti
da poter utilizzare un sistema operativo delle dimensioni di UNIX.  La
potenza, la flessibilit\`a e la compatibilit\`a di UNIX si paga con un uso
abnorme di CPU, RAM e memoria di massa.  Il file {\c{docs/INSTALL.amiga}}
fornisce un'indicazione dei requisiti minimi necessari per utilizzare con
soddisfazione OpenBSD\index{OpenBSD} su \A\footnote{In realt\`a i requisiti riportati
nel file {\cf{INSTALL.amiga}} sono a mio parere troppo ottimistici. Per
utilizzare comodamente OpenBSD consiglio vivamente un \A con almeno un
68030 ed almeno 8MB di memoria.  Lo spazio richiesto su hard disk dipende
essenzialmente da quali applicazioni volete installare, tuttavia un
sistema tipico con X11 e tutti i file necessari per poter ricompilare il
kernel occupa oltre 300MB. Inoltre, il file {\cf{INSTALL.amiga}} non cita
il 68060 tra le CPU supportate, che invece \`e utilizzabile senza
problemi.}.

\paragrafo {NetBSD e OpenBSD}

BSD\index{BSD} \`e l'acronimo di Berkeley Standard Distribution. L'universit\`a di
Berkeley, in California, sviluppa ormai da molti anni un ambiente
UNIX-like che si contrappone allo UNIX AT\&T\footnote{Le prime versioni di
UNIX vennero sviluppate appunto negli AT\&T Bell Laboratiries.  In
realt\`a, UNIX \`e un marchio registrato di AT\&T, perci\`o tutti gli altri
sistemi operativi derivati da UNIX, siano essi commerciali o liberamente
distribuibili, non possono fare uso della parola UNIX.  Per questo motivo
molti OS UNIX-like ricorrono alla forma censurata `UN*X', e spesso hanno
dei nomi che {\em suonano} come `UNIX', per esempio HP-UX, Irix, Amix, Ultrix,
Linux, \ldots}, meglio conosciuto con il nome System V Release 4 (SVR4).  BSD e
SVR4 sono i due rami principali dell'evoluzione di UNIX e differiscono in
alcuni aspetti secondari, come ad esempio la struttura del filesystem, i
nomi e le opzioni di alcuni comandi di sistema e anche in alcune
caratteristiche interne del kernel. La compatibilit\`a pressoch\'e totale
a livello di sorgente esiste comunque, in parte perch\'e la maggior parte
delle applicazioni viene provata su entrambi, ma sopratutto perch\'e ogni
volta che viene aggiunta una nuova caratteristica nel SVR4 o nel BSD,
quasi subito viene implementata anche sull'altro sistema.

NetBSD deriva dal BSD 4.4 Lite, ed ha due peculiarit\`a interessanti. La
prima \`e che, come suggerisce il nome, \`e stato sviluppato coordinando
il lavoro di decine di programmatori attraverso Internet.  La seconda, e
forse la pi\`u importante, \`e il supporto di un gran numero di
architetture, tra cui \A, Archimedes, Atari, HP-300, HP-PA, IBM PPC,
Mac 68k, PC-IBM, SGI, Sun3 e Sun Sparc. In futuro \`e previsto il supporto
per molte altre architetture.

OpenBSD \`e un cugino di NetBSD che viene sviluppato da un team di
programmatori che per ragioni prettamente `religiose' si \`e distaccato
dal gruppo originario.  Entro pochi giorni da ogni nuova release di
NetBSD, i sorgenti del kernel e delle utility di sistema vengono prelevati
dal team che sviluppa OpenBSD e modificati per aggiungervi una grande
quantit\`a di features, alcune delle quali provengono da altri sistemi
operativi gratuiti. Diversamente da NetBSD, OpenBSD non \`e soggetto alle
restrizioni sull'esportazione di software che utilizza tecniche di
crittografia ``forte", perch\'e il gruppo che lo distribuisce si trova in
Canada anzich\'e negli Stati Uniti.  Per questo motivo, il package di
utilities ``security" di NetBSD \`e stato incluso direttamente nella
distribuzione standard di OpenBSD.

OpenBSD \`e perci\`o a tutti gli effetti un NetBSD con molte cose in pi\`u.
Ulteriori dettagli sulla storia degli UNIX derivati dal BSD sono contenuti
nel file {\c {complete.faq}}, che troverete nel CD.

\paragrafo {Differenze ed analogie con AmigaOS}

UNIX ha da sempre la fama di essere un sistema poco user friendly, e non
si pu\`o negare che sia vero.  Un utente \A che desidera imparare ad
usare UNIX parte senz'altro avvantaggiato rispetto ad un utente Macintosh,
perch\'e AmigaOS ha molti punti in comune con UNIX. L'ostacolo pi\`u
grande da superare quando si inizia ad usare UNIX \`e convincersi che
prima di fare qualunque cosa \`e necessario leggere la documentazione.
L'utente \A medio scompatta un nuovo programma e lo lancia senza
neanche leggere i README che l'accompagnano.  Su UNIX questo atteggiamento
porta inesorabilmente a un totale insuccesso e grande frustrazione. Di
norma, prima di ottenere una discreta padronanza di UNIX, si devono
leggere tonnellate di documentazione.  Un buon testo su UNIX \`e un ottimo
punto da cui partire, perch\'e la documentazione disponibile on-line (man
page) presume che siate gi\`a esperti e comunque prima di poterla
leggere dovete gi\`a essere in grado di installare e configurare il
sistema. La conoscenza del C pu\`o risultare molto utile, ma non \`e
indispensabile. \`E possibile compilare un'applicazione scritta in C senza
per questo dover conoscere il linguaggio, ma in certi casi pu\`o capitare
di dover modificare qualche sorgente per adattarlo al proprio sistema.

Dal momento che mi rivolgo ad un pubblico costituito essenzialmente da
sviluppatori, non insister\`o oltre nel tentativo di spaventarvi.  UNIX
non \`e n\'e facile, n\'e difficile.  \`E solo diverso da AmigaOS, da
Windows e da MacOS. L'importante \`e non rinunciare subito dopo aver visto
che il comando dir non funziona come pensavate.

A questo punto sar\`a utile descrivere alcuni dei vantaggi di OpenBSD che
compensano il tempo e le energie impiegato ad apprenderne il funzionamento.

La multiutenza \`e forse la caratteristica pi\`u conosciuta di UNIX.
Pi\`u utenti possono accedere contemporaneamente al sistema, condividerne
le risorse.  Il sistema si occupa di garantire che nessun utente (eccetto
il system administrator) possa interferire con l'attivit\`a degli altri
utenti. Il filesystem impedisce che un utente non autorizzato possa
leggere o scrivere i file di un altro utente\footnote{Il funzionamento \`e
analogo a quello del MultiUserFileSystem per \A.}, ed il kernel
utilizza la MMU per impedire ai processi di accedere alla memoria non
allocata. \`E perfino possibile permettere agli utenti di compilare ed
usare qualsiasi applicazione, perch\'e non esiste alcun modo per aggirare
le protezioni del kernel\footnote{A meno di eventuali buchi di sicurezza
non ancora individuati {\p{:-)}}}. Se un processo tenta di accedere ad una
locazione di memoria non valida, il kernel lo interrompe immediatamente e
libera tutte le risorse che ha allocato (resource tracking).

Il kernel gestisce anche la memoria virtuale in modo completamente
trasparente alle applicazioni. Una o pi\`u partizioni possono essere
destinate a contenere le pagine di memoria che non possono essere
mantenute nella memoria fisica, ed il kernel si occupa di ricaricarle
quando un processo tenta nuovamente di accedervi.

Il TCP/IP \`e supportato direttamente dal kernel e molti programmi di
sistema lo utilizzano anche per le comunicazioni locali tra i processi.
Dal momento che AmiTCP \`e un porting del TCP/IP Berkley, scoprirete che
la maggior parte delle utility e dei file di configurazione che riguardano
la rete sono identici a quelli per \A.

Molti pacchetti GNU sono integrati nella distribuzione standard BSD, e
molti altri possono essere compilati ed installati con uno sforzo minimo.
Se su \A utilizzate abitualmente alcuni programmi GNU, potrete
continuare ad utilizzarli su UNIX esattamente nello stesso modo. Lo
stesso vale per molti programmi per \A che sono stati portati da UNIX,
tra cui anche Executive, SysLog, vi, csh e molti altri.

\paragrafo{Installazione di OpenBSD-Amiga}

La distribuzione fornita su CD \`e aggiornata al 4 Ottobre '96, ma \`e
probabile che nel momento in cui state leggendo sia gi\`a disponibile una
versione alpha della release successiva.

Il file {\c{docs/INSTALL.amiga}} mostra come installare OpenBSD sul
vostro computer. Conviene stamparlo\footnote{Durante l'installazione non
potrete leggere il file se non lo avete stampato su carta, a meno che non
abbiate un altro computer a portata di mano.} e leggerlo per intero prima
di iniziare ad eseguire le operazioni.

La procedura di installazione \`e tutt'altro che semplice, ma potete
considerarla come una specie di ``test di ammissione" all'uso di OpenBSD.
In altre parole, chi riesce ad installare e configurare il sistema, molto
probabilmente sar\`a anche in grado di usarlo.

Prima di iniziare a preparare il vostro hard disk, potete provare a
caricare il kernel per assicurarvi che funzioni correttamente sul vostro
computer:

\begin{smallcodestyle}
      loadbsd -b <nome del kernel>
\end{smallcodestyle}

L'\A dovrebbe resettarsi e subito dopo vedrete apparire la
console di OpenBSD.  La sequenza di bootstrap del kernel
dovrebbe proseguire con la configurazione di tutte le periferiche
supportate.  A questo punto OpenBSD chieder\`a di scegliere la
partizione da cui effettuare il boot, ma dal momento che non
avete ancora preparato il sistema, resettate semplicemente il
computer.

Se invece il kernel dovesse bloccarsi, leggete l'help del comando
loadbsd (opzione -h) e riprovate di nuovo.  Se non riuscite in
alcun modo ad avviare OpenBSD, provate a leggere le FAQ oppure,
come ultima speranza, chiedete aiuto nel newsgroup comp.unix.amiga.

Procedete seguendo le istruzioni ed installate il vostro sistema.
Dal momento che gli archivi di \mbox{Open\-BSD} si trovano sul CD di IPISA,
\`e probabile che vorrete utilizzarli direttamente senza doverli
prima copiare su una partizione \A.  Per montare il CD nella
directory {\c {/mnt/cdrom/}} scrivete:

\begin{smallcodestyle}
      mkdir /mnt/cdrom
      mount_cd9660 -o ro /dev/cd0a /mnt/cdrom
\end{smallcodestyle}

\noindent e quindi procedete con l'installazione come se si trattasse di una
normale partizione \A.

Subito dopo l'installazione, potrete iniziare ad usare OpenBSD.
Per liberare un po' di spazio in {\c{/usr}} conviene eliminare tutte le
manpages che non riguardano l'architettura \A\footnote{\`E interessante
analizzare il funzionamento di questa linea di comando: `find' cerca in
{\cf{/usr/man/}} tutte le directory (type -d), e ne stampa in output il
path completo.  `grep' legge l'output di `find' e lo copia in output,
escludendo (-v) tutte le linee che contengono la parola ``amiga". `awk'
esegue il programma sulla linea di comando che permette ad aggiungere ``rm
-r'' davanti ad ogni linea.  Infine, `sh -s' esegue i comandi che riceve in
input e rimuove in questo modo le directory che volevamo eliminare. Fate
riferimento alle manpages di `find', `grep', `awk' e `find' per ottenere
ulteriori dettagli.}:

\begin{smallcodestyle}
      find /usr/man/ -type d | grep -v -i amiga |
           awk '{print "rm -r" $0}' | sh
\end{smallcodestyle}


\paragrafo {Installare altre applicazioni}

La directory {\c {contrib/}} contiene un piccolo repertorio di
``must-have" da installare nel vostro sistema.  Alcune di queste sono
gi\`a state compilate per NetBSD-Amiga 1.1, altre devono essere compilate
appositamente sul vostro sistema.

Per visualizzare il contenuto di un archivio potete scrivere:

\begin{smallcodestyle}
      zcat foobar42b.tar.gz | tar tvpf -
       => foobar-4.2beta/README
       => foobar-4.2beta/INSTALL
       => foobar-4.2beta/Makefile
       => foobar-4.2beta/foobar.c
       => foobar-4.2beta/foobar.h
       => foobar-4.2beta/install/install.sh
       => ...
\end{smallcodestyle}

% 1
\noindent oppure, dal momento che il comando tar di NetBSD supporta l'opzione `z',
\`e possibile usare questa forma abbreviata:

\begin{smallcodestyle}
      tar tvpzf foobar.tar.gz
\end{smallcodestyle}

Prima di estrarre l'archivio vorrete probabilmente entrare nella
directory appropriata.  Per esempio:

\begin{smallcodestyle}
      cd /local/src/
      tar xvpzf foobar.tar.gz
      cd foobar-4.2beta/
\end{smallcodestyle}

A questo punto \`e buona norma dare un'occhiata al file ``README" (oppure
``INSTALL"), che spiega le operazioni da compiere per installare il
programma.  Alcuni programmi hanno uno script di installazione che pu\`o
essere eseguito in questo modo:

\begin{smallcodestyle}
      cd install
      sh install.sh
\end{smallcodestyle}

Se invece dovete prima compilare i sorgenti, spesso baster\`a scrivere:

\begin{smallcodestyle}
      make all
\end{smallcodestyle}

Alcuni programmi invece utilizzano uno script che genera un Makefile
specifico per il vostro ambiente:

\begin{smallcodestyle}
      ./configure
      make
\end{smallcodestyle}

In ogni caso, attenetevi alle istruzioni contenute nei file ``INSTALL",
``README", etc.  Qualche volta potr\`a capitarvi di dover editare
manualmente il Makefile, un header, o un sorgente C per adattarlo al
vostro sistema, ma si tratta comunque di casi piuttosto rari.  Il software
GNU \`e quasi sempre autoconfigurante ed \`e difficile che si verifichino
problemi.

\paragrafo{X11}\index{X11}

X11 \`e un'abbreviazione per ``X Windowing System version 11".  Si pu\`o
chiamare anche ``X", ``X Window", ``X11R6" o ``X Windowing System", ma
{\bf non} ``X Windows"\footnote{Se malauguratamente dovesse scapparvi la
``s" finale in un articolo postato in un newsgroup di Usenet, potete
essere certi che qualcuno ve lo far\`a notare, pi\`u o meno educatamente.}.

Si tratta di un ambiente a finestre freeware basato su una architettura
client/server. Il server X \`e un programma che esegue i comandi ricevuti
dai client e ne mostra i risultati utilizzando un dispositivo di output
grafico (framebuffer device).  Il protocollo di comunicazione tra client e
server \`e indipendente dall'architettura hardware, dal sistema operativo
e dal mezzo di comunicazione utilizzato per collegare i client al server
X.  Difatti, oltre al caso pi\`u comune in cui i client ed il server
vengono eseguiti dalla stessa macchina e comunicano attraverso un pipe,
\`e anche possibile far eseguire un client X11 da una macchina e
utilizzarlo sul terminale X di un secondo computer, collegato in rete con
il primo.

Un client speciale, il window manager, consente di aggiungere alle
finestre dei ``bordi decorativi" che permettono all'utente di spostarle,
ridimensionarle e manipolarle come in tutti gli ambienti a finestre. Anche
il window manager comunica con il server come un normale client X11,
perci\`o potrebbe essere eseguito da un computer diverso da quello che
ospita il server, sebbene in molti casi si preferisce eseguirlo localmente
perch\'e altrimenti il calo di prestazioni sarebbe eccessivo.

Esistono molti window manager diversi, ognuno con capacit\`a e aspetto
differenti. Gli utenti \A potrebbero voler usare AmiWm, un window
manager con lo stesso look \& feel di Intuition, che riproduce
perfettamente le finestre, i menu, le icone e perfino gli schermi di
\A.  Si possono usare inoltre FVWM, un window manager che supporta
schermi virtuali e molte altre comode funzioni, FVWM-95, una versione di
FVWM che somiglia all'interfaccia utente di Windows 95, Bowman, un window
manager GNU che somiglia molto al NeXT, olwm, il window manager utilizzato
dalle workstations Sun, MWM, il window manager di Motif, GWM, un window
manager ``generico", il cui comportamento pu\`o essere modificato
dall'utente scrivendo delle procedure Lisp per ogni azione.

Per installare X11 su OpenBSD, fate riferimento al file README contenuto
nella directory X11.  Il server Xamiga supporta il chipset nativo e le
schede grafiche CyberVision, Picasso II, Piccolo, Piccolo SD64, Spectrum,
RetinaZ3, oMniBus, Domino e Merlin.  \`E anche possibile utilizzare {\em
contemporaneamente} due o pi\`u monitor, per esempio collegandone uno
all'uscita video di \A ed un secondo monitor ad una scheda grafica come
la CyberVision.


\paragrafo {Compilare il kernel}
La directory \c{src/ksrc20/} contiene i sorgenti completi del kernel di
OpenBSD. Potete scompattarli nel vostro sistema in questo modo (si
controlli prima che il path riportato nel comando che segue sia stato
mantenuto tale nella masterizzazione del CD-ROM di IPISA):

\begin{smallcodestyle}
    cd /
    zcat /cdrom/OpenBSD/src/ksrc20/ksrc20.?? | 
         tar xvpf -
\end{smallcodestyle}

Per risparmiare spazio in \c{/usr}, potete eliminare alcune delle
directory che riguardano altre architetture, facendo attenzione a non
eliminare anche i file che servono per le opzioni di compatibilit\`a verso
altre architetture.

La configurazione del kernel pu\`o essere alterata editando un file in
\c{/usr/src/sys/arch/amiga/conf/}. In questa directory troverete alcune
configurazioni che potrete utilizzare come base di partenza per creare un
kernel su misura per il vostro sistema.

Per alleggerire il kernel, potete eliminare tutte le opzioni di debug, di
compatibilit\`a con le versioni precedenti di NetBSD e con gli altri
sistemi operativi, i filesystem che non vi interessano, le periferiche che
non utilizzate ed il supporto per i microprocessori diversi dal vostro.

Prima di sperimentare le opzioni pi\`u oscure e operare cambiamenti
drastici nei sorgenti, \`e consigliabile provare a compilare un kernel con
poche modifiche rispetto a quello generico. Una volta editato il file di
configurazione, salvatelo con un nome qualsiasi e lanciate il comando:

\begin{smallcodestyle}
     config <nome del file>
\end{smallcodestyle}     

Verr\`a creata una directory in \p{/usr/src/sys/arch/ amiga/compile/} con
lo stesso nome del file di configurazione. Entrate in questa directory e
scrivete:

\begin{smallcodestyle}
     make depend
\end{smallcodestyle}

\noindent per generare le informazioni sulle dipendenze tra i sorgenti del kernel.
Questa operazione deve essere ripetuta ogni volta che si modifica il file
di configurazione, ma non \`e necessaria quando modificate i sorgenti
senza aggiungere nuovi file.

Prima di iniziare a compilare, potete editare il Makefile per cambiare
qualche opzione. Se avete il coprocessore matematico, togliete
\c{-fsoft-float} dalle opzioni per il gcc ed avrete un kernel leggermente
pi\`u veloce e compatto.  Potete anche specificare \c{-m68030} 
o \c{-m68040} per
generare codice specifico per questi microprocessori.

Come spiega la FAQ di NetBSD, la compilazione del kernel richiede molte
ore di tempo ed alcune tazze di caff\'e per sostenervi durante l'attesa.
Ovviamente, non siete obbligati a guardare lo schermo senza far niente
mentre il gcc lavora. Se usate l'accortezza di lanciare il make preceduto
dal comando nice e se avete abbastanza memoria e swap space, il carico del
sistema dovrebbe rimanere piuttosto contenuto, e potrete fare
qualcos'altro mentre il kernel viene compilato in background. Se
necessario, potete anche interrompere la compilazione in qualsiasi momento
e riprendere da dove eravate rimasti.

Se la compilazione dovesse interrompersi a causa di un errore, riprovate
cambiando le opzioni nel file di configurazione. Se conoscete il C potete
provare anche a risolvere il problema modificando i sorgenti.

Una volta terminata la compilazione, troverete il nuovo kernel nella
directory di compilazione, con il nome ``netbsd".  Provate a rebootare con
questo kernel prima di copiarlo definitivamente nella root. A questo
proposito potete anche utilizzare il device reload, che consente di
eseguire un reboot con un kernel diverso da quello corrente:

\begin{smallcodestyle}
          cp netbsd /dev/reload
\end{smallcodestyle}

E se non vi accontentate di aver compilato un kernel tagliato su misura
per il vostro sistema, sappiate che sui siti che distribuiscono OpenBSD
sono disponibili anche tutti i sorgenti delle utility di sistema, delle
librerie dinamiche e del compilatore. Buon divertimento!

\paragrafo {Riferimenti}

\sottoparagrafo{Siti FTP}

\c{ftp.netbsd.org:/pub/NetBSD-Amiga/}

\hspace{1cm}    HQ di NetBSD-Amiga

\noindent\c{ftp.openbsd.org:/pub/OpenBSD/}

\hspace{1cm}    HQ di OpenBSD

\noindent\c{ftp2.ft.openbsd.org:/pub/OpenBSD/}

\hspace{1cm}    Mirror completo, pi\`u veloce

\noindent\c{ftp.x.org:/   }

\hspace{1cm}    Distribuzione di X11 e vari client

\noindent\c{irisa.irisa.fr:/pub/mirrors/gnu/}

\hspace{1cm}    Distribuzione software GNU


\sottoparagrafo{Pagine Web}

\noindent\c{http://www.netbsd.org}

\hspace{1cm}    Homepage di NetBSD

\noindent\c{http://www.openbsd.org}
          
\hspace{1cm}    Homepage di OpenBSD

\noindent\c{http://www.gnu.org}

\hspace{1cm}    Homepage del software GNU


\sottoparagrafo{CD-ROM}

{\bf Gateway CD I}

\hspace{1cm}    Distribuzione di NetBSD 1.0

\noindent {\bf  Gateway CD II}

\hspace{1cm}    Distribuzione di NetBSD 1.1

\noindent {\bf  vari CD-ROM Walnut Creek }

\hspace{1cm}    Distribuzione Free/NetBSD

\autore{Bernardo Innocenti\\
e-mail: \c{bernie@shock.nervous.com}
}{}

\citazione{\selectlanguage{english}
``Will we see Plug \& Play in Windows NT?''\\
``Oh yes, of course, in Cairo''\\
``Will NT ever produce peace and cheap antigravity?''\\
``You bet --- in Cairo''}{Mark Minasy, {\em Byte}, Nov. 1996}
