A l'aide, mon baremetal OVH proxmox ne repond plus après la montée de version (8 -> 9)

Un peu de contexte…

J’ai un dédié proxmox chez OVH, avec un ensemble de service et surtout ma veille techno dessus. J’ai aperçu que la version 9 était sortie… alors pourquoi pas la tester ? Dans cette infra pas besoin de backup, ce n’est que du test non important. J’entame mon update et là…. c’est le drame ! Au reboot une erreur GRUB, ça ne sent pas bon. Je commence mes recherches et voici mes trouvailles !

Pourquoi ça arrive…

Sur les serveurs OVHcloud installés en UEFI avec plusieurs disques, l’installeur OVH crée plusieurs partitions EFI (ESP), toutes portant le même label EFI_SYSPART

Mais une seule est montée par Linux sur /boot/efi. Lors de la mise à jour vers Proxmox VE 9, seul cet ESP monté est mis à jour (notamment grubx64.efi).

Au reboot, le serveur ne sélectionne pas forcément le même ESP que celui utilisé par Linux, et il tombe sur un autre ESP non mis à jour, contenant encore le vieux GRUB.

Ce GRUB ancien ne peut pas charger les nouveaux modules, donc erreur de boot avec ce beau message ci-dessous :

1
error: symbol `grub_efi_set_variable_to_string' not found.

L’article qui m’a aidé : https://forum.proxmox.com/threads/proxmox-ve-8-to-9-on-ovh-bare-metal-servers.169924/

La procédure :

!! FAITE UNE SAUVEGARDE !!

Mettre à jour proxmox en 8.4

Il faut d’abord commencer par mettre à jour votre proxmox en 8.4 !

1
apt update && apt full-upgrade

On exécute une première fois le la commande suivante afin d’obtenir le “statut” de la machine pour son passage en version 9 :

Vérifier le passage en version 9 de proxmox

1
pve8to9

Et nous avons un output de ce type

Resultat de la commande “pve8to9”

Dans mon cas, je n’ai aucun problème, mise a part deux vms qui tournent…

Possible erreur systemd-boot

Sur certains serveurs, vous pouvez obtenir cette erreur :

1
FAIL: systemd-boot meta-package installed. This will cause problems on upgrades of other boot-related packages. Remove 'systemd-boot' See https://pve.proxmox.com/wiki/Upgrade_from_8_to_9#sd-boot-warning for more information.

Dans ce cas, taper cette commande :

1
apt remove systemd-boot

Puis, retaper la commande précédente permettant de voir si vous n’avez plus d’erreur.

Maintenant, on va passer a la modification des sources, car on va bien entendu passer de la debian 12 vers 13 :)

1
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list

!! Attention, peut-être que vos sources ce trouve dans : /etc/apt/sources.list.d !!

On met ensuite à jour nos sources :

1
apt update

Upgrade du système

Une fois nos sources à jour, on peut enfin mettre à jour la distribution via cette commande :

1
apt dist-upgrade

Et là, un peu de patience, ça peut être long !!

Quand la mise à jour des paquets et terminée, ne redémarrez pas votre machine !!! Du moins, pour le moment !

Passage du script OVH

On va d’abord récupérer ce superbe script : https://gist.github.com/sbraz/0b58302a244cf1767b931b95226fefb8

Le script identifie toutes les partitions EFI du serveur, puis détermine laquelle est la plus récente. Ensuite, il monte cette partition et copie son contenu vers toutes les autres partitions EFI. Ainsi, toutes les ESP sont synchronisées et contiennent la même version de GRUB, ce qui évite les erreurs de boot liées à une partition EFI obsolète.

1
wget https://gist.githubusercontent.com/sbraz/0b58302a244cf1767b931b95226fefb8/raw/0627c438c4928ace31b14fe31ee4abeed5a77872/esp_over_raid.sh

Puis exécutez le script

1
2
chmod +x esp_over_raid.sh
./esp_over_raid.sh

Modification post-script OVH

Après le passage du script, il faut mettre à jour le fichier mdadm.conf et reconstruire la configuration RAID pour que le système reconnaisse correctement la nouvelle partition EFI au démarrage. On vérifie ensuite que /boot/efi est bien monté avant de redémarrer.

Une fois terminé, on sauvegarde la configuration raid

1
cp /etc/mdadm/mdadm.conf .

On la régénère :

1
/usr/share/mdadm/mkconf force-generate

Avec cette commande, on va regarder les différences de conf entre l’ancien fichier et le nouveau

1
diff -u -I '^#' mdadm.conf /etc/mdadm/mdadm.conf

Ensuite, on met à jour le GRUB

1
update-initramfs -u

On vérifie nos modifs dans le fichier fstab

1
grep /boot/efi /etc/fstab

Et on redémarre !

1
shutdow -r now

Conclusion

Au redémarrage, vous pouvez vérifier la version de proxmox depuis l’UI ou via la commande :

1
pveversion

Et voilà, vous avez un beau proxmox à jour ! Moralité, se renseigner avant les MAJ et surtout, chercher sur internet en cas problème !

Et faite des backups !!!!

Licensed under CC BY-NC-SA 4.0