Wie kann ich eine 32-Bit-Installation auf eine 64-Bit-Installation umstellen?

54

Ich habe eine 32-Bit-Ubuntu-Installation auf 64-Bit-Hardware. Nun , da Multi-Bogen wird implementiert , würde Ich mag auf 64-Bit wechseln , ohne das Betriebssystem neu zu installieren.

Dies ist eine der User Stories, die in der Spezifikation angesprochen werden :

Shawn hat sein System mit der 32-Bit-Version von Ubuntu installiert, aber seine Hardware ist 64-Bit und er möchte umsteigen. Er installiert die amd64-Versionen von dpkg und apt manuell, ersetzt die i386-Versionen und ändert, welche Architektur als Standard verwendet wird. Dann installiert er das Ubuntu-Minimal-Paket amd64. Dann installiert er das Ubuntu-Desktop-Paket amd64. Mit der Zeit werden die verbleibenden i386-Pakete beim Upgrade automatisch ersetzt.

Wenn ich jedoch versuche, den Anweisungen dort zu folgen, kann ich keine 64-Bit-Version von dpkg oder apt finden.

Wurde diese User Story in der endgültigen Spezifikation anders implementiert, oder muss ich etwas anderes tun?

Kurz gesagt, wie kann ich meine 32-Bit-Installation auf 64-Bit umstellen?

David Planella
quelle
3
Mir ist klar, dass die Frage bereits auf askubuntu.com/questions/5018/… gestellt wurde , aber das war, bevor Multi-Arch implementiert wurde, daher sollte die Antwort anders lauten.
David Planella

Antworten:

36

Solch ein Ansatz ist sehr kompliziert und es ist unwahrscheinlich, dass alle Ihre Pakete die amd64Version anstelle der i386Version sind. Nur Pakete, die tatsächlich Upgrades erhalten, werden wahrscheinlich in der Architektur geändert, und wahrscheinlich nur, wenn keine anderen Pakete, die nicht aktualisiert werden, von ihrer i386Architektur abhängen. Da einige Pakete während des gesamten Support-Zyklus Ihrer Ubuntu-Version keine Updates erhalten , werden Sie wahrscheinlich nie ein vollständiges amd64System haben, das eine solche Technik verwendet. Darüber hinaus gibt es sicherlich keine offizielle Unterstützung für einen solchen Ansatz.

Sie sollten stattdessen Ihr bestehendes Ubuntu-System durch eine neue 64-Bit-Installation ersetzen.

Wenn Sie diese Technik jedoch ausprobieren möchten, müssen Sie die Dateien für und manuell herunterladen . Sie finden sie auf den Seiten in Ubuntu und in Ubuntu im Launchpad. Erweitern Sie die neueste Version unter "The Oneiric Ocelot", die als Release, Sicherheit und / oder Updates gekennzeichnet ist (aber Sie möchten wahrscheinlich nicht, dass nur eine Version markiert ist vorgeschlagenen und / oder Backports (falls es jemals einen gibt). Laden Sie dann die markierten Dateien herunter . Im Einzelnen sind die gewünschten Dateien: Diese für (und die anderen, die ebenfalls aufgeführt sind, wenn Sie diese Pakete installiert haben) und dies und das und das und das.debdpkgaptdpkgapt.debamd64dpkgund das für apt.

Bevor Sie mit diesen Dateien etwas anfangen, sollten Sie sicherstellen, dass Sie alle wichtigen Dokumente in Ihrem installierten Ubuntu-System und alle anderen wichtigen Dateien (z. B. Musik, E-Books, Videos) sichern, da es sehr wahrscheinlich ist, dass diese Technik nicht funktioniert und lassen Sie Ihr Ubuntu-System völlig unbrauchbar.

Sie können alle diese Pakete installieren, indem Sie sie in einem Ordner ablegen, der nichts anderes enthält (angenommen, der Ordner heißt debsund befindet sich in Ihrem DownloadsVerzeichnis) und dann den folgenden Befehl ausführen:

sudo dpkg -Ri ~/Downloads/debs

Sobald Sie sie installiert haben, werden sie natürlich nicht mehr ausgeführt, da ihre ausführbaren Dateien 64-Bit sind und auf Ihrem 32-Bit-Ubuntu-System ein 32-Bit-Kernel ausgeführt wird (auf dem nur 32-Bit-ausführbare Dateien ausgeführt werden). Tatsächlich sind sie möglicherweise noch nicht fertig mit der Installation, da sie möglicherweise Skripts nach der Installation haben, die ihre nicht ausführbaren 64-Bit-Programme aufrufen.

Es gibt verschiedene Möglichkeiten, einen 64-Bit-Kernel auf einem 32-Bit-System zu installieren, aber alle sind äußerst kompliziert. Daher empfehle ich stattdessen, von einer 64-Bit-Oneiric-Live-CD zu booten (auf der selbst eine 64-Bit-CD ausgeführt wird) Kernel), chrooten Sie in das installierte Ubuntu-System und verwenden Sie das kürzlich installierte 64-Bit aptund dpkg, um einen 64-Bit-Kernel zu installieren.

