Chapter 32. Aggiornare dai sorgenti un sistema esistente

Table of Contents

32.1. La procedura di aggiornamento
32.1.1. Costruire una nuova userland
32.1.2. Costruire un nuovo kernel
32.1.3. Installare kernel e userland
32.1.4. Aggiornare i file di configurazione del sistema
32.1.5. Sommario
32.1.6. Alternativa: usare sysinst
32.2. Pi dettagli sull'aggiornamento della configurazione e file di avvio
32.2.1. Usare etcupdate con file sorgenti
32.2.2. Usare etcudate con i binari dei set di distribuzione
32.2.3. Usare etcmanage anzich etcupdate

Note

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.

Note

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.

32.1. La procedura di aggiornamento

32.1.1. Costruire una nuova userland

Il primo passo è di costruire l'userland:

$ cd /usr/src
$  ./build.sh -U distribution

32.1.2. Costruire un nuovo kernel

Il prossimo passo costruirà il kernel:

$ cd /usr/src
$ ./build.sh -O ../obj -T ../tools kernel=<KERNEL>
     

32.1.3. Installare kernel e userland

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.

32.1.4. Aggiornare i file di configurazione del sistema

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

32.1.5. Sommario

  1. Dalla radice dell'albero dei sorgenti:

    $ cd /usr/src
  2. Costruire l'userland:

    $ ./build.sh  -O ../obj -T ../tools -U -u distribution
  3. Costruire il kernel:

    $ ./build.sh  -O ../obj -T ../tools -U -u kernel=GENERIC
  4. Installare il kernel:

    $ cd ../obj/sys/arch/<ARCH>/compile/GENERIC
    $ su
    # mv /netbsd /netbsd.old
    # cp netbsd /netbsd
  5. Riavviare il nuovo kernel:

    # shutdown -r now
  6. Installare la nuova userland:

    $ cd /usr/src
    $ su
    # ./build.sh -O ../obj -T ../tools -U install=/
  7. Aggiornare il file di sistema e di configurazione:

    #  /usr/sbin/etcupdate -s /usr/src

Note

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.

32.1.6. Alternativa: usare sysinst

É anche possibile utilizzare sysinst per installare un sistema appena costruito. I passi sono i seguenti:

  1. Costruire un rilascio completo:

    $ ./build.sh  -O ../obj -T ../tools -U -u -x release

  2. I set di installazione risultanti saranno nella diroctory /usr/obj/releasedir/.

  3. Copiare il kernel installato nella directory radice del sistema NetBSD, riavviare, e aggiornare con sysinst (vedere Chapter 4, Aggiornare NetBSD).

32.2.  Più dettagli sull'aggiornamento della configurazione e file di avvio

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.

32.2.1. Usare etcupdate con file sorgenti

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

32.2.2. Usare etcudate con i binari dei set di distribuzione

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

32.2.3.  Usare etcmanage anzichè etcupdate

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