web-dev-qa-db-fra.com

Comment passer d'une installation 32 bits à une installation 64 bits?

J'ai une installation Ubuntu 32 bits fonctionnant sur du matériel 64 bits. Maintenant que multi-Arch a été implémenté , je voudrais passer en 64 bits sans avoir à réinstaller le système d'exploitation.

C'est l'une des histoires d'utilisateurs adressées par la spécification :

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

Cependant, lorsque j'essaie de suivre les instructions, je ne trouve aucune version 64 bits de dpkg ou d'apt.

Cette user story a-t-elle été implémentée de manière différente dans la spécification finale ou dois-je faire quelque chose de différent?

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

54
David Planella

Une telle approche est très compliquée et il est peu probable que tous vos paquets soient la version AMD64 au lieu de la version i386. Seuls les packages qui reçoivent réellement des mises à niveau seront probablement modifiés dans l'architecture, et probablement que si aucun autre package non mis à niveau ne repose sur leur architecture i386. Étant donné que certains paquets ne recevront aucune mise à jour tout au long du cycle de support de votre version Ubuntu, vous ne disposerez probablement jamais d'un système entièrement AMD64 utilisant une telle technique. En outre, il n’ya certainement aucun soutien officiel en faveur d’une telle approche.

Nous vous conseillons de remplacer votre système Ubuntu existant par une nouvelle installation 64 bits.

Toutefois, si vous souhaitez essayer cette technique, vous devrez manuellement télécharger les fichiers .deb pour dpkg et apt. Vous pouvez les trouver aux pages dpkg sous Ubunt et apt sous Ubunt sur Launchpad - développez la dernière version sous "The Oneiric Ocelot" qui est marquée comme release, security, et/ou mises à jour (mais vous ne voulez probablement pas une version marquée uniquement proposée et/ou backports, le cas échéant). Ensuite, téléchargez les fichiers .deb marqués AMD64. Spécifiquement, les fichiers que vous voudrez sont: celui-ci pour dpkg (et les autres listés aussi, si ces packages sont déjà installés) et this et this et this et this et this pour apt.

Avant de faire quoi que ce soit avec ces fichiers, vous devez vous assurer de sauvegarder tous les documents importants de votre système Ubuntu installé et tous les autres fichiers importants (par exemple, de la musique, des livres électroniques, des vidéos), car il est plutôt probable que cette technique se retournera contre vous. et laissez votre système Ubuntu complètement inutilisable.

Vous pouvez installer tous ces packages en les plaçant dans un dossier ne contenant rien d'autre (supposons que le dossier s'appelle debs et qu'il se trouve dans votre répertoire Downloads), puis en exécutant cette commande:

Sudo dpkg -Ri ~/Downloads/debs

Bien sûr, une fois que vous les aurez installés, ils ne fonctionneront pas, car leurs exécutables sont 64 bits et votre système Ubuntu 32 bits exécute un noyau 32 bits (qui n'exécutera que les exécutables 32 bits). En fait, ils pourraient même ne pas terminer l'installation, car ils pourraient avoir des scripts de post-installation qui invoquent leurs exécutables 64 bits inimaginables.

Il existe différentes façons d’installer un noyau 64 bits sur un système 32 bits, mais elles sont toutes extrêmement complexes. Je vous recommande donc de démarrer à partir d’un Live CD Oneiric 64 bits (qui exécute lui-même un disque 64 bits). noyau), chroot dans le système Ubuntu installé et utilisez les apt et dpkg 64 bits récemment installés pour installer un noyau 64 bits.

