[gl-como] Aggiornare il kernel da remoto

Pietro Bertera pietro@bertera.it
Mer 5 Lug 2006 21:57:02 CEST


Ciao,
dal 30 giugno Debian ha smesso di rilasciare aggiornamenti per woody:
devo aggiornare da remoto tutte le macchine woody in produzione.

Visto che la cosa mi sembrava interessante ho buttato giu' 2 righe su
come fare l'upgrade da remoto parandomi il didietro con grub.

Aggiornare lo userspace č abbastanza liscio se non si ha fatto casini
con i source list o roba strana.

L'upgrade del kernel da remoto č una questione un po' piu' delicata,
usare il fallback di grub mi ha risparmiato un po' di capelli bianchi ;)

Dove non ci sono particolari esigenze ho optato per il 2.6.16 di
Backport (1l 2.6.8 di sarge ha problemi con IPsec ed č vetusto).


0) Check vari:

fare tutti i check del caso: c'č la entry per /sys in fstab ?, 
partizioni, boot loader, dischi e compagnia bella sono ok ?, ci sono
pacchetti che arrivano da repository non ufficali ? ... ?

1) Aggiornare il sources.list

editare /etc/sources.list e inserire i repository per sarge (questo č il
mirror Fastweb):

deb http://debian.fastweb.it/debian/ sarge main contrib non-free
deb http://security.debian.org/ sarge/updates main contrib non-free

2) Primo upgrade (solo userspace):

# apt-get update
# apt-get -u dist-upgrade

se nella lista compare il kernel interrompete l'upgrade e lasciate fuori
il pacchetto mettendo un pin sulla versione corrente (man
apt_preferences ) oppure facendo:

# apt-get install pacchetto1 pacchetto2 pacchetto3 ... 
(tutti tranne il kernel)

scaricherą e configurerą i nuovi pacchetti, non dovrebbero esserci
particolari rogne.

Qui consiglio di fare un reboot per testare se č tutto ok.

2) configurare apt per usare Backports

Aggiungere a /etc/apt/sources.list
deb http://www.backports.org/debian/ sarge-backports main

Ora dobbiamo dare la prioritą solo ai pacchetti che ci interessano in
backport: editare /etc/apt/preferences secondo l'esempio

Package: *
Pin: release a=sarge-backports
Pin-Priority: 200

Package: linux-image-2.6.16-2-686
Pin: release a=sarge-backports
Pin-Priority: 999

Package: grub
Pin: release a=sarge-backports
Pin-Priority: 999

Package: initramfs-tools
Pin: release a=sarge-backports
Pin-Priority: 999

Package: openswan
Pin: release a=sarge-backports
Pin-Priority: 999

il primo gruppo di istruzioni serve a dare una prioritą bassa ai
pacchetti di backport (altrimenti ci tocca aggiornare tutto quello che
sta in backport)

Il secondo, il terzo e il quarto servono per aggiornare il kernel,
mentre openswan serviva a me, non č indispensabile.

4) aggiornare la baracca:

apt-get update && apt-get -u dist-upgrade && apt-get install grub

se initramfs-toos non viene aggiornato significa che non č installato,
quindi occorre installarlo:

apt-get install initramfs-tools

6) Ora il kernel
apt-get install linux-image-2.6.16-2-686

ad un certo punto chiederą se vogliamo interrompere l'operazione perchč
non garantisce che il prossimo reboot andrą a buon fine, noi
continuiamo.
Verificare che abbia creato l'initrd e tutto quanto:

# ls /boot/ | grep 2.6.16
System.map-2.6.16-2-686
config-2.6.16-2-686
initrd.img-2.6.16-2-686
vmlinuz-2.6.16-2-686


7) Configurare Grub:

editare /boot/grub/menu.lst secondo l'esempio (atattatelo secondo il
vostro caso):

default saved
timeout 10
fallback 1
color   cyan/blue white/blue
serial --unit=0 --speed=9600
terminal --timeout=2 serial console

title Debian GNU/Linux, 2.6.16
root    (hd0,1)
kernel  /vmlinuz-2.6.16-2-686 root=/dev/hda6 ro console=ttyS0 console=tty0 panic=30
initrd  /initrd.img-2.6.16-2-686
savedefault fallback

title           Debian GNU/Linux, kernel 2.4.23-i686-freeswan-0.1
root            (hd0,1)
kernel          /vmlinuz-2.4.23-i686-freeswan-0.1 root=/dev/hda6 ro console=ttyS0
initrd          /initrd.img-2.4.23-i686-freeswan-0.1
savedefault

la terza riga (fallback 1) e savedefault fallback fanno in modo che il
boot del kernel di default non va a buon fine al prossimo reboot verrą
caricato il kernel successivo come default, quindi se va male con il
2.6.16 verrą caricato il 2.4.23, l'opzione panic=30 significa che se va
in kernel panic si rebooterą dopo 30 secondi.

8) impostare il primo kernel come default (non dovrebbe essere
necessario ma...)

# grub-set-default 0

9) Buuum!
# reboot

10) Il dopo:

se č tutto ok rimuovere da /boot/grub/menu.lst "fallback 1" e sostituire
"savedefault fallback" con "savedefault" e lanciare "grub-set-default 0"

Se il nuovo kernel ha avuto qualche problema vi dovreste ritrovare con
il vecchio kernel, c'č da capire come mai non č andato bene il boot.


Ciao



Maggiori informazioni sulla lista gl-como