Upgrade Debian da Sarge (3.1) ad Etch (4.0)

Di seguito la guida per poter effettuare un aggiornamento della versione di Debian da Sarge ad Etch in maniera sicura. In ambiente sistemistico infatti puo’ capitare che facendo solamente un dist-upgrade si comprometta la stabilita’ del sistema operativo senza possibilita’ di tornare indietro. La seguente guida divisa per punti permette proprio di evitare questo poco probabile (ma probabile) grave inconveniente!
. Preparazione di un ambiente sicuro per l’aggiornamento
Prima di tutto e’ opportuno lanciare il comando ’screen’ che permette di gestire le sessioni terminale in modo da poter continuare il lavoro interrotto in caso di blocco del terminale.
Nel caso in cui si utilizzi un kernel precedente al 2.4.1, è necessario aggiornare (almeno) alla serie 2.4 prima di aggiornare le glibc. Ciò dovrebbe essere fatto prima di cominciare con l’aggiornamento. Si raccomanda di aggiornare direttamente al kernel 2.6.8 disponibile in sarge, anziché aggiornare ad un kernel 2.4
Controllare le azioni in sospeso nel gestore dei pacchetti: In alcuni casi, l’utilizzo di apt-get per installare pacchetti in luogo di aptitude potrebbe far sì che aptitude consideri un pacchetto come “inutilizzato” e ne programmi la rimozione. In generale, ci si dovrebbe assicurare che il sistema sia completamente aggiornato e “pulito” prima di procedere con l’aggiornamento. A causa di ciò bisognerebbe controllare se vi sono azioni in sospeso nel gestore dei pacchetti aptitude. Se di un pacchetto è programmata la rimozione o l’aggiornamento nel gestore dei pacchetti, esso potrebbe avere un impatto negativo sulla procedura di aggiornamento. Si noti che la correzione è possibile soltanto se il file sources.list punta ancora a sarge, e non a stable o a etch
Verifica dello stato dei pacchetti:
Controllare se ci sono pacchetti nello stato hold con il comando
# dpkg --get-selections | grep hold
Se si è modificato e ricompilato un pacchetto localmente, e non lo si è rinominato né lo si è contrassegnato nella versione, lo si dovrà bloccare per impedire che venga aggiornato.
Lo stato “bloccato” [“hold”] dei pacchetti per aptitude può essere cambiato con il comando:
# aptitude hold nome_del_pacchetto
Si sostituisca hold con unhold per rimuovere lo stato “bloccato”.
Creare un file con la lista di tutti i packages installati:
# dpkg --get-selections "*" > /root/curr-pkgs.txt
Creare un file con la lista estesa di tutti i packages installati
# dpkg -l > /root/curr-pkgs-ext.txt
. Smarcare manualmente i pacchetti
Per impedire ad aptitude di rimuovere alcuni pacchetti che sono stati selezionati tramite dipendenze, li si dovrà smarcare manualmente come pacchetti auto. Ciò comprende OpenOffice.org e Vim per installazioni di desktop:
# aptitude unmarkauto openoffice.org vim
E immagini di kernel 2.6 qualora siano state installate con l’utilizzo di un metapacchetto:
# aptitude unmarkauto $(dpkg-query -W 'kernel-image-2.6.*' | cut -f1)
Nota: Si può controllare quali pacchetti sono marcati come auto in aptitude eseguendo:
# aptitude search 'i~M <nome pacchetto>'
. Fermare i servizi, disabilitare watchdog
Si dovrebbero fermare tutti i servizi che permettono l’accesso alle risorse da parte del cliente. E’ necessario inoltre, nel caso in cui sia installato, disabilitare temporaneamente watchdog. Per farlo bisogna editare il file /etc/inittab e commentare le righe relative a watchdog. Per caricare il nuovo inittab si deve lanciare il comando:
# init q
. Modificare gli apt sources mettendo etch al posto di sarge
. Registrazione della sessione
Si raccomanda vivamente di utilizzare il programma /usr/bin/script per registrare una trascrizione della sessione di aggiornamento. In tal modo, se si verificasse un problema, si disporrà di una registrazione di quanto accaduto, e, ove necessario, si potrà fornire le informazioni esatte in un’eventuale segnalazione su un bug. Per avviare la registrazione, si digiti:
# script -t 2>~/upgrade-etch.time -a ~/upgrade-etch.script
completo o un simile comando. Non si collochi il file della registrazione in una directory temporanea come /tmp o /var/tmp (i file in queste directory potrebbero venir cancellati durante l’aggiornamento o durante un qualunque riavvio).
Il file generato permetterà anche di rileggere informazioni scorse fuori dalla schermata. Basta passare a VT2 (con Alt-F2) e, dopo aver effettuato il log-in, utilizzare il comando less ~root/upgrade-to-etch.typescript per visionare il file.
Dopo aver completato l’aggiornamento, si può arrestare script digitando al prompt exit.
Se si è utilizzato il parametro -t per script si può utilizzare il programma scriptreplay per un replay dell’intera sessione:
# scriptreplay ~/upgrade-etch.time ~/upgrade-etch.script
. Aggiornamento della lista dei pacchetti
Eseguire:
# aptitude update
Assicurarsi di avere spazio a sufficienza per l’aggiornamento. Si puo eseguire a tal proposito:
# aptitude -y -s -f --with-recommends dist-upgrade
[ ... ]
XXX pacchetti aggiornati, XXX installati, XXX da rimuovere e XXX non aggiornati.
È necessario prelevare xx.xMB/yyyMB di archivi. Dopo l'estrazione, verranno occupati AAAMB.
Saranno scaricati/installati/rimossi pacchetti.
Da qui in poi si esegue l’aggiornamento effettivo del S.O.. L’operazione e’ divisa essenzialmnte in tre fasi:
1) Aggiornamento minimo del sistema
Si esegua in primo luogo:
# aptitude upgrade
Questo ha l’effetto di aggiornare i pacchetti che possono essere aggiornati senza richiedere la rimozione o l’installazione di altri pacchetti.
Si segua la procedura di aggiornamento minimo con:
# aptitude install initrd-tools
Questo passaggio aggiornerà automaticamente libc6 e locales e farà rientrare le librerie di supporto a SELinux (libselinux1)
ATTENZIONE: Nel caso si stia facendo un upgrade su VPS e viene segnalata una difformità con l’architettura del dom0, per esempio:
WARNING: This machine has real i386 class processor. Debian etch and later does not support such old hardware any longer. The reason is that "bswap" instruction is not supported on i386 class processors, and some core libraries have such instruction. You'll see illegal instruction error when you upgrade your Debian system.
Verificare che esiste il file :
/bin/uname.orig
confrontare le due architetture:
#uname -a #uname.orig -a
se differiscono
#cp /bin/uname /bin/uname_old #cp /bin/uname.orig /bin/uname
Proseguire con l’installazione e al termine ripristinare i file uname.
2) Aggiornamento del kernel
La versione di udev in etch non supporta versioni del kernel precedenti alla 2.6.15 (fra cui i kernel 2.6.8 di sarge), e la versione di udev in sarge non funzionerà correttamente con gli ultimi kernel. Di conseguenza, il precedente pacchetto del kernel probabilmente non si avvierà correttamente dopo questo aggiornamento. Se il sistema si dovesse riavviare a questo punto, nel mezzo dell’aggiornamento, potrebbe non essere avviabile a causa del non corretto rilevamento e caricamento dei driver. Per fortuna abbiamo preparato un ambiente sicuro per l’aggiornamento!
A meno che il sistema abbia il task desktop installato, o altri pacchetti che causarebbero un numero inaccettabile di rimozioni di pacchetti, è dunque raccomandato che si aggiorni a questo punto il solo kernel.
Per procedere con questo aggiornamento del kernel, si esegua:
# aptitude install linux-image-2.6-flavor
E’ fortemente raccomandato che si installi un nuovo metapacchetto linux-image-2.6-*. Tale pacchetto potrebbe essere installato automaticamente dal processo di dist-upgrade. Lo si può verificare eseguendo:
# dpkg -l "linux-image*" | grep ^ii
Se non si vede alcun output, si dovrà installare un nuovo pacchetto linux-image a mano. Per vedere un elenco dei metapacchetti linux-image-2.6 disponibili, si esegua:
# apt-cache search linux-image-2.6- | grep -v transition
Se non si è sicuri riguardo quale pacchetto selezionare, si esegua uname -r e si cerchi un pacchetto con un nome simile. Ad esempio, se si vede ‘2.4.27-3-686′, è consigliata l’installazione di linux-image-2.6-686. (Si noti che il flavor 386 non esiste più. Se si sta attualmente utilizzando il flavor 396 del kernel, si dovrebbe installare al suo posto il flavor 486.)
3) Aggiornamento del resto del sistema
Si è ora pronti per continuare con la parte principale dell’aggiornamento. Si esegua:
# aptitude dist-upgrade
Questo comando farà eseguire l’aggiornamento completo del sistema, che comprenderà p.e. l’installazione delle ultime versioni disponibili di tutti i pacchetti, e la risoluzione di tutti i possibili cambiamenti di dipendenze fra pacchetti di rilasci differenti. Se necessario, saranno installati alcuni nuovi pacchetti (solitamente nuove versioni di librerie, o pacchetti rinominati), e sarà rimosso qualunque pacchetto obsoleto che crei conflitti.
. Cose da fare prima di riavviare
Quando aptitude dist-upgrade è giunto al termine, l’aggiornamento “formale” è concluso, ma vi sono alcune altre cose di cui ci si dovrebbe preoccupare prima del successivo riavvio.
1) Conversione da devfs I kernel Debian non includono più il supporto per devfs, cosicché gli utenti di devfs dovranno convertire i loro sistemi manualmente prima di avviare un kernel di etch.
Se si vede la stringa “devfs” in /proc/mounts, si sta nel caso più probabile utilizano devfs. Tutti i file di configurazione che facciano riferimento a nomi di dispositivo nello stile di devfs dovranno essere corretti così che utilizzino nomi nello stile di udev. I file che potrebbero verosimilmente fare riferimento a nomi di dispositivo nello stile di devfs comprendono /etc/fstab, /etc/lilo.conf, /boot/grub/menu.lst e /etc/inittab.
2) Rieseguire lilo
# /sbin/lilo
Si controllino inoltre i contenuti del file /etc/kernel-img.conf e ci si accerti di avervi do_bootloader = Yes. In tal modo il bootloader sarà sempre rieseguito dopo un aggiornamento del kernel.
Se si incontrano problematiche durante l’esecuzione di lilo, si controllino i link simbolici in / a vmlinuz e a initrd e i contenuti di /etc/lilo.conf per eventuali discrepanze.
3) Riabilitare watchdog
decommentarlo da inittab e rilanciare il comando init q


