57 votes

Comment puis-je passer d'une installation 32 bits à une installation 64 bits ?

J'ai une installation Ubuntu 32 bits fonctionnant sur un matériel 64 bits. Maintenant que le multi-arch a été mis en œuvre Je voudrais passer en 64 bits sans avoir à réinstaller le système d'exploitation.

C'est l'un des les témoignages d'utilisateurs traités par la spécification :

Shawn a installé son système en utilisant la version 32 bits d'Ubuntu, mais son matériel est 64 bits et il veut passer à la version 64 bits. Il installe manuellement les versions amd64 de dpkg et apt, remplaçant les versions i386 et changeant l'architecture utilisée par défaut ; puis il installe le paquet amd64 ubuntu-minimal ; puis il installe le paquet amd64 ubuntu-desktop. Au fil du temps, les paquets i386 restants sont remplacés automatiquement lors de la mise à niveau.

Cependant, en essayant de suivre les instructions qui y figurent, je ne trouve aucune version 64 bits de dpkg ou d'apt.

Cette histoire d'utilisateur a été implémentée d'une manière différente dans la spécification finale, ou dois-je faire quelque chose de différent ?

En bref, comment puis-je faire passer mon installation 32 bits à 64 bits ?

3voto

Wladimir Mutel Points 51

Ma recette pour Ubuntu 16.04 Xenial, testée sur une VM Ubuntu 32 bits fraîchement installée avec un système standard et un serveur SSH mais sans interface graphique :

sudo -s
dpkg --get-selections > pkg1
dpkg --add-architecture amd64
apt update
apt install linux-image-generic:amd64 thermald 

(sinon il installerait thermald:amd64 et échouerait à le redémarrer sous un noyau 32 bits)

reboot

après avoir redémarré avec un noyau 64 bits :

sudo -s
unset LANG
apt install apt:amd64 apt-utils:amd64

tapez "Oui, faites ce que je dis !" quand on vous le demande, c'est qu'il n'y a pas de danger.

mkdir /tmp/upgrade 
cd /tmp/upgrade
pkgs() { dpkg -l | awk '$4=="'$1'"{print $2}' | awk -F: '{print $1}' | sort -u
}
apt download $(comm -23 <(pkgs i386) <(pkgs amd64))
while ls *amd64*deb
do dpkg -i *amd64*deb
   dpkg -l | awk '$1=="ii" && $4=="amd64" {print $2}' | awk -F: '{print $1}' |
   while read a
   do [ -f ${a}_*amd64*deb ] && rm ${a}_*amd64*deb
   done
done

dans la boucle ci-dessus, nous supprimons les fichiers .deb qui ont été installés avec succès et qui ont obtenu le statut 'ii' dans la liste dpkg.

nous devons répéter dpkg -i fonctionne, car il ne réussit pas dès la première tentative

reboot

maintenant, avec un noyau et un espace utilisateur 64 bits, les paquets i386 restants peuvent être supprimés :

dpkg --purge $(dpkg -l | awk '$4=="i386"{print $2}')

la liste que vous avez sauvegardée dans pkgs1 que vous pouvez utiliser pour tous vos besoins futurs.

2voto

Les Points 447

Peut-être, comme je suis confronté au même problème, cela fonctionnera-t-il, c'est ce que j'avais prévu de faire :

Obtenez une version 64 bits du système d'exploitation, installez-la sur une partition, puis copiez les documents et autres éléments de l'installation 32 bits. Lorsque tout est copié en toute sécurité, vous pouvez formater le reste du disque et l'utiliser.

2voto

realkstrawn93 Points 161

Oui, la ligne foreign-architecture est très certainement vitale pour l'installation de TOUT paquet cross-arch. Mais après cela, faites comme plusieurs autres utilisateurs l'ont mentionné :

sudo apt-get update
sudo apt-get install linux-image:amd64
sudo apt-get install linux-modules:amd64
sudo init 6 #reboot into new kernel
sudo apt-get install apt:amd64
sudo apt-get install ubuntu-desktop:amd64

Cela devrait faire l'affaire...

1voto

pele Points 9

Bonne question. J'ai cherché un peu et à part l'histoire de l'utilisateur que vous avez citée, je n'ai pas trouvé de détails sur la façon de procéder. Toute la documentation indique qu'il s'agit uniquement d'exécuter des applications 32 bits sur un système d'exploitation déjà 64 bits.

Toutefois, si vous êtes prêt à expérimenter, vous pouvez essayer ce qui suit (tiré de mon lien à [1])

 echo foreign-architecture amd64 | sudo tee /etc/dpkg/dpkg.cfg.d/multiarch
 sudo apt-get install linux-image:amd64

Je pense que vous devrez commencer avec un noyau amd64, car le noyau 32 bits ne sera pas en mesure d'exécuter des binaires 64 bits. Cependant, le noyau 64 bits devrait exécuter des binaires 32 bits (si ia32-libs est installé ?).

Si vous obtenez le noyau 64bit installé et démarré, vous pouvez à partir de là installer apt:amd64, puis suivre l'histoire de l'utilisateur comme cité précédemment, ubuntu-minimal, ubuntu-desktop, etc.

Une fois apt:amd64 installé, je pense que vous pouvez supprimer la ligne foreign-architecture puisque vous avez essentiellement basculé à ce moment-là.

Clause de non-responsabilité : je n'ai pas de système 32 bits à tester, donc ce ne sont que des suppositions. Bonne chance !

[1] https://wiki.ubuntu.com/OneiricOcelot/TechnicalOverview/Beta1#Improved_handling_of_32-bit_compatibility_on_amd64_systems

1voto

Le crossgrading (mise à niveau vers une architecture différente) n'est pas encore pris en charge.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X