Table of Contents
Ricordarsi di controllare src/UPDATING per gli ultimi cambiamenti.
Se si stà eseguendo un rilascio stabile di NetBSD (come NetBSD 4.0), in un ambiente di produzione, si dovrebbe occasionalmente aggiornare i sorgenti e ricompilare il sistema o il kernel, al fine di ottenere tutte le correzioni di sicurezza che sono state applicate al ramo (branch, NdT) da quando questo è stato rilasciato.
Il processo di aggiornamento è lo stesso per NetBSD-current, quindi i seguenti passi vanno effettuati allo stesso modo su -current.
Buona parte dei seguenti passi possono essere fatti da un utente
ordinario. Solo l'installazione del nuovo kernel e dell'userland
richiederà i privilegi di root. Sebbene, nei seguenti esempi,
/usr
sia scelta come directory di lavoro, la
procedura può aver luogo anche nella home directory di un
utente. Gli utenti ordinari normalmente non hanno i permessi per
effettuare cambiamenti in /usr
, ma questo
può essere cambiato da root.
Avere sorgenti aggiornati è un prerequisito per i seguenti passi. Section 29.4, “Fetching by CVS” informa sui vari modi per ottenere o aggiornare i sorgenti per un rilascio, ramo stabile o corrente (utilizzando CVS).
Riferirsi sempre all'output di build.sh -h e
ai file UPDATING
e BUILDING
per maggiori dettagli - ne vale la pena, ci sono molte
opzioni che possono essere impostate sulla riga di comando o in
/etc/mk.conf
.
Il primo passo è di costruire l'userland:
$
cd /usr/src
$
./build.sh -U distribution
Il prossimo passo costruirà il kernel:
$
cd /usr/src
$
./build.sh -O ../obj -T ../tools kernel=<KERNEL>
L'installazione del nuovo kernel, il riavvio (per assicurarsi che il nuovo kernel funzioni) e l'installazione della nuova userland sono i passi finali della procedura di aggiornamento:
$
cd /usr/src
$
su
#
mv /netbsd /netbsd.old
#
mv /usr/src/sys/arch/<ARCH>/compile/<KERNEL>/netbsd /
#
shutdown -r now
...$
cd /usr/src
$
su
#
./build.sh -O ../obj -T ../tools -U install=/
Se il nuovo kernel netbsd
non si avvia con
successo, è possibile tornare ad avviare il kernel
netbsd.old
.
Eseguire lo script etcupdate (etcupdate(8)) e seguire le istruzioni dell'output per rimuovere i file obsoleti:
#
/usr/sbin/etcupdate -s /usr/src
Opzionalmente riavviare per assicurarsi che tutti i servizi in esecuzione stiano utilizzando i nuovi binari:
#
shutdown -r now
Dalla radice dell'albero dei sorgenti:
$
cd /usr/src
Costruire l'userland:
$
./build.sh -O ../obj -T ../tools -U -u distribution
Costruire il kernel:
$
./build.sh -O ../obj -T ../tools -U -u kernel=GENERIC
Installare il kernel:
$
cd ../obj/sys/arch/<ARCH>/compile/GENERIC
$
su
#
mv /netbsd /netbsd.old
#
cp netbsd /netbsd
Riavviare il nuovo kernel:
#
shutdown -r now
Installare la nuova userland:
$
cd /usr/src
$
su
#
./build.sh -O ../obj -T ../tools -U install=/
Aggiornare il file di sistema e di configurazione:
#
/usr/sbin/etcupdate -s /usr/src
Nella procedura sopra, l'opzione -u
indica un processo
di aggiornamento, e che l'operazione make clean non dovrebbe essere
eseguita prima di cominciare il build. Questo è utile quando
si effettua l'aggiornamento da un build precedente e/o da un nuovo build.
L'opzione -U
consente l'intero build da utente non-root
seguito da un installazione da root.
É anche possibile utilizzare sysinst
per
installare un sistema appena costruito. I passi sono i seguenti:
Costruire un rilascio completo:
$
./build.sh -O ../obj -T ../tools -U -u -x release
I set di installazione risultanti saranno nella diroctory
/usr/obj/releasedir/
.
Copiare il kernel installato nella directory radice del sistema
NetBSD, riavviare, e aggiornare con sysinst
(vedere Chapter 4, Aggiornare NetBSD).
etcupdate
è uno script per aiutare gli
utenti a confrontare, unire e installare nuovi file di configurazione
e di avvio (file trovati nel set di distribuzione etc.tgz) in /dev,
/etc e /root dopo aver effettuato l'aggiornamento del sistema operativo.
L'aggiornamento del sistema operativo può essere stato effettuato
sia compilando i sorgenti che estraendo i binari di distribuzione.
Nel caso in cui i sorgenti siano in /usr/src i seguenti comandi dovrebbero essere sufficiente:
#
etcupdate
Ma cosa succede se i sorgenti di NetBSD sono in una locazione
alternativa, come /home/clamiax/netbsd/src
?
Non disperare, basta dire ad etcupdate la locazione dell'albero
dei sorgenti con -s srcdir e funzionerà bene:
#
etcupdate -s /home/jdoe/netbsd/src
Talvolta non è possibile avere i sorgenti a disposizione ma si desidera comunque aggiornare i file di configurazione e di avvio. La soluzione è di estrarre i file di distrubuzione desiderati (almeno etc.tgz) e usare lo switch -b srcdir per dire a etcupdate che non si hanno i sorgenti ma solo i set di distribuzione ufficiali.
#
mkdir /tmp/temproot
#
cd /tmp/temproot
#
tar xpzf /some/where/etc.tgz
#
etcupdate -s /tmp/temproot
Lo script in Perl etcmanage
(disponibile da
pkgsrc/sysutils/etcmanage
o come pacchetto binario) è un'alternativa a etcupdate
.
Dovrebbe essere usato nel modo seguente, in combinazione con postinstall(8):
#
/usr/pkg/bin/etcmanage
#
/usr/sbin/postinstall