J'ai un système 32 bits qui fonctionne sur un processeur 64 bits. Comment puis-je le convertir entièrement en 64 bits sans avoir à le réinstaller? J'ai vu quelque part que c'est faisable grâce au nouveau cadre Multiarch .
J'ai un système 32 bits qui fonctionne sur un processeur 64 bits. Comment puis-je le convertir entièrement en 64 bits sans avoir à le réinstaller? J'ai vu quelque part que c'est faisable grâce au nouveau cadre Multiarch .
Réponses:
TL; DR: C'est faisable, mais compliqué. J'ai esquissé une alternative au bas.
Maintenant la description longue , et prenez-la avec un grain de sel, car je n’ai peut-être pas choisi la meilleure voie:
C'est possible, et voici ce que j'ai fait ces deux dernières nuits: il y a une entrée wiki décrivant la manière de la vieille école sans support multiarch. C'est utile pour réparer les paquets cassés.
Pour migrer votre système de base, procédez comme suit :
$ dpkg --print-architecture
i386
# dpkg --add-architecture amd64
$ dpkg --print-foreign-architectures
amd64
# apt-get update
# apt-get download gcc-4.6-base:amd64 libgcc1:amd64 libc6:amd64 \
libselinux1:amd64 zlib1g:amd64 libbz2-1.0:amd64 dpkg:amd64
# dpkg -i gcc-4.6-base*.deb libgcc*.deb libc*.deb libselinux*.deb \
libbz2*.deb zlib*.deb dpkg*.deb
$ dpkg --print-architecture
amd64
$ dpkg --print-foreign-architectures
i386
Certains de vos paquets sont alors amd64, mais la plupart resteront i386. apt-get upgrade
s'occupera de certains paquets, apt-get -f install
réparera certaines des erreurs, mais la plupart des paquets resteront i386. Si vous voulez faire face à cela, passez la partie la plus délicate;)
Utiliser dpkg --get-selections | grep :i386
retournera tous vos paquets, que vous devrez toujours migrer.
Ma prochaine idée était de faire:
# apt-get install `dpkg --get-selections \
| grep i386 \
| awk {'gsub(/:i386/, ":amd64"); print $1'}`
Mais cela s'est avéré être une mauvaise idée: certains paquets ne sont pas disponibles dans amd64 (par exemple, libc6-i686), apt-get sera confus et de nombreux paquets seront installés dans les deux versions. Beaucoup de travail manuel dans l'aptitude doit être fait.
Plus de difficultés: certains paquets essentiels peuvent être remplacés, de sorte que les fichiers binaires seront toujours installés pour l'installation, mais certains paquets devront être supprimés et réinstallés, par exemple, j'ai eu ce problème avec tar. J'ai wgot les paquets sur un autre système, extrait les paquets via ar p package.deb data.tar.gz | tar zx
et ensuite scp
édité les fichiers extraits via scp -r ./* root@other_computer:/
, de sorte que les fichiers binaires sont à nouveau disponibles. Rincez et répétez, et les scp
fichiers ed seront écrasés.
Ce que je ferais à la place
J'ai effectué les opérations suivantes chaque fois que j'ai changé de système:
Sauvegardez /home
, /etc
(et peut - être /var
, /usr/local
certains autres fichiers que vous avez changé, /root
..., YMMV).
Obtenez une liste des packages installés avec dpkg --get-selections > packagelist
et copiez également le fichier résultant packagelist
.
Faites ensuite une réinstallation propre de Debian, créez à nouveau tous les utilisateurs, peut-être des rôles, etc.
Réinstallez tous les paquets avec dpkg --set-selections < packagelist; apt-get -f install
.
Copiez en arrière les répertoires sauvegardés, les fichiers, et vous avez presque terminé.
Un inconvénient de cette approche: tous vos paquets, y compris les bibliothèques, seront marqués comme installés manuellement, de sorte qu'ils ne seront pas désinstallés, alors qu'aucun paquet ne dépend d'eux plus.
apt-mark showauto
pour exporter la liste automatiquement installée et apt-mark auto
pour les marquer dans la nouvelle installation.
x86_64
, et que mon paquet système n'utilise pas le processeur 64 bits de manière optimale ? J'utilise également un système d'exploitation 32 bits. Je suppose que je pensais que mon processeur était en 32 bits lors de ma première installation :(
Les autres réponses ici montrent que, bien que cela soit théoriquement possible, cela reste très complexe et ne vaut probablement pas la peine. Vous pouvez toutefois effectuer une installation propre et rendre le processus relativement simple si vous restez $HOME
le même.
Le processus général sera
Faites une sauvegarde de votre liste de packages installés et de la liste des packages installés automatiquement.
dpkg --get-selections '*' > package.list
apt-mark showauto >auto.list
Notez que vous pouvez également vouloir supprimer l’architecture de tout nom de paquet que vous avez installé avec multiarch :
dpkg --get-selections '*' | sed -e 's/:\(i386\|amd64\)//' > package.list
Si votre /home
partition est une partition distincte, veillez simplement à ne pas la formater pendant le processus d'installation. S'il ne se trouve pas sur une partition séparée, effectuez une sauvegarde que vous pourrez restaurer ultérieurement:
tar cvzf home_backup.tgz $HOME/
Une fois que vous avez installé votre nouveau système, installez les packages manquants
sudo dpkg --set-selections < package.list
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-mark auto $(cat auto.list)
Restaurez votre $ HOME. Copiez le fichier tgz et extrayez-le dans votre répertoire $ HOME:
tar xvzf home_backup.tgz
Vous voudrez peut-être également consulter les outils fournis par Mint pour faciliter cette tâche. Ils devraient tous être installables sur Ubuntu également.
C'est théoriquement possible, mais probablement perfide. Debian multiarch at current supporte les bibliothèques multiarch, mais pas les fichiers binaires. Donc, il y a ça.
Le système comprend principalement sa propre architecture dpkg-architecture
(qui est en fait un script Perl, mais il extrait et affiche les informations sur la voûte), qui prétend également pouvoir définir l’architecture.
Le processus approximatif serait:
libgcc1
)dpkg-architecture -aamd64
pour décaler votre arcade (remarque, il peut se plaindre de GCC)dpkg
et de ses dépendancesapt-get
et du noyau (remarque, cela peut se plaindre BEAUCOUP)apt-get
Ces étapes sont basées sur ce que je sais de la conception de Debian l'ayant utilisé presque exclusivement parmi les distributions Linux au cours des 12 dernières années (y compris les utilisations debtakeover
précédentes) et de l'approche que je prendrais. Considérez ceci à vos risques et périls . Votre système peut devenir inutilisable tout moment après avoir essayé de l' étape 4. Autre pour les étapes 4 et 5 pourraient être debbootstrap
.
Plus important encore, je suggère fortement d'essayer cela sur une machine virtuelle avant de le faire pour tout ce qui compte pour vous.
Bonne chance et que la force soit avec vous .
Pas une réponse à la question, mais il peut être difficile de mettre à jour tous les paquets de x86 à amd64, mais vous pouvez au moins facilement installer le paquet de noyau amd64, ce qui vous permettra au moins d’exécuter des applications 64 bits, des machines virtuelles et des conteneurs ( qui peut être suffisant pour ce dont vous avez besoin).
Installez simplement le paquet amd64 linux-image avec dpkg -i --force-architecture
.
--force-architecture
n'est pas nécessaire, et le noyau amd64 peut être installé via apt sur i386.
Il existe pas mal de manuels, mais ils ne montrent pratiquement pas à quoi s'attendre. J'écris ceci sur un ordinateur portable Debian Wheezy que je viens de terminer de mettre à niveau de 32 bits à 64 bits et cela fonctionne.
J'ai suivi ces instructions et elles étaient vraiment précises sur ce à quoi vous allez réellement faire face:
http://blog.zugschlus.de/archives/972-How-to-amd64-an-i386-Debian-installation-with-multiarch.html
Il est recommandé de maintenir le système sous tension tout au long du processus. Ne redémarrez pas sauf si vous êtes sûr d'avoir tout migré et que tout ce qui a été supprimé a été réinstallé (notamment les packages essentiels), sinon vous ne pourrez pas redémarrer le système.
Suivant l’idée d’utiliser awk , j’ai utilisé:
dpkg --get-selections \ # get the list
| grep -v deinstall \ # throw away deselected packages
| grep ':i386' \ # get the i386 arch packages
| sed 's/install//g' \ # drop 'install' to get list
| sed 's/:i386/:amd64/g' \ # replace i386 with amd64
| while read package; do \ # iterate over the result
apt-get -yf install $package; \ # install each one and fix dependencies
done
J'ai dû l'exécuter plusieurs fois. dpkg --get-selections
est simplement une liste alphabétique, donc les paquets en haut qui nécessitent des paquets en bas seront ignorés. Si vous voulez voir combien d’installations sont en cours, faites-le dpkg --get-selections | grep amd64 | wc -l
à l’intérieur de la while
boucle.
J'ai peu d'expérience dans ce domaine, mais je pense que vous avez raison de dire qu'une conversion de 32 à 64 devrait être compatible avec le multi-arch. Je serais cependant prudent quant à la qualité du support de ce nouveau système.
Voici l'un des documents que j'ai lus qui ont discuté de la question, peut-être que cela vous aidera: https://wiki.ubuntu.com/MultiarchSpec
Notez les troisièmes User Stories. Voici un autre lien autour du même sujet: https://help.ubuntu.com/community/MultiArch
Même si cela pourrait être un peu différent entre Debian et Ubunutu, il s'agit d'une fonctionnalité essentielle. Ce qui, j'imagine, Ubuntu et Debian travaillerait en étroite collaboration pour que cette structure fonctionne sur le terrain avant qu'Ubuntu ne se retire et ne fasse quelque chose de son goût.
Bonne chance!