Hier sind spezifische Anweisungen dafür ... aber bitte nehmen Sie das nicht so, dass ich sage, dass es funktionieren wird. Ich habe das nicht versucht. (Ich habe von Live-CDs auf installierten Ubuntu-Systemen chrooted und Paketverwaltung und andere Vorgänge ausgeführt, aber die hier vorgeschlagenen architekturübergreifenden Vorgänge nicht ausgeführt.)

  1. Öffnen Sie in Ihrem installierten Ubuntu-System ein Terminal-Fenster ( Ctrl+ Alt+ T) und führen Sie es aus mount | grep ' on / '(indem Sie es in das Terminal einfügen und die Eingabetaste drücken). Du solltest sowas sehen /dev/sda2 on / type ext4 (rw,errors=remount-ro,commit=0). Der Teil, den Sie interessieren, ist der Gerätename zuvor on(in diesem Beispiel ist es /dev/sda2). Denken Sie daran oder schreiben Sie es auf.

  2. Schritt 1 gab Ihnen den Gerätenamen der /Partition. Wenn Sie eine separate /bootPartition haben, müssen Sie auch den Gerätenamen kennen. Also in diesem Fall laufen mount | grep ' on /boot '. Du wirst so etwas sehen /dev/sda1 on /boot type ext2 (rw). Denken Sie daran oder schreiben Sie dies auch auf.

  3. Booten Sie von einer Oneiric amd64 (dh 64-Bit) -Live-CD und wählen Sie "Ubuntu testen" anstelle von "Ubuntu installieren".

  4. Rufen Sie einen Webbrowser auf und stellen Sie sicher, dass die Internetverbindung voll funktionsfähig ist. Wenn nicht, richten Sie es ein.

  5. Öffnen Sie ein Terminal-Fenster und führen Sie es aus sudo mount /dev/sda2 /mnt(ersetzen Sie es /dev/sda2durch den Gerätenamen, den Sie in Schritt 1 erhalten haben, falls dieser nicht identisch ist).

  6. Wenn Ihr installiertes System über eine separate /bootPartition verfügt, führen Sie diese aus sudo mount /dev/sda1 /mnt/boot(ersetzen Sie sie /dev/sda1durch den Gerätenamen, den Sie in Schritt 2 erhalten haben, falls dieser nicht identisch ist).

  7. Führen Sie nun die folgenden Befehle aus, um in Ihrem installierten System zu chrooten:

    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. Führen Sie ping -c 4 launchpad.netden Befehl aus, um zu überprüfen, ob die Internetverbindung innerhalb der Chroot vollständig funktioniert. Sie hoffen auf so etwas:

    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. Wenn Sie stattdessen keine Pakete senden oder empfangen konnten, müssen Sie die Internetverbindung in der Chroot einrichten. Führen Sie dazu die folgenden Befehle aus (um die Chroot zu verlassen, kopieren Sie die entsprechenden Konfigurationsdateien vom Live-CD-System in die Chroot und geben Sie die Chroot erneut ein):

    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
    

    Normalerweise sollten Sie diesen Vorgang im Fehlerfall abbrechen. Machen Sie sich jedoch keine Sorgen, wenn der erste und / oder der zweite dieser vier Befehle fehlschlagen, vorausgesetzt, dass der Fehler dadurch verursacht wird, dass Sie darüber informiert werden, dass /mnt/etc/resolv.conf(oder /mnt/etc/hosts) nicht vorhanden ist .

    Die Chroot ist wieder da und versucht es erneut:

    sudo chroot /mnt  
    ping -c 4 launchpad.net  
    
  10. Führen Sie diese Befehle aus, um Ihre Chroot-Umgebung voll einsatzbereit zu machen:

    export HOME=/root  
    export LC_ALL=C  
    
  11. Wenn Sie die .debDateien für die 64-Bit-Versionen von dpkgund nicht installiert haben apt, tun Sie dies jetzt. Wenn Sie sie installiert haben, aber Konfigurationsfehler aufgetreten sind, führen Sie sie aus dpkg --configure -a, um sie zu beheben. (Hoffentlich funktioniert das ... es ist möglicherweise besser zu warten, bis Sie versuchen, sie zu installieren, bis Sie sich in der Live-CD-Umgebung befinden, falls die 64-Bit-Installation dpkgbeim Booten in das installierte System dpkgunbrauchbar wird.)

  12. Wenn die 64-Bit-Versionen von dpkgund aptinstalliert sind und davon ausgegangen wird, dass sie automatisch 64-Bit-Pakete installieren, können Sie jetzt alle Ihre 32-Bit-Kernel entfernen und einen 64-Bit-Kernel installieren. Führen Sie den folgenden Befehl aus, um Ihre 32-Bit-Kernel zu entfernen dpkg -l | grep linux-. Hier werden installierte Pakete aufgelistet, die mit beginnen linux-. Sie sind insbesondere interessiert an Paketen , die wie beginnen linux-generic, linux-image, linux-server, und / oder linux-headers. Entfernen Sie diese Dateien, apt-get purge ...indem Sie " where" ...durch eine durch Leerzeichen getrennte Liste der zu entfernenden Pakete ersetzen.

  13. Installieren Sie nun die entfernten Pakete neu. (Tatsächlich müssen Sie für Pakete, die Versionsnummern im Paketnamen enthalten, wie zum Beispiel linux-image-3.0.0-13-genericnur die neuesten versionierten Paketnamen installieren.) Führen Sie dazu apt-get install ...where aus, und ...ersetzen Sie diese durch eine durch Leerzeichen getrennte Liste der Pakete, die Sie installieren .

  14. Aktualisieren Sie die Bootloader-Konfiguration, entfernen Sie einige Geräte und verlassen Sie die Chroot:

    update-grub  
    umount /proc || umount -lf /proc  
    umount /sys  
    umount /dev/pts  
    exit  
    sudo umount mnt/dev  
    
  15. Wenn Sie gelaufen sind sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.oldund es nicht fehlgeschlagen ist, dann laufen Sie jetzt sudo cp /mnt/etc/resolv.conf.old /mnt/etc/resolv.conf.

  16. Wenn Sie gelaufen sind sudo cp /mnt/etc/hosts /mnt/etc/hosts.oldund es nicht fehlgeschlagen ist, dann laufen Sie jetzt sudo cp /mnt/etc/hosts.old /mnt/etc/hosts.

  17. Wenn Ihr installiertes System über eine separate /bootPartition verfügt, heben Sie Folgendes auf:sudo umount /mnt/boot

  18. Hängen Sie die /Partition Ihres installierten Systems aus :sudo umount /mnt

  19. Verlassen Sie das Terminal-Fenster (Ausführen exit), starten Sie das Live-CD-System neu (oder fahren Sie es herunter) und starten Sie das installierte System.

  20. Prüfen Sie, ob das System verwendbar ist und einen 64-Bit-Kernel ausführt ( uname -msollte sagen, dass dies die Architektur ist x86_64).

