Migration i686 vers x86_64

De ArchwikiFR


Sommaire

Pré-requis

Ce tutoriel va vous permettre de transformer votre Archlinux 32 bits en Archlinux 64 bits, sans réinstallation complète from scratch et surtout sans perte de configuration.

ArchLinux étant basé sur des paquets binaires (hors AUR), le principe de migration consiste à installer la version x86_64 de chaque paquet installé. On conserve l'ensemble des fichiers de configuration (/etc/fstab, /etc/passwd...) ce qui permet d'obtenir un système 64 bits équivalent au système 32 bits.
Comme lors de toute opération lourde sur le système, une sauvegarde préalable est une très bonne idée.

Migration

Préparation

Mise à jour du système

Afin d'être sûr d'installer en 64 bits la même version que les paquets 32 bits, on va commencer par mettre à jour le système afin d'avoir la dernière version de chaque paquet.

pacman -Syu

Sauvegarde des paquets installés explicitement

Cette étape est réalisée par prudence, on ne devrait pas en avoir besoin.

pacman -Qqe > $HOME/explicit-inst-pkg.list

Suppression des paquets qui posent problème en 64 bits

Un certain nombre de paquets posent problème lors de la migration 64 bits. En voici quelques exemples :

Afin d'éviter des soucis de migration, on désinstalle ces paquets et on s'occupera de leur réinstallation à l'issue de la migration

pacman -Rs wine skype

Ne pas oublier de sauvegarder préalablement les fichiers de configuration modifiés, ils seront à remettre en place une fois la version 64 bits de ces paquets installés. Si d'autres paquets sont dans le même cas, les supprimer eux aussi.

Suppression des paquets AUR

Le processus de migration ne s'occupe que des paquets des dépôts officiels (core, extra, community). Les paquets issus d'AUR sont eux-aussi désinstallés.

pacman -Qqme > $HOME/AUR.list
pacman -Rs `pacman -Qqm`

On sauvegarde la liste des paquets installés explicitement depuis AUR, cela permettra de les réinstaller facilement. Là aussi, ne pas oublier de conserver les fichiers de configuration de ces paquets.

Création de la liste des paquets à migrer

Maintenant que le ménage des paquets est fait, on crée un fichier contenant la liste des paquets. Cette liste sera utilisée lors de la migration.

pacman -Qq > $HOME/pkg.list

Suppression du cache de pacman

On supprime le cache afin d'éviter d'y retrouver des paquets 32 bits quand on va vouloir installer des paquets 64 bits :

pacman -Scc

Réalisation

Démarrage sur un live-cd/clé usb Arch 64 bits

Notre système est maintenant propre, il ne contient que des paquets officiels. On redémarre sur un live-cd Archlinux 64 bits. Une fois démarré, on monte tout ce qu'il faut :

mkdir /mnt/migr
mount /dev/<partition / 32 bits> /mnt/migr

Si le système est réparti sur plusieurs partitions (/boot, /var...), on peut tout monter à l'exception de /home:

mount /dev/<partition boot> /mnt/migr/boot
mount /dev/<partition var> /mnt/migr/var
# ...

On commence par mettre à jour le pacman du live-cd, car c'est fort vraisemblablement une version antérieure à la 3.5, ce qui pose problème (le format de la base de données a changé entre temps)

pacman -Sy
pacman -S pacman

On ne met pas à jour la base de données du live-cd, ce n'est pas nécessaire pour la suite.

Important: Si, sur votre système 32 bits, vous avez installé des paquets via d'autres dépôts que les dépôts officiels (ex : yaourt via le dépôt [archlinuxfr]), n'oubliez pas d'inclure ces dépôts dans le /etc/pacman.conf de votre live-cd : sinon la mise à jour de ces paquets ne se fera pas et le processus de migration s'arrêtera en erreur.

Mise à jour des paquets en 64 bits

On met à jour la base de données pacman de notre système à migrer :

pacman --root /mnt/migr -Syy

Et là commence le vrai boulot. On fait l'upgrade du système :

pacman --root /mnt/migr \
       --cache /mnt/migr/var/cache/pacman/pkg \
       --noscriptlet -S `cat /mnt/migr/root/pkg.list`

L'option --noscriptlet n'exécute pas les scripts d'installation. On se contente 'juste' de remplacer chaque paquet par son équivalent 64 bits.

Exécution de l'ensemble des scripts d'installation de chaque paquet

Si on s'arrête là on n'a fait qu'une partie du boulot. Il faut en effet créer l'initramfs du noyau qui va bien. On va de plus réinstaller les paquets avec exécution des scripts d'installation (ce qui inclura au passage la création de l'initramfs). Pour se faire on va chrooter dans notre install toute fraiche :

mount --bind /proc /mnt/migr/proc
mount --bind /sys /mnt/migr/sys
mount --bind /dev /mnt/migr/dev
mount --bind /dev/shm /mnt/migr/dev/shm
mount --bind /dev/pts /mnt/migr/dev/pts
chroot /mnt/migr
pacman -S `pacman -Qq`

Redémarrage et admiration du résultat

On quitte proprement le chroot et on redémarre :

exit
reboot

Post Migration

Vérification des fichiers de configuration

N'oubliez pas d'ajouter le dépôt [multilib] à votre /etc/pacman.conf si vous avez besoin de faire tourner des applications 32 bits sur votre installation 64 bits.

Il vous faudra également ajuster manuellement l'architecture et les flags de compilation dans /etc/makepkg.conf: aidez-vous du /etc/makepkg.conf.pacnew.

Astuce: De manière générale, n'hésitez pas à comparer vos fichiers de configuration avec les .pacnew dont vous avez hérité au cours de la migration.
Astuce: De même, n'oubliez pas de vérifier les fichiers de configuration de vos comptes utilisateurs: $HOME/.makepkg.conf, $HOME/.yaourtrc, etc..

Installation des paquets supprimés

Notre système étant maintenant réinstallé, il n'y a plus qu'à installer les paquets que nous avons désinstallé au début: wine, paquets AUR, ...

Voilà maintenant vous avez un beau système 64 bits, let's rock !

Outils personnels
Autres langues