Voici des instructions spécifiques pour le faire ... mais s'il vous plaît ne prenez pas cela pour dire que je dis que cela fonctionnera. Je n'ai pas tenté cela. (J'ai chrooté dans les systèmes Ubuntu installés à partir de CD live et effectué la gestion des paquets et d'autres opérations, mais je n'ai pas tenté les opérations inter-architectures suggérées ici.)

  1. Dans votre système Ubuntu installé, ouvrez une fenêtre de terminal (Ctrl+Alt+T) et lancez mount | grep ' on / ' (en le collant dans le terminal et en appuyant sur entrée). Vous devriez voir quelque chose comme /dev/sda2 on / type ext4 (rw,errors=remount-ro,commit=0). La partie qui vous intéresse est le nom du périphérique avant on (dans cet exemple, il s'agit de /dev/sda2). Rappelez-vous-le ou écrivez-le.

  2. L'étape 1 vous a donné le nom de périphérique de la partition /. Si vous avez une partition séparée /boot, vous devez également connaître le nom du périphérique correspondant. Donc, dans ce cas, exécutez mount | grep ' on /boot '. Vous verrez quelque chose comme /dev/sda1 on /boot type ext2 (rw). Rappelez-vous ou écrivez cela aussi.

  3. Démarrez à partir d’un live CD Oneiric AMD64 (c’est-à-dire 64 bits) et sélectionnez "Essayer Ubuntu" plutôt que "Installer Ubuntu".

  4. Allez dans un navigateur Web et assurez-vous que la connectivité Internet est entièrement fonctionnelle. Si ce n'est pas le cas, installez-le.

  5. Ouvrez une fenêtre de terminal et exécutez Sudo mount /dev/sda2 /mnt (remplacez /dev/sda2 par le nom de périphérique que vous avez obtenu à l'étape 1, s'il est différent).

  6. Si votre système installé dispose d'une partition /boot distincte, exécutez Sudo mount /dev/sda1 /mnt/boot (remplacez /dev/sda1 par le nom de périphérique que vous avez obtenu à l'étape 2, s'il est différent).

  7. Maintenant, exécutez ces commandes pour chroot dans votre système installé:

    Sudo mount --bind /dev /mnt/dev  
    Sudo chroot /mnt  
    mount -t proc none /proc  
    mount -t sysfs none /sys  
    mount -t devpts none /dev/pts  
    
  8. Exécutez ping -c 4 launchpad.net pour voir si la connectivité Internet fonctionne pleinement à partir du chroot. Vous espérez quelque chose comme ça:

    PING launchpad.net (91.189.89.223) 56(84) bytes of data.
    64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=1 ttl=41 time=141 ms
    64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=2 ttl=41 time=143 ms
    64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=3 ttl=41 time=142 ms
    64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=4 ttl=41 time=140 ms
    
    --- launchpad.net ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3003ms
    
  9. Si, au contraire, vous ne pouviez pas transmettre ou recevoir de paquets, vous devrez configurer la connectivité Internet dans le chroot. Pour ce faire, exécutez ces commandes (pour quitter le chroot, copiez les fichiers de configuration appropriés du système de CD live dans le chroot, puis entrez-le de nouveau):

    Sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.old  
    Sudo cp /mnt/etc/hosts /mnt/etc/hosts.old  
    Sudo cp /etc/resolv.conf /mnt/etc/resolv.conf  
    Sudo cp /etc/hosts /mnt/etc/hosts
    

    En règle générale, vous devriez arrêter ce processus en cas d'erreur, mais ne vous inquiétez pas si la première et/ou la deuxième de ces quatre commandes échouent, à condition que la méthode utilisée échoue en vous indiquant que /mnt/etc/resolv.conf (ou /mnt/etc/hosts) pas exister.

    Retournez dans le chroot et essayez à nouveau:

    Sudo chroot /mnt  
    ping -c 4 launchpad.net  
    
  10. Exécutez ces commandes pour rendre votre environnement chrooté entièrement prêt à être utilisé:

    export HOME=/root  
    export LC_ALL=C  
    
  11. Si vous n'avez pas installé les fichiers .deb pour les versions 64 bits de dpkg et apt, faites-le maintenant. Si vous les avez installées mais que des erreurs de configuration se sont produites, exécutez dpkg --configure -a pour les réparer. (Espérons que cela fonctionnera ... il vaut peut-être mieux attendre d’essayer de les installer jusqu’à ce que vous soyez dans l’environnement du CD, au cas où installer dpkg 64 bits alors qu’il était démarré sur le système installé laissait dpkg dans un état inutilisable. )

  12. Avec les versions 64 bits de dpkg et apt installées, en supposant qu'elles installeront automatiquement les packages 64 bits, vous pouvez maintenant supprimer tous vos noyaux 32 bits et installer un noyau 64 bits. Pour supprimer vos noyaux 32 bits, exécutez dpkg -l | grep linux-. Ceci répertorie les packages installés qui commencent par linux-. Vous êtes plus particulièrement intéressé par les packages qui commencent par linux-generic, linux-image, linux-server et/ou linux-headers. Supprimez ces fichiers avec apt-get purge ...... est remplacé par une liste des packages que vous supprimez, séparés par des espaces.

  13. Maintenant, réinstallez les paquets que vous avez supprimés. (En fait, pour les packages contenant des numéros de version dans le nom du package, comme par exemple linux-image-3.0.0-13-generic, vous devez uniquement installer les derniers noms de package versionnés.) Pour ce faire, exécutez apt-get install ...... est remplacé par une liste de packages séparés par un espace. sont en train d'installer.

  14. Mettez à jour la configuration du chargeur de démarrage, démontez certains périphériques et laissez le chroot:

    update-grub  
    umount /proc || umount -lf /proc  
    umount /sys  
    umount /dev/pts  
    exit  
    Sudo umount mnt/dev  
    
  15. Si vous avez exécuté Sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.old et que cela n'a pas échoué, exécutez maintenant Sudo cp /mnt/etc/resolv.conf.old /mnt/etc/resolv.conf.

  16. Si vous avez exécuté Sudo cp /mnt/etc/hosts /mnt/etc/hosts.old et que cela n'a pas échoué, exécutez maintenant Sudo cp /mnt/etc/hosts.old /mnt/etc/hosts.

  17. Si votre système installé comporte une partition /boot distincte, démontez-la: Sudo umount /mnt/boot

  18. Démontez la partition / de votre système installé: Sudo umount /mnt

  19. Quittez la fenêtre Terminal (exécutez exit), puis redémarrez (ou arrêtez) le système de CD live et démarrez sur le système installé.

  20. Vérifiez si le système est utilisable et exécute un noyau 64 bits (uname -m devrait indiquer que l'architecture est x86_64).

Il se peut que vous deviez installer d'autres packages, tels que ia32_libs et/ou la version 64 bits de libc6, pour que cela fonctionne. Pour certains d'entre eux, vous pouvez être informé que vous en avez besoin lorsque vous essayez d'installer la version 64 bits de dpkg et/ou apt. Pour d'autres, vous pourriez ne pas être informé.

(Les instructions ci-dessus pour chrooter et opérer dans l'environnement chrooté sont basées en grande partie sur cette procédure apparentée mais différente et aussi sur certains Réponses Launchpad de la mienne, en particulier # 6 ici et # 6 ici . Et un merci spécial à Cesium pour avoir signalé que les exécutables dpkg et apt 64 bits ne fonctionneront pas sur un système exécutant un noyau 32 bits.)

36
Eliah Kagan

Comme indiqué ci-dessus, j'ai fait:

echo foreign-architecture AMD64 | Sudo tee /etc/dpkg/dpkg.cfg.d/multiarch
Sudo apt-get update
Sudo apt-get install linux-image:AMD64
Sudo apt-get install gcc-multilib
Sudo update-grub

Ça a marché. Je suis capable d'exécuter mon domaine utilisateur 32 bits avec un noyau 64 bits, sous Ubuntu 12.04.

25
VJ-

Bien que la question soit similaire à Est-il possible de "passer" d'une installation 32 bits à une installation 64 bits? (Si vous ne l'avez pas lu auparavant, je vous encourage à l'essayer. La réponse fournie est bonne. ) Je vous recommande également de lire les liens suivants:

Pour de meilleures performances, dois-je installer 32 bits ou 64 bits?

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

Quelles sont les différences entre 32 bits et 64 bits, et lequel dois-je choisir?

Est-ce possible: oui

Est-ce facile: NON!

Si votre problème concerne la mémoire, sachez qu'Ubuntu 32 Bit peut lire plus de 4 Go de RAM (jusqu'à 64 Go). Donc, utiliser la dernière version 32 bits d'Ubuntu avec un ordinateur doté d'une architecture 32 bits ou 64 bits et ajouter davantage de RAM ne posera pas de problème. Il va simplement lire l'extra RAM et travailler.

6
Luis Alvarado

Ces instructions permettent à votre système de démarrer avec un noyau 64 bits, mais ne modifient pas la plupart des programmes utilisateur.

Après avoir mis à niveau mon système avec un processeur 64 bits, je souhaitais également installer un noyau 64 bits sur mon Ubuntu 14.04.2 32 bits (nom de code: Trusty). Pour ce faire, j'ai entré les commandes suivantes en tant qu'utilisateur root :

dpkg --add-architecture AMD64   
apt-get update
apt-get install linux-generic-lts-utopic:AMD64

Notes:

  1. Cela pourrait supprimer votre noyau 32 bits comme étant fiable - par défaut - livré avec un noyau mis à jour (le noyau de utopic), voir Notes de version de 14.04 . Dans ce cas, votre noyau actuel entre en conflit avec le noyau 64 bits à installer et est donc supprimé. Si vous n'aimez pas cette idée, essayez plutôt l'ancien paquet du noyau 64 bits "linux-generic-lts-trusty: AMD64".

  2. La commande "--add-architecure" est essentielle. Sans cela, le système de paquets ne supporte pas les paquets d'architectures différentes, voir Multiarch-HowTo

  3. Pour voir ce que apt-get va faire sur votre système, lancez-le avec les options -Vs qui activent le "mode de simulation détaillé". Cela imprimera tous les paquets à installer et à supprimer.

  4. Que votre système démarre avec le nouveau noyau dépend de la configuration grub. En tant que utilisateur root , exécutez update-grub pour mettre grub à jour et imprimer la configuration de démarrage actuelle. La première image de la liste sera démarrée par défaut.

  5. Pour sélectionner une autre image du noyau, j'ai supprimé la ligne GRUB_HIDDEN_TIMEOUT=0 de /etc/default/grub et l'ai exécutée en tant qu'utilisateur root update-grub. Au démarrage, vous pouvez maintenant sélectionner un autre noyau (vous avez 10 secondes pour appuyer sur n’importe quelle touche, sinon grub continuera avec le noyau par défaut).

  6. La réponse avec le plus grand nombre de votes est de 2011 et est désespérément obsolète à mon avis. Multiarch vous permet d'installer des paquetages de bibliothèques de plusieurs architectures sur le même ordinateur sans plus tarder.

5
Daniel K.

Ces réponses sont un peu dépassées. Le classement croisé est maintenant documenté pour Debian sur le wiki Debian , mais il n’est toujours pas recommandé.

L'installation d'un noyau d'une architecture différente est maintenant aussi simple que décrit ici, mais le nouvel 'apt' ne reconnaîtra pas les paquets d'une architecture précédente, de sorte que tous ses serveurs frontaux peuvent signaler de nombreux paquets cassés. Cela nécessite soit de changer toutes les dépendances de l'autre architecture, soit de rétablir apt et dpkg en 32 bits.

La meilleure approche peut donc être tout d’abord de sauvegarder les résultats de dpkg --get-selections, d’enlever celle-ci: i386 et de télécharger un package AMD64 pour chacune des dépendances dans le cache:

apt-get --download-only install Perl:AMD64 python3:AMD64 python3-gi:AMD64 xorg:AMD64...

Au mieux, la résolution des dépendances risque d'être lente et longue.

5
Cedric Knight

Comme je suis confronté au même problème, cela fonctionnera peut-être, c’est ce que je comptais faire:

Procurez-vous une version 64 bits du système d'exploitation, installez-la dans une partition. Une fois l'opération terminée, 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 lecteur et l'utiliser.

2
ubuntufan

Ouais, la ligne d’architecture étrangère est incontestablement essentielle pour l’installation de TOUT logiciel cross-Arch. Mais après cela, faites comme plusieurs autres utilisateurs 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 presque le faire ...

2
realkstrawn93

Ma recette pour Ubuntu 16.04 Xenial, testée sur Ubuntu 32 bits fraîchement installé VM avec système standard et 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 ne le redémarrerait pas avec un noyau 32 bits)

reboot

après le redémarrage avec le noyau 64 bits:

Sudo -s
unset LANG
apt install apt:AMD64 apt-utils:AMD64

tapez 'Oui, faites ce que je dis!' quand on lui demande, ça va être en sécurité

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 obtenons le statut 'ii' dans la liste dpkg.

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

reboot

maintenant, avec le noyau 64 bits et l'espace utilisateur, les packages i386 restants peuvent être supprimés:

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

la liste que vous avez enregistrée dans le fichier pkgs1 que vous pouvez utiliser pour tous vos besoins ultérieurs.

2
Wladimir Mutel

La mise à niveau (mise à niveau vers une architecture différente) n'est pas encore prise en charge.

1
tumbleweed

Bonne question. J'ai eu une chasse autour et en dehors de la user story que vous citez, je ne trouve aucun détail sur la façon de procéder. Toute la documentation indique que c'est uniquement pour l'exécution d'applications 32 bits sur un système d'exploitation déjà 64 bits.

Cependant, si vous êtes prêt à expérimenter, vous pouvez essayer ce qui suit (dérivé 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 capable d’exécuter des fichiers binaires 64 bits. Cependant, celui 64 bits devrait exécuter des fichiers binaires 32 bits (si ia32-libs est installé?).

Si vous avez le noyau 64 bits installé et démarré, vous pouvez ensuite installer apt: AMD64, puis suivez la user-story citée précédemment, ubuntu-minimal, ubuntu-desktop, etc.

Après qu'apt: AMD64 soit installé, je pense que vous pouvez supprimer la ligne d’architecture étrangère puisque vous avez essentiellement basculé à ce stade.

Disclaimer: Je n'ai pas de système 32 bits à tester, donc ce ne sont que des conjectures. Bonne chance!

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

1
Caesium