Möglicherweise müssen Sie zusätzliche Pakete installieren, z. B. ia32_libsund / oder die 64-Bit-Version von libc6, damit dies funktioniert. Bei einigen von ihnen werden Sie möglicherweise darüber informiert, dass Sie sie benötigen, wenn Sie versuchen, die 64-Bit-Version von dpkgund / oder zu installieren apt. Bei anderen werden Sie möglicherweise nicht informiert.

(Die obigen Anweisungen zum Chrooten und Arbeiten in der Chroot-Umgebung basieren zu einem erheblichen Teil auf diesem verwandten, aber unterschiedlichen Verfahren und auch auf einigen meiner Launchpad Answers- Posts, insbesondere # 6 hier und # 6 hier . Ein besonderer Dank geht an Caesium für den Hinweis dass die 64-Bit- dpkgund aptausführbaren Dateien nicht auf einem System mit einem 32-Bit-Kernel ausgeführt werden.)

Eliah Kagan
quelle
2
Werden diese Binaries unter einem 32-Bit-Kernel laufen, Eliah?
Caesium
@Caesium Guter Anruf. Natürlich nicht. Ich würde meinen Beitrag bearbeiten, um anzugeben, wie der 64-Bit-Kernel zum Laufen gebracht werden kann ... mit der Ausnahme, dass ich keine Ahnung habe, wie ein 64-Bit-Kernelpaket auf einem 32-Bit-Ubuntu-System (das auf 64-Bit-Hardware ausgeführt wird, Natürlich) wenn aptund dpkgsind immer noch 32-Bit und werden (vermutlich) die Installation eines 64-Bit-Kernelpakets ablehnen. (Das Erstellen des Kernels aus dem Quellcode und die Verwendung von Cross-Compilation würde funktionieren, aber das ist sehr kompliziert und ich möchte es nicht empfehlen. Ich bin sicher, dass es einen besseren und einfacheren Weg gibt. Wenn Sie es wissen, fühlen Sie sich bitte frei um meinen oder Ihren Beitrag oder Kommentar dazu zu bearbeiten.)
Eliah Kagan
@Caesium Eigentlich glaube ich zu wissen, wie man den 64-Bit-Kernel installiert. Ich werde meinen Beitrag in Kürze bearbeiten, um dies zu reflektieren. Wenn Sie der Meinung sind, dass meine vorgeschlagene Technik funktionieren würde, können Sie sie in Ihre Antwort kopieren und / oder umschreiben In meiner Antwort, die nicht in Ihrer ist, können Sie unsere Antworten zu einer einzigen Antwort zusammenfassen. (Es könnte Ihre Antwort sein - das ist in Ordnung für mich. Sie haben etwas früher gepostet als ich. Dann würde ich meine Antwort löschen.)
Eliah Kagan
@Caesium Bearbeitungen abgeschlossen; Ich freue mich auf Ihre Kommentare.
Eliah Kagan
Wow, nette Arbeit :) An diesem Punkt haben Sie sich viel mehr Mühe gegeben als ich, damit ich nicht davon träumen würde, in meine Antwort zu kopieren, Ihre sollte für den Kredit bleiben. Es weicht zwar vom ursprünglichen Ziel der Verwendung der Multiarch-Technologie ab, aber ich bin gespannt, ob es trotzdem funktioniert :) Ich schätze, wir müssen auf das Originalposter warten :)
Caesium
25

