Migration i686 vers x86_64
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 :
- wine / skype : disponibles dans le dépôt [multilib]
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.
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.
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 !