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?
Antworten:
Solch ein Ansatz ist sehr kompliziert und es ist unwahrscheinlich, dass alle Ihre Pakete die
amd64
Version anstelle deri386
Version 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 ihreri386
Architektur abhängen. Da einige Pakete während des gesamten Support-Zyklus Ihrer Ubuntu-Version keine Updates erhalten , werden Sie wahrscheinlich nie ein vollständigesamd64
System 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
.deb
dpkg
apt
dpkg
apt
.deb
amd64
dpkg
und das fürapt
.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
debs
und befindet sich in IhremDownloads
Verzeichnis) und dann den folgenden Befehl ausführen: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
apt
unddpkg
, 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.)
Ö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 zuvoron
(in diesem Beispiel ist es/dev/sda2
). Denken Sie daran oder schreiben Sie es auf.Schritt 1 gab Ihnen den Gerätenamen der
/
Partition. Wenn Sie eine separate/boot
Partition haben, müssen Sie auch den Gerätenamen kennen. Also in diesem Fall laufenmount | grep ' on /boot '
. Du wirst so etwas sehen/dev/sda1 on /boot type ext2 (rw)
. Denken Sie daran oder schreiben Sie dies auch auf.Booten Sie von einer Oneiric amd64 (dh 64-Bit) -Live-CD und wählen Sie "Ubuntu testen" anstelle von "Ubuntu installieren".
Rufen Sie einen Webbrowser auf und stellen Sie sicher, dass die Internetverbindung voll funktionsfähig ist. Wenn nicht, richten Sie es ein.
Öffnen Sie ein Terminal-Fenster und führen Sie es aus
sudo mount /dev/sda2 /mnt
(ersetzen Sie es/dev/sda2
durch den Gerätenamen, den Sie in Schritt 1 erhalten haben, falls dieser nicht identisch ist).Wenn Ihr installiertes System über eine separate
/boot
Partition verfügt, führen Sie diese aussudo mount /dev/sda1 /mnt/boot
(ersetzen Sie sie/dev/sda1
durch den Gerätenamen, den Sie in Schritt 2 erhalten haben, falls dieser nicht identisch ist).Führen Sie nun die folgenden Befehle aus, um in Ihrem installierten System zu chrooten:
Führen Sie
ping -c 4 launchpad.net
den Befehl aus, um zu überprüfen, ob die Internetverbindung innerhalb der Chroot vollständig funktioniert. Sie hoffen auf so etwas: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):
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:
Führen Sie diese Befehle aus, um Ihre Chroot-Umgebung voll einsatzbereit zu machen:
Wenn Sie die
.deb
Dateien für die 64-Bit-Versionen vondpkg
und nicht installiert habenapt
, tun Sie dies jetzt. Wenn Sie sie installiert haben, aber Konfigurationsfehler aufgetreten sind, führen Sie sie ausdpkg --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-Installationdpkg
beim Booten in das installierte Systemdpkg
unbrauchbar wird.)Wenn die 64-Bit-Versionen von
dpkg
undapt
installiert 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 entfernendpkg -l | grep linux-
. Hier werden installierte Pakete aufgelistet, die mit beginnenlinux-
. Sie sind insbesondere interessiert an Paketen , die wie beginnenlinux-generic
,linux-image
,linux-server
, und / oderlinux-headers
. Entfernen Sie diese Dateien,apt-get purge ...
indem Sie " where"...
durch eine durch Leerzeichen getrennte Liste der zu entfernenden Pakete ersetzen.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-generic
nur die neuesten versionierten Paketnamen installieren.) Führen Sie dazuapt-get install ...
where aus, und...
ersetzen Sie diese durch eine durch Leerzeichen getrennte Liste der Pakete, die Sie installieren .Aktualisieren Sie die Bootloader-Konfiguration, entfernen Sie einige Geräte und verlassen Sie die Chroot:
Wenn Sie gelaufen sind
sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.old
und es nicht fehlgeschlagen ist, dann laufen Sie jetztsudo cp /mnt/etc/resolv.conf.old /mnt/etc/resolv.conf
.Wenn Sie gelaufen sind
sudo cp /mnt/etc/hosts /mnt/etc/hosts.old
und es nicht fehlgeschlagen ist, dann laufen Sie jetztsudo cp /mnt/etc/hosts.old /mnt/etc/hosts
.Wenn Ihr installiertes System über eine separate
/boot
Partition verfügt, heben Sie Folgendes auf:sudo umount /mnt/boot
Hängen Sie die
/
Partition Ihres installierten Systems aus :sudo umount /mnt
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.Prüfen Sie, ob das System verwendbar ist und einen 64-Bit-Kernel ausführt (
uname -m
sollte sagen, dass dies die Architektur istx86_64
).Möglicherweise müssen Sie zusätzliche Pakete installieren, z. B.
ia32_libs
und / oder die 64-Bit-Version vonlibc6
, 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 vondpkg
und / oder zu installierenapt
. 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-
dpkg
undapt
ausführbaren Dateien nicht auf einem System mit einem 32-Bit-Kernel ausgeführt werden.)quelle
apt
unddpkg
sind 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.)Wie oben angegeben, habe ich Folgendes getan:
Es funktionierte. Ich kann mein 32-Bit-Userland mit 64-Bit-Kernel unter Ubuntu 12.04 ausführen.
quelle
sudo dpkg --add-architecture amd64
stattdessen. 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.linux-image-generic:amd64
Ubuntu 16.04 verwenden. Es funktionierte gut, auch ohne die letzten beiden Befehle.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.
quelle
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:Bestenfalls ist es wahrscheinlich langsam und zeitaufwändig, die Abhängigkeiten aufzulösen.
quelle
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 :
Anmerkungen:
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.
Der Befehl "--add-architecure" ist unerlässlich. Ohne dieses unterstützt das Paketsystem keine Pakete unterschiedlicher Architekturen, siehe Multiarch-HowTo
Um zu sehen, was
apt-get
mit Ihrem System geschehen wird, führen Sie es mit den Optionen aus,-Vs
die den "ausführlichen Simulationsmodus" aktivieren. Dadurch werden alle zu installierenden und zu entfernenden Pakete gedruckt.Ob Ihr System mit dem neuen Kernel bootet, hängt von der
grub
Konfiguration 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.Um ein anderes Kernel - Image zu wählen, entfernte ich die Linie
GRUB_HIDDEN_TIMEOUT=0
von/etc/default/grub
und lief als Root - Benutzerupdate-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).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.
quelle
apt-get install linux-generic:amd64
was für das Experiment nicht sehr wichtig sein muss)! Wenn ich die Boot-Option "rescue" durchgehe, wird das System ausgeführt, aber X verwendet keinenouveau
Grafiktreiber 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.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.
quelle
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:
Das sollte es gerade noch tun ...
quelle
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:
(Andernfalls wird thermald: amd64 installiert und unter 32-Bit-Kernel nicht neu gestartet.)
nach dem Neustart mit 64-Bit-Kernel:
tippe "Ja, mach was ich sage!" Wenn man gefragt wird, wird es sicher sein
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 -i
Läufe wiederholen , da dies nicht vom ersten Versuch an gelingtJetzt können mit 64-Bit-Kernel und Userspace verbleibende i386-Pakete entfernt werden:
Die Liste, die Sie in einer
pkgs1
Datei gespeichert haben, können Sie für weitere Anforderungen verwenden.quelle
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])
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
quelle
Cross-Upgrade (Upgrade auf eine andere Architektur) wird noch nicht unterstützt.
quelle