Wie oben angegeben, habe ich Folgendes getan:

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

Es funktionierte. Ich kann mein 32-Bit-Userland mit 64-Bit-Kernel unter Ubuntu 12.04 ausführen.

VJ-
quelle
5
Diese Antwort rockt. Ich kann bestätigen, dass es immer noch mit frech funktioniert. Der einzige Unterschied besteht darin, dass sich das Verfahren zum Hinzufügen einer Architektur geändert hat: Verwenden Sie sudo dpkg --add-architecture amd64stattdessen. Es wird dich anschreien, wenn du es anders machst. Ich musste dies tun, damit ich von einer (zuvor) 32-Bit-Installation zu einer 64-Bit-Installation wechseln konnte, und es funktionierte genau wie erwartet, ohne dass Probleme auftraten.
Wug
Ich habe es mit Mint versucht, aber ich habe ein paar Probleme. Hast du noch etwas anderes gemacht? Details: superuser.com/q/927830/150718
Dr. Hannibal Lecter
Zusätzlich zu Wugs Änderung müssen Sie linux-image-generic:amd64Ubuntu 16.04 verwenden. Es funktionierte gut, auch ohne die letzten beiden Befehle.
QZNC
6

Obwohl die Frage ähnlich ist wie Ist es möglich, von einer 32-Bit- auf eine 64-Bit-Installation zu "upgraden"? (Wenn Sie es noch nicht gelesen haben, empfehle ich Ihnen, es zu versuchen. Die dort angegebene Antwort ist gut.) Ich empfehle außerdem, die folgenden Links zu lesen:

Sollte ich 32-Bit oder 64-Bit installieren, um eine bessere Leistung zu erzielen?

Wie kann ich eine 32-Bit-Installation auf eine 64-Bit-Installation umstellen?

Was sind die Unterschiede zwischen 32-Bit und 64-Bit und welche soll ich wählen?

Ist es möglich: Ja

Ist es einfach: NEIN!

Wenn Sie Probleme mit dem Arbeitsspeicher haben, sollten Sie wissen, dass Ubuntu 32 Bit mehr als 4 GB RAM lesen kann (bis zu 64 GB). Daher ist die Verwendung der neuesten Ubuntu 32-Bit-Version mit einem Computer mit 32-Bit- oder 64-Bit-Architektur und mehr RAM kein Problem. Es liest einfach den zusätzlichen RAM und funktioniert.

Luis Alvarado
quelle
5

Diese Antworten sind etwas veraltet. Cross-Grading ist jetzt für Debian im Debian-Wiki dokumentiert , wird aber immer noch nicht empfohlen.

Die Installation eines Kernels von einer anderen Architektur aus ist jetzt so einfach wie dort beschrieben, aber das neue "Apt" erkennt keine Pakete von einer früheren Architektur und daher können alle seine Frontends viele defekte Pakete melden. Dies erfordert entweder das Ändern aller Abhängigkeiten zur anderen Architektur oder das Zurücksetzen von apt und dpkg auf 32-Bit.

Der beste Ansatz ist also, zuerst die Ergebnisse von dpkg --get-selections, strip: i386 zu speichern und ein amd64-Paket für jede der Abhängigkeiten zum Cache herunterzuladen:

apt-get --download-only install perl:amd64 python3:amd64 python3-gi:amd64 xorg:amd64...

Bestenfalls ist es wahrscheinlich langsam und zeitaufwändig, die Abhängigkeiten aufzulösen.

Cedric Knight
quelle
5

Mit diesen Anweisungen wird Ihr System mit einem 64-Bit-Kernel gestartet, die meisten Userland-Programme werden jedoch nicht geändert.

Nach dem Upgrade meines Systems mit 64-Bit-CPU wollte ich auch einen 64-Bit-Kernel auf meinem 32-Bit-Ubuntu 14.04.2 (Codename: Trusty) installieren. Dazu habe ich folgende Befehle als root-Benutzer eingegeben :

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

Anmerkungen:

  1. Dadurch wird Ihr 32-Bit-Kernel möglicherweise entfernt, da er standardmäßig mit einem aktualisierten Kernel (dem Kernel von utopic) geliefert wird (siehe 14.04 Versionshinweise) . In diesem Fall kollidiert Ihr aktueller Kernel mit dem zu installierenden 64-Bit-Kernel und wird daher entfernt. Wenn Ihnen diese Idee nicht gefällt, sollten Sie stattdessen das ältere 64-Bit-Kernel-Paket "linux-generic-lts-trusty: amd64" ausprobieren.

  2. Der Befehl "--add-architecure" ist unerlässlich. Ohne dieses unterstützt das Paketsystem keine Pakete unterschiedlicher Architekturen, siehe Multiarch-HowTo

  3. Um zu sehen, was apt-getmit Ihrem System geschehen wird, führen Sie es mit den Optionen aus, -Vsdie den "ausführlichen Simulationsmodus" aktivieren. Dadurch werden alle zu installierenden und zu entfernenden Pakete gedruckt.

  4. Ob Ihr System mit dem neuen Kernel bootet, hängt von der grubKonfiguration ab. Führen Sie als Root-Benutzerupdate-grub grub update aus, und drucken Sie die aktuelle Startkonfiguration. Das erste Image in der Liste wird standardmäßig gestartet.

  5. Um ein anderes Kernel - Image zu wählen, entfernte ich die Linie GRUB_HIDDEN_TIMEOUT=0von /etc/default/grubund lief als Root - Benutzer update-grub . Beim Booten können Sie jetzt einen anderen Kernel auswählen (Sie haben 10 Sekunden Zeit, um eine beliebige Taste zu drücken, sonst wird grub mit dem Standardkernel fortgesetzt).

  6. Die Antwort mit den meisten Stimmen stammt aus dem Jahr 2011 und ist meiner Meinung nach hoffnungslos veraltet. Mit Multiarch können Sie Bibliothekspakete von mehreren Architekturen ohne großen Aufwand auf demselben Computer installieren.

