J'ai mis à jour mon serveur kimsufi d'OVH de Debian Etch 4.0 en Lenny 5.0. Pas de soucis particuliers. Je donne ici les étapes que j'ai suivi, si ça peut servir à d'autres...

Mon serveur est un serveur d'installation Etch standard d'OVH, avec le noyau 2.6.24.5-grsec-xxxx-grs-ipv4-32 d'OVH qui n'est pas le noyau standard de Debian[1]. J'ai quelques services installés : postfix, PostgreSQL, lighttpd, PHP5, etc.

Avant toute mise à jour, lire le chapitre 4 (Upgrade) des Release Notes de la mise à jour de Lenny.

J'ai fait cette mise à jour en trois phases :

  • installation de GRUB ;
  • mise à jour du système ;
  • dernières corrections.

Dans les indications suivantes, # marque le prompt du shell de root sous lequel il faut exécuter les commandes.

Installation de GRUB

J'ai installé GRUB parce qu'il supporte mieux les noyaux récents (cf. remarque sur initramfs pour LILO dans les Release Notes), parce qu'il ne nécessite pas d'exécuter LILO après chaque installation d'un nouveau noyau, parce que c'est le bootloader par défaut de Debian (même si je n'utilise pas le noyau standard) et pour augmenter le FPF[2].

# aptitude install grub
# grub-install "(hd0)"
# update-grub

Indiquer qu'on veut générer un /boot/grub/menu.lst.

Faire ensuite les modifications suivantes[3] sur /boot/grub/menu.lst. Ma partition root est /dev/sda1 ce qui correspond à (hd0,0) de GRUB, adaptez les modifications à votre propre partitionnement (voir la doc du nommage dans GRUB) :

--- /boot/grub/menu.lst.orig	2009-03-01 17:52:12.000000000 +0100
+++ /boot/grub/menu.lst	2009-03-01 18:14:12.000000000 +0100
@@ -16,7 +16,7 @@
 ## timeout sec
 # Set a timeout, in SEC seconds, before automatically booting the default entry
 # (normally the first entry defined).
-timeout		5
+timeout		0
 
 # Pretty colours
 color cyan/blue white/blue
@@ -36,11 +36,11 @@
 # root		(hd0,0)
 # makeactive
 # chainloader	+1
-#
-# title		Linux
-# root		(hd0,1)
-# kernel	/vmlinuz root=/dev/hda2 ro
-#
+
+title		Linux
+root		(hd0,0)
+kernel	/boot/bzImage-2.6.24.5-xxxx-grs-ipv4-32 root=/dev/sda1 ro
+
 
 #
 # Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST

Enfin rebooter... et croiser les doigts. :-)

# reboot

Normalement la machine reboot correctement. En cas de soucis, utiliser le mode rescue d'OVH pour essayer de récupérer la situation.

Mise à jour du système en Debian Lenny

Note : vous pouvez garder un script de la mise à jour avec la commande :

# script -t 2>~/upgrade-lenny.time -a ~/upgrade-lenny.script

Préparer la mise à jour en modifiant les fichiers de configuration d'apt :

  • supprimer le contenu d'/etc/apt/preferences si vous l'utilisiez (comme moi pour les backports) :
# mv /etc/apt/preferences /etc/apt/preferences.2009-03-01
  • mettre à jour /etc/apt/sources.list :
deb ftp://mir1.ovh.net/debian/ lenny main
deb-src ftp://mir1.ovh.net/debian/ lenny main

deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main

Mettre à jour la liste des paquets :

# aptitude update

Vous verrez probablement le warning suivant, ne pas en tenir compte (apt ne connaît pas encore la signature de l'archive des paquets de Lenny) :

W: There is no public key available for the following key IDs:
4D270D06F42584E6
W: You may want to run apt-get update to correct these problems

Installer la nouvelle version d'aptitude (et de la libc, ...) :

# aptitude install aptitude

J'ai eu quelques conflits à résoudre et j'ai accepté la solution proposée par aptitude.

Première mise à jour sans tout bousiller :

# aptitude safe-upgrade

Attention : surtout ne pas exécuter /sbin/lilo !! Vous effaceriez l'installation actuelle de GRUB.

J'ai eu quelques erreurs sur des services qui n'ont pas pu être relancés. Je les ai ignorées.

Deuxième mise à jour, en autorisant à supprimer des paquets :

# aptitude full-upgrade

Encore une mise à jour, pour mettre à jour les derniers paquets :

# aptitude full-upgrade

Un coup de grub-install pour être sûr qu'il est bien installé (inutile, mais je préfère être sûr) :

# grub-install "(hd0)"

Et un reboot en croisant les doigts :

# reboot

Normalement, votre machine devrait correctement re-démarrer. :-)

À noter que je n'ai pas eu de soucis avec /etc/udev/rules.d/70-persistent-net.rules qui influence le nommage des interfaces, eth0 est bien resté eth0. Mais comme le soulignent Alarc'h et AnatomicJC dans les commentaires, se problème peut se produire. Comme Alarc'h le dit, il faut alors rebooter en mode rescue le serveur puis monter la partition et éditer le fichier /etc/udev/rules.d/70-persistent-net.rules pour intervertir eth0 et eth1. Je ne sais pas s'il y a une solution propre à ce problème, c.-à-d. corriger le problème avant le reboot.

Dernières mise à jour

Je supprime LILO :

# aptitude remove lilo
# grub-install "(hd0)"
# reboot

Encore une fois, le grub-install est inutile mais je préfère être prudent. Normalement, votre machine doit rebooter correctement.

Vérifier que tout marche, en accédant à votre site web, blog et en vous envoyant des emails pour s'assurer que tous les services (email, serveur web, serveur de bases de données, PHP, ...) fonctionnent correctement.

Profitez maintenant de votre toute nouvelle Debian Lenny ! ;-)

Notes

[1] J'ai préféré garder le noyau d'OVH pour des raisons de sécurité. Il est compilé avec des extensions de sécurité et ne supporte pas les modules, réduisant les risques d'attaques.

[2] FPF : Fred Pleasing Factor

[3] un « - » en début de ligne indique une ligne supprimée, un « + » indique une ligne ajoutée.