Migration à chaud vers AlmaLinux
Si vous lisez régulièrement ce blog, vous aurez compris que je suis un adepte des clones libres de Red Hat Enterprise Linux, que j'utilise depuis le bon vieux temps de CentOS 4.x. Quelques années en arrière, lorsque Red Hat a décidé de nous couper l'herbe sous les pieds en supprimant le support longue durée de CentOS, j'ai testé Oracle Linux avant de passer au clone libre Rocky Linux, qui tourne actuellement sur toutes mes machines de production, les serveurs comme les postes de travail.
La guerre des clones
Ces dernières semaines, j'ai fait pas mal de tests avec AlmaLinux, et j'avoue platement que j'ai été séduit par cette alternative, pour toute une série de raisons :
-
Alma Linux vise la compatibilité avec les binaires de Red Hat sans pour autant se cantonner à une conformité « bug pour bug ».
-
Cette approche plus pragmatique permet de rectifier le tir pour quelques d'aberrations énervantes de Red Hat, comme par exemple la réinstauration du support SPICE pour
livbirtdepuis RHEL 9.0. -
AlmaLinux offre un meilleur support matériel que Red Hat Enterprise Linux et ses clones conformes. Concrètement, les processeurs de la famille
x86_64-v2sont supportés par AlmaLinux 10.0, contrairement à RHEL 10.0 ou Rocky Linux 10.0. -
AlmaLinux maintient même un dépôt EPEL adapté pour cette architecture à partir de la version 10.
-
Les versions Live sont plus propres chez AlmaLinux que chez la concurrence. Pour en avoir le cœur net, testez successivement la version Live KDE de AlmaLinux et de Rocky Linux et voyez la différence.
-
Enfin, la distribution AlmaLinux semble plus réactive pour les mises à jour.
Cracher dans la soupe ?
Ceci étant dit, je ne vais pas cracher dans la soupe. Rocky Linux reste un excellent choix pour tout un tas de raisons, avec une équipe compétente et réactive et une communauté plutôt sympathique.
Migrer à froid ou à chaud ?
Lorsqu'on change de distribution sur une machine, la solution la plus propre se fait évidemment en trois étapes :
-
Sauvegarder la configuration et les données.
-
Installer le nouveau système.
-
Restaurer la configuration et les données.
Le hic, c'est que c'est long. Alternativement, on pourra donc décider de migrer la machine « à chaud » avec les données en place.
Utiliser le script de migration
Le projet AlmaLinux arbore un bouton Migrate bien visible sur sa page d'accueil :
Un clic sur ce bouton vous amène vers une documentation en anglais plutôt bien faite, pour tous les cas de figure. Plutôt que de vous fourrer tout ça sous le nez façon brut de décoffrage, je préfère vous fournir un exemple pratique, en commençant par le cas de figure le plus simple.
Concrètement, je dispose d'un système minimal Rocky Linux dans une VM :
Ce système n'utilise que les seuls dépôts de paquets par défaut de la distribution :
# dnf repolist
repo id repo name
appstream Rocky Linux 8 - AppStream
baseos Rocky Linux 8 - BaseOS
extras Rocky Linux 8 - Extras
Je souhaite passer à AlmaLinux 8.10 sans devoir tout réinstaller. Avant de commencer, je vérifie si tous mes paquets sont à jour :
Je récupère le script de migration fourni par AlmaLinux :
# mkdir -v bin
mkdir: created directory 'bin'
# cd bin/
# curl -O \
https://raw.githubusercontent.com/AlmaLinux/almalinux-deploy/master/almalinux-deploy.sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 50827 100 50827 0 0 501k 0 --:--:-- --:--:-- --:--:-- 501k
Je rends le script exécutable et je le lance :
# chmod 0700 almalinux-deploy.sh
# ./almalinux-deploy.sh
Check root privileges OK
Check rocky-8.x86_64 is supported OK
Enabled repositories list created OK
Download RPM-GPG-KEY-AlmaLinux OK
Import RPM-GPG-KEY-AlmaLinux to RPM DB OK
Download almalinux-release package OK
Verify almalinux-release package OK
Your OS is supported OK
Remove OS specific rpm packages OK
Verifying... ##################################
Preparing... ##################################
Updating / installing...
almalinux-release-8.10-1.el8 ##################################
Install almalinux-release package OK
Backup of alternatives is done OK
...
J'ai le temps de boire un café pendant que ça mouline. Si tout se passe bien, le script se termine à peu de choses près comme ceci :
Complete!
Run dnf distro-sync -y OK
Restoring of alternatives is done OK
Generating grub configuration file ...
done
All Secure Boot related packages which were not released
by AlmaLinux are reinstalled OK
Migration to AlmaLinux is completed
Je redémarre la machine qui tourne désormais sous AlmaLinux :
Et la version 9.x ?
Pour l'anecdote, j'ai effectué ce même test avec une VM dotée d'une installation minimale de Rocky Linux 9.6. Ça fonctionne à l'identique, et au redémarrage, on se retrouve avec une AlmaLinux 9.6.
Dégraisser le mammouth
J'ai testé la migration avec le script almalinux-deploy.sh sur quelques
postes de travail tournant sous Rocky Linux 8.10 et 9.6. Ces systèmes utilisent
toute une série de dépôts de paquets tiers, ce qui complique un peu les choses.
En gros, j'ai le choix entre deux approches :
-
Laisser tous les dépôts tiers activés et lancer la migration. De temps en temps, la présence d'un paquet va créer un conflit, auquel cas il suffit de la supprimer et de relancer le script. Cette opération se fait sans drame, mais il faut savoir ce qu'on fait.
-
Désactiver tous les dépôts tiers et supprimer les paquets correspondants. C'est plus propre, mais il faudra réinstaller les paquets tiers après la migration.
Étant donné que mes installations sont gérées par Ansible, je préfère utiliser la deuxième méthode, plus propre et plus sûre.
Voici un exemple avec une station de travail sous Rocky Linux 8.10 avec un bureau KDE du dépôt EPEL et toute une série de paquets tiers. Dans un premier temps, je bascule en mode console :
Voici tous les dépôts de paquets utilisés par le système :
# dnf repolist
repo id repo name
anydesk AnyDesk
appstream AppStream
baseos BaseOS
chrome Chrome
docker Docker
eid-archive EID Archive
elrepo ELRepo
epel EPEL
epel-modular EPEL Modular
extras Extras
hashicorp Hashicorp
lynis Lynis
microlinux Microlinux
powertools PowerTools
rpmfusion-free RPM Fusion Free
rpmfusion-free-tainted RPM Fusion Free Tainted
rpmfusion-nonfree RPM Fusion Nonfree
Je désactive tous les dépôts tiers :
# dnf remove rpmfusion*
# dnf remove elrepo-release
# dnf remove epel-release
# cd /etc/yum.repos.d/
# rm -f anydesk.repo
# rm -f docker.repo
# rm -f eid-archive.repo
# rm -f google-chrome.repo
# rm -f hashicorp.repo
# rm -f lynis.repo
# rm -f microlinux.repo
# rm -f *.rpmsave
Je n'utilise plus que les dépôts officiels :
# dnf repolist
repo id repo name
appstream AppStream
baseos BaseOS
extras Extras
powertools PowerTools
Supprimer tous les paquets tiers
La commande dnf list extras me permet d'afficher la liste de tous les
paquets qui ne sont pas fournis par l'un des dépôts de paquets
configurés. Je peux donc utiliser l'astuce suivante pour supprimer tous
les paquets du système qui ne proviennent pas des dépôts
officiels :
Partant de là, il ne me reste plus qu'à lancer mon script de migration.
Et si ça ne démarre plus ?
Sur une de mes machines, je me suis retrouvé face à l'invite de commande de GRUB. Quelque chose avait visiblement foiré sous le capot. Dans ce cas, il suffit de récupérer le système à la main.