Daniel K.
quelle
Das ist ein netter einfacher Rat, der am 14.10. (Utopic) für mich beinahe funktioniert hätte (aber ich tat es, apt-get install linux-generic:amd64was für das Experiment nicht sehr wichtig sein muss)! Wenn ich die Boot-Option "rescue" durchgehe, wird das System ausgeführt, aber X verwendet keine nouveauGrafiktreiber und ähnliches. Wenn ich normal boote, bricht der Start an einem bestimmten Punkt ab und das System startet neu. (Aber das allererste Mal konnte ich erfolgreich booten.) Ich bin mir nicht sicher, ob das Problem mit dem Grafiktreiber während des "normalen" Bootens oder etwas anderem liegt.
imz - Ivan Zakharyaschev
Es stellte sich heraus, dass der Grafiktreiber und X (statistisch gesehen) nichts mit meinen Abstürzen / Neustarts mit dem amd64-Kernel zu tun haben. Momentan ist es nur ein Rätsel - bugs.launchpad.net/ubuntu/+source/upstart/+bug/1495116 .
imz - Ivan Zakharyaschev
2

Vielleicht ist es das, was ich vorhatte, da ich vor dem gleichen Problem stehe:

Besorgen Sie sich eine 64-Bit-Version des Betriebssystems, installieren Sie es in einer Partition, und kopieren Sie nach Abschluss der Installation die Dokumente und andere Dateien aus der 32-Bit-Installation. Wenn alles sicher kopiert ist, können Sie den Rest des Laufwerks formatieren und verwenden.

Ubuntufan
quelle
2

Ja, die Fremdarchitektur-Linie ist auf jeden Fall für die Installation von Cross-Arch-Paketen von entscheidender Bedeutung. Tun Sie danach Folgendes, wie von mehreren anderen Benutzern erwähnt:

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

Das sollte es gerade noch tun ...

realkstrawn93
quelle
Hast Du es versucht? es funktioniert nicht wirklich, ich bekomme Probleme, sobald es beginnt, dpkg und perl durch ihre amd64-Kollegen zu ersetzen
Janus Troelsen
2

Mein Rezept für Ubuntu 16.04 Xenial, getestet auf einer neu installierten 32-Bit-Ubuntu-VM mit Standardsystem und SSH-Server, aber ohne GUI:

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

(Andernfalls wird thermald: amd64 installiert und unter 32-Bit-Kernel nicht neu gestartet.)

reboot

nach dem Neustart mit 64-Bit-Kernel:

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

tippe "Ja, mach was ich sage!" Wenn man gefragt wird, wird es sicher sein

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

In der obigen Schleife entfernen wir .deb-Dateien, die erfolgreich installiert wurden und den Status 'ii' in der dpkg-Liste haben.

Wir müssen die dpkg -iLäufe wiederholen , da dies nicht vom ersten Versuch an gelingt

reboot

Jetzt können mit 64-Bit-Kernel und Userspace verbleibende i386-Pakete entfernt werden:

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

Die Liste, die Sie in einer pkgs1Datei gespeichert haben, können Sie für weitere Anforderungen verwenden.

Wladimir Mutel
quelle
Das ist eine Art von Magie, aber es hat mir geholfen, einen 32- bis 64-Bit-Übergang über SSH auf einem Remote-PC durchzuführen.
user271872
1

Gute Frage. Ich war auf der Jagd und außer der von Ihnen zitierten User Story kann ich keine Details dazu finden. In der gesamten Dokumentation wird angegeben, dass nur 32-Bit-Anwendungen auf einem bereits 64-Bit-Betriebssystem ausgeführt werden können.

Wenn Sie jedoch experimentieren möchten, können Sie Folgendes versuchen (abgeleitet von meinem Link unter [1])

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

Ich denke, Sie müssen mit einem amd64-Kernel beginnen, da der 32-Bit-Kernel keine 64-Bit-Binärdateien ausführen kann. Auf der 64-Bit-Version sollten jedoch 32-Bit-Binärdateien ausgeführt werden (wenn ia32-libs installiert ist?).

Wenn Sie den 64-Bit-Kernel installiert und gebootet haben, können Sie von dort aus apt: amd64 installieren. Folgen Sie dann der zuvor zitierten User-Story, ubuntu-minimal, ubuntu-desktop usw.

Nach der Installation von apt: amd64 können Sie die fremde Architektur entfernen, da Sie zu diesem Zeitpunkt im Wesentlichen umgeschaltet haben.

Haftungsausschluss: Ich habe kein 32-Bit-System zum Testen, das ist also alles eine Vermutung. Viel Glück!

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

Cäsium
quelle
1

Cross-Upgrade (Upgrade auf eine andere Architektur) wird noch nicht unterstützt.

Tumbleweed
quelle