Mam 32-bitową instalację Ubuntu działającą na 64-bitowym sprzęcie. Teraz, gdy zaimplementowano multi-arch , chciałbym przejść na wersję 64-bitową bez konieczności ponownej instalacji systemu operacyjnego.
To jedna z historii użytkowników, do których odnosi się specyfikacja :
Shawn zainstalował swój system za pomocą 32-bitowej wersji Ubuntu, ale jego sprzęt jest 64-bitowy i chce się przełączyć. Ręcznie instaluje wersje amd64 programu dpkg i apt, zastępując wersje i386 i zmieniając domyślną architekturę; następnie instaluje pakiet minimalny ubdu amd64; następnie instaluje pakiet ubuntu-desktop amd64. Z czasem pozostałe pakiety i386 są automatycznie zastępowane podczas aktualizacji.
Jednak, gdy próbuję postępować zgodnie z instrukcjami tam zawartymi, nie mogę znaleźć żadnej 64-bitowej wersji dpkg lub apt.
Czy ta historia użytkownika została zaimplementowana w inny sposób w ostatecznej specyfikacji, czy też muszę zrobić coś inaczej?
Krótko mówiąc, w jaki sposób mogę przełączyć moją instalację 32-bitową na 64-bitową?
Odpowiedzi:
Takie podejście jest bardzo skomplikowane i jest mało prawdopodobne, aby wszystkie pakiety były
amd64
wersjami zamiasti386
wersji. Tylko pakiety, które faktycznie otrzymują uaktualnienia, prawdopodobnie zostaną zmienione w architekturze i prawdopodobnie tylko wtedy, gdy żadne inne pakiety, które nie zostaną uaktualnione, będą polegać na swojeji386
architekturze. Ponieważ niektóre pakiety nie otrzymają żadnych aktualizacji przez cały cykl wsparcia twojej wersji Ubuntu, prawdopodobnie nigdy nie będziesz mieć w pełniamd64
systemu używającego takiej techniki. Co więcej, z pewnością nie ma oficjalnego poparcia dla takiego podejścia.Zaleca się zastąpienie istniejącego systemu Ubuntu nową, 64-bitową instalacją.
Jeśli jednak chcesz wypróbować tę technikę, musisz ręcznie pobrać
.deb
pliki dladpkg
iapt
. Można je znaleźć na stronachdpkg
Ubuntu iapt
Ubuntu na Launchpad - rozwiń najnowszą wersję w „Oneiric Ocelot” oznaczonym jako wydanie, bezpieczeństwo i / lub aktualizacje (ale prawdopodobnie nie chcesz wersji oznaczonej tylko proponowane i / lub backporty, jeśli takie istnieją). Następnie pobierz.deb
pliki oznaczoneamd64
. W szczególności pliki, które chcesz, to: ten dladpkg
(i inne też wymienione, jeśli masz zainstalowane te pakiety) oraz ten i ten i ten i teni to dlaapt
.Zanim cokolwiek zrobisz z tymi plikami, powinieneś wykonać kopię zapasową wszystkich ważnych dokumentów w zainstalowanym systemie Ubuntu i wszelkich innych ważnych plikach (np. Muzyka, ebooki, filmy), ponieważ jest prawdopodobne, że próba zastosowania tej techniki źle się przydarzy i pozostaw swój system Ubuntu całkowicie bezużyteczny.
Możesz zainstalować wszystkie te pakiety, umieszczając je w folderze, który nie zawiera nic innego (załóżmy, że folder jest wywoływany
debs
i znajduje się wDownloads
katalogu), a następnie uruchom następujące polecenie:Oczywiście, po ich zainstalowaniu, tak naprawdę nie będą działać, ponieważ ich pliki wykonywalne są 64-bitowe, a na twoim 32-bitowym systemie Ubuntu działa jądro 32-bitowe (które będzie uruchamiać tylko 32-bitowe pliki wykonywalne). W rzeczywistości mogą nawet nie kończyć instalacji, ponieważ mogą mieć skrypty poinstalacyjne, które wywołują ich niemożliwe do uruchomienia 64-bitowe pliki wykonywalne.
Istnieją różne sposoby próby zainstalowania 64-bitowego jądra w systemie 32-bitowym, ale wszystkie są bardzo skomplikowane, dlatego zamiast tego zalecam uruchomienie z 64-bitowego dysku CD Live Oneiric (który sam uruchamia 64-bitowy kernel), chroot do zainstalowanym systemem Ubuntu i użyć niedawno zainstalowany 64-bitowy
apt
idpkg
zainstalowanie jądra 64-bitowego.Oto szczegółowe instrukcje, jak to zrobić ... ale proszę nie brać tego pod uwagę, że mówię, że zadziała. Nie próbowałem tego. (Zrobiłem chrootowanie do zainstalowanych systemów Ubuntu z Live CD i wykonałem zarządzanie pakietami i inne operacje, ale nie próbowałem sugerowanych tutaj operacji między architekturami.)
W zainstalowanym systemie Ubuntu otwórz okno Terminal ( Ctrl+ Alt+ T) i uruchom
mount | grep ' on / '
(wklejając je do Terminalu i naciskając Enter). Powinieneś zobaczyć coś takiego/dev/sda2 on / type ext4 (rw,errors=remount-ro,commit=0)
. Interesuje Cię wcześniej nazwa urządzeniaon
(w tym przykładzie to/dev/sda2
). Pamiętaj o tym lub zapisz to.Krok 1 dał nazwę urządzenia
/
partycji. Jeśli masz oddzielną/boot
partycję, musisz również znać nazwę tego urządzenia. W takim razie uruchommount | grep ' on /boot '
. Zobaczysz coś takiego/dev/sda1 on /boot type ext2 (rw)
. Pamiętaj też lub zapisz to.Uruchom komputer z Oneiric amd64 (tj. 64-bitowego) live CD i wybierz „Wypróbuj Ubuntu” zamiast „Zainstaluj Ubuntu”.
Przejdź do przeglądarki internetowej i upewnij się, że łączność internetowa jest w pełni funkcjonalna. Jeśli nie jest, skonfiguruj go.
Otwórz okno terminala i uruchom
sudo mount /dev/sda2 /mnt
(zamień/dev/sda2
na nazwę urządzenia otrzymaną w kroku 1, jeśli jest inna).Jeśli zainstalowany system ma osobną
/boot
partycję, uruchomsudo mount /dev/sda1 /mnt/boot
(zamień/dev/sda1
na nazwę urządzenia otrzymaną w kroku 2, jeśli jest inna).Teraz uruchom następujące polecenia, aby wykonać chroot w zainstalowanym systemie:
Uruchom,
ping -c 4 launchpad.net
aby sprawdzić, czy połączenie internetowe działa w pełni z chroot. Masz nadzieję na coś takiego:Jeśli zamiast tego nie możesz przesyłać ani odbierać pakietów, musisz skonfigurować połączenie internetowe w chroot. Aby to zrobić, uruchom następujące polecenia (aby wyjść z chroot, skopiuj odpowiednie pliki konfiguracyjne z systemu Live CD do chroot i ponownie wprowadź chroot):
Chociaż ogólnie powinieneś zatrzymać ten proces, jeśli wystąpi błąd, nie martw się, jeśli pierwsze i / lub drugie z tych czterech poleceń zawiodą, pod warunkiem, że konkretny sposób, w jaki zawodzi, to informowanie, że
/mnt/etc/resolv.conf
(lub/mnt/etc/hosts
) nie istnieje .Chroot z powrotem i spróbuj ponownie:
Uruchom następujące polecenia, aby przygotować środowisko chrootowane do użycia:
Jeśli nie zainstalowałeś
.deb
plików dla 64-bitowych wersjidpkg
iapt
, zrób to teraz. Jeśli je zainstalowałeś, ale wystąpiły błędy konfiguracji, uruchomdpkg --configure -a
je , aby je naprawić. (Mam nadzieję, że to zadziała ... może być lepiej poczekać, aby spróbować je zainstalować, dopóki nie znajdziesz się w środowisku Live CD, na wypadek gdyby instalacja 64-bitowegodpkg
systemu podczas rozruchu w zainstalowanym systemiedpkg
pozostała bezużyteczna).Po zainstalowaniu 64-bitowych wersji
dpkg
iapt
przy założeniu, że będą one automatycznie instalować pakiety 64-bitowe, możesz teraz usunąć wszystkie swoje 32-bitowe jądra i zainstalować 64-bitowe jądro. Aby usunąć 32-bitowe jądra, uruchomdpkg -l | grep linux-
. Zawiera listę zainstalowanych pakietów zaczynających się odlinux-
. Jesteś zainteresowany dokładniej w pakietach, które rozpoczynają się jaklinux-generic
,linux-image
,linux-server
i / lublinux-headers
. Usuń te pliki,apt-get purge ...
gdzie gdzie...
jest zastąpione rozdzieloną spacjami listą usuwanych pakietów.Teraz ponownie zainstaluj usunięte pakiety. (W rzeczywistości, w przypadku pakietów zawierających numery wersji w nazwie pakietu, na przykład
linux-image-3.0.0-13-generic
wystarczy zainstalować tylko najnowsze wersje wersji pakietu.) Zrób to, uruchamiając program,apt-get install ...
gdzie...
jest zastąpiony rozdzielaną spacjami listą instalowanych pakietów .Zaktualizuj konfigurację modułu ładującego, odmontuj niektóre urządzenia i opuść chroot:
Jeśli uciekłeś,
sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.old
a to nie zawiodło, to teraz uruchomsudo cp /mnt/etc/resolv.conf.old /mnt/etc/resolv.conf
.Jeśli uciekłeś,
sudo cp /mnt/etc/hosts /mnt/etc/hosts.old
a to nie zawiodło, to teraz uruchomsudo cp /mnt/etc/hosts.old /mnt/etc/hosts
.Jeśli zainstalowany system ma osobną
/boot
partycję, odmontuj:sudo umount /mnt/boot
Odmontuj zainstalowaną
/
partycję systemową :sudo umount /mnt
Opuść okno Terminala (uruchom
exit
), a następnie uruchom ponownie (lub zamknij) system Live CD i uruchom system.Sprawdź, czy system jest użyteczny i działa na 64-bitowym jądrze (
uname -m
należy powiedzieć, że architektura jestx86_64
).Mogą się przydać dodatkowe pakiety, takie jak
ia32_libs
wersja 64-bitowalibc6
, aby to działało. W przypadku niektórych z nich możesz zostać poinformowany, że potrzebujesz ich podczas próby zainstalowania 64-bitowej wersjidpkg
i / lubapt
. W przypadku innych możesz nie zostać poinformowany.(Powyższe instrukcje dotyczące chrootowania i działania w środowisku chroot oparte są w znacznej części na tej pokrewnej, ale odmiennej procedurze, a także na niektórych moich postach Launchpad Answers , szczególnie tutaj # 6 i tutaj 6. Specjalne podziękowania dla Cesium za wskazanie że 64-bitowe
dpkg
iapt
pliki wykonywalne nie będą działać w systemie z 32-bitowym jądrem.)źródło
apt
idpkg
nadal są 32-bitowe i (prawdopodobnie) odmówią instalacji 64-bitowego pakietu jądra. (Zbudowanie jądra ze źródła i użycie kompilacji krzyżowej działałoby, ale jest to bardzo skomplikowane i nie chcę go polecać. Jestem pewien, że istnieje lepszy, łatwiejszy sposób. Jeśli go znasz, nie krępuj się edytować mój lub swój post lub komentarz na ten temat.)Jak podano powyżej, zrobiłem:
Zadziałało. Jestem w stanie uruchomić moją 32-bitową przestrzeń użytkownika z 64-bitowym jądrem w Ubuntu 12.04.
źródło
sudo dpkg --add-architecture amd64
zamiast tego użyj . Będzie krzyczeć na ciebie, jeśli zrobisz to w inny sposób. Musiałem to zrobić, aby móc wykonać chroot do instalacji 64-bitowej z (wcześniej) wersji 32-bitowej i działało dokładnie tak, jak oczekiwano, bez żadnych problemów.linux-image-generic:amd64
na Ubuntu 16.04. Działa dobrze, nawet bez dwóch ostatnich poleceń.Chociaż pytanie jest podobne do Czy można „uaktualnić” instalację z wersji 32-bitowej do wersji 64-bitowej? (Jeśli nie przeczytałeś go wcześniej, zachęcam do wypróbowania go. Podana odpowiedź jest dobra.) Polecam również przeczytanie następujących linków:
Czy w celu uzyskania lepszej wydajności należy zainstalować wersję 32-bitową czy 64-bitową?
Jak mogę przełączyć instalację 32-bitową na 64-bitową?
Jakie są różnice między wersją 32-bitową a 64-bitową i którą wybrać?
Czy to możliwe: Tak
Czy to proste: NIE!
Jeśli masz problem z pamięcią, powinieneś wiedzieć, że Ubuntu 32 Bit może odczytać więcej niż 4 GB pamięci RAM (do 64 GB). Zatem używanie najnowszej 32-bitowej wersji Ubuntu z komputerem z architekturą 32-bitową lub 64-bitową i włożenie większej ilości pamięci RAM nie będzie problemem. Po prostu odczytuje dodatkową pamięć RAM i działa.
źródło
Te odpowiedzi są nieco nieaktualne. Cross-grading jest teraz udokumentowany dla Debiana na wiki Debiana , ale nadal nie jest zalecany.
Instalowanie jądra z innej architektury jest teraz tak proste, jak tam opisano, ale nowy „apt” nie rozpozna pakietów z poprzedniej architektury, więc wszystkie jego interfejsy mogą zgłaszać wiele uszkodzonych pakietów. Wymaga to albo zmiany wszystkich zależności na inną architekturę, albo przywrócenia apt i dpkg do wersji 32-bitowej.
Najlepszym rozwiązaniem może być najpierw zapisanie wyników
dpkg --get-selections
, usunięcie: i386 z tego i pobranie pakietu amd64 dla każdej zależności do pamięci podręcznej:W najlepszym przypadku rozwiązanie zależności może być powolne i czasochłonne.
źródło
Te instrukcje powodują, że system uruchamia się z 64-bitowym jądrem, ale nie zmienia większości programów użytkownika.
Po uaktualnieniu systemu do 64-bitowego procesora chciałem również zainstalować 64-bitowe jądro na moim 32-bitowym Ubuntu 14.04.2 (nazwa kodowa: Trusty). Aby to zrobić, wprowadziłem następujące polecenia jako użytkownik root :
Uwagi:
To może usunąć twoje 32-bitowe jądro, ponieważ zaufane - domyślnie - jest dostarczane ze zaktualizowanym jądrem (jądro z utopic), patrz 14.04 Informacje o wersji . W takim przypadku bieżące jądro powoduje konflikt z 64-bitowym jądrem, które ma zostać zainstalowane, i dlatego zostaje usunięte. Jeśli nie podoba ci się ten pomysł, możesz wypróbować starszy 64-bitowy pakiet jądra „linux-generic-lts-trusty: amd64”.
Niezbędne jest polecenie „--add-architecure”. Bez tego system pakietów nie obsługuje pakietów z różnych architektur, patrz Multiarch-HowTo
Aby zobaczyć, co
apt-get
zrobi z twoim systemem, uruchom go z opcjami,-Vs
które włączają „pełny tryb symulacji”. Spowoduje to wydrukowanie wszystkich pakietów do zainstalowania i usunięcia.To, czy system uruchamia się przy użyciu nowego jądra, zależy od
grub
konfiguracji. Jako użytkownik root uruchom,update-grub
aby zaktualizować GRUB i wydrukować bieżącą konfigurację rozruchową. Pierwszy obraz z listy zostanie uruchomiony domyślnie.Aby wybrać inny obraz jądra, usunąłem linii
GRUB_HIDDEN_TIMEOUT=0
od/etc/default/grub
i prowadził jako użytkownik rootupdate-grub
. W czasie uruchamiania możesz teraz wybrać inne jądro (masz 10 sekund na naciśnięcie dowolnego klawisza, w przeciwnym razie GRUB będzie kontynuowany z domyślnym jądrem).Odpowiedź z największą liczbą głosów pochodzi z 2011 roku i moim zdaniem jest beznadziejnie przestarzała. Multiarch pozwala instalować pakiety bibliotek z wielu architektur na tym samym komputerze bez zbędnych ceregieli.
źródło
apt-get install linux-generic:amd64
co nie musi być bardzo ważne dla eksperymentu)! Jeśli przejdę do opcji rozruchowej „ratowanie”, system uruchomi się, ale X nie użyjenouveau
sterownika wideo i innych rzeczy. Jeśli uruchomię się normalnie, w pewnym momencie uruchamianie przerywa się, a system uruchamia się ponownie. (Ale po raz pierwszy udało mi się pomyślnie uruchomić.) Nie jestem pewien, czy problem dotyczy sterownika wideo podczas „normalnego” rozruchu, czy coś innego.Być może, ponieważ napotykam ten sam problem, to zadziała, to właśnie zamierzałem zrobić:
Uzyskaj 64-bitową wersję systemu operacyjnego, zainstaluj na partycji, po zakończeniu skopiuj dokumenty i inne rzeczy z instalacji 32-bitowej, gdy wszystko zostanie bezpiecznie skopiowane, możesz sformatować resztę dysku i użyć jej.
źródło
Tak, linia architektury zagranicznej jest zdecydowanie niezbędna do instalowania DOWOLNYCH pakietów cross-arch. Ale potem wykonaj jak wspomniano kilku innych użytkowników:
To powinno po prostu to zrobić ...
źródło
Mój przepis na Ubuntu 16.04 Xenial, przetestowany na świeżo zainstalowanej 32-bitowej maszynie Wirtualnej Ubuntu ze standardowym systemem i serwerem SSH, ale bez GUI:
(w przeciwnym razie zainstalowałby thermald: amd64 i nie zrestartowałby go pod jądrem 32-bitowym)
po ponownym uruchomieniu z 64-bitowym jądrem:
wpisz „Tak, rób jak mówię!” zapytany, będzie bezpieczny
w powyższej pętli usuwamy pliki .deb, które zostały pomyślnie zainstalowane i mają status „ii” na liście dpkg.
musimy powtarzać
dpkg -i
przebiegi, ponieważ nie udaje się to od pierwszej próbyteraz, zarówno z 64-bitowym jądrem, jak i przestrzenią użytkownika, pozostałe pakiety i386 można usunąć:
lista zapisana w
pkgs1
pliku, której możesz użyć do swoich dalszych potrzeb.źródło
Dobre pytanie. Miałem polowanie i poza cytowaną przez ciebie historią użytkownika, nie mogę znaleźć żadnych szczegółów, jak to zrobić. Cała dokumentacja wskazuje, że służy tylko do uruchamiania aplikacji 32-bitowych w już 64-bitowym systemie operacyjnym.
Jeśli jednak chcesz eksperymentować, możesz wypróbować następujące (pochodzące z mojego linku w [1])
Myślę, że będziesz musiał zacząć od jądra amd64, ponieważ 32-bitowe nie będzie w stanie uruchomić żadnych 64-bitowych plików binarnych. Jednak w wersji 64-bitowej należy uruchomić 32-bitowe pliki binarne (jeśli jest zainstalowany program ia32-libs?).
Jeśli zainstalujesz i uruchomisz 64-bitowe jądro, możesz przejść stamtąd, aby zainstalować apt: amd64, a następnie postępować zgodnie z historią użytkownika, jak wcześniej cytowano, minimalną liczbą Ubuntu, pulpitem Ubuntu itp.
Po zainstalowaniu apt: amd64, myślę, że możesz usunąć linię architektury obcej, ponieważ zasadniczo przeszedłeś w tym momencie.
Oświadczenie: Nie mam 32-bitowego systemu do przetestowania, więc to tylko zgadywanie. Powodzenia!
[1] https://wiki.ubuntu.com/OneiricOcelot/TechnicalOverview/Beta1#Improved_handling_of_32-bit_compatibility_on_amd64_systems
źródło
Crossgrading (aktualizacja do innej architektury) nie jest jeszcze obsługiwany.
źródło