it-swarm-eu.dev

Jak lze přepnout 32bitovou instalaci na 64bitovou?

Mám 32bitovou instalaci Ubuntu spuštěnou na 64bitovém hardwaru. Nyní, když bylo implementováno multi-Arch , rád bych přepnul na 64-bit bez nutnosti přeinstalace OS.

Toto je jeden z živatelské příběhy adresované spec :

Shawn nainstaloval svůj systém pomocí 32bitové verze Ubuntu, ale jeho hardware je 64bitový a chce přepnout. Ručně nainstaluje verze dpkg a apt AMD64, nahrazuje verze i386 a mění, která architektura se používá jako výchozí; pak nainstaluje balíček ubuntu-minimal AMD64; pak nainstaluje balíček ubuntu-desktop AMD64. Zbývající balíčky i386 se postupem času automaticky vyměňují při aktualizaci.

Když se tam ale snažím postupovat podle pokynů, nemohu najít žádnou 64bitovou verzi dpkg nebo apt.

Dostal se tento uživatelský příběh do konečné specifikace jiným způsobem, nebo musím udělat něco jiného?

Jak lze zkrátka přepnout 32bitovou instalaci na 64bitovou?

56
David Planella

Takový přístup je velmi komplikovaný a pravděpodobně nebude mít za následek, že všechny vaše balíčky budou verzí AMD64 Namísto verze i386. V architektuře se pravděpodobně změní pouze balíčky, které skutečně dostanou upgrady, a pravděpodobně pouze v případě, že žádné jiné balíčky, které nejsou upgradovány, nespoléhají na to, že jsou architekturou i386. Protože některé balíčky neobdrží žádné aktualizace během celého cyklu podpory vašeho vydání Ubuntu, pravděpodobně nikdy nebudete mít plně systém AMD64 pomocí takové techniky. Navíc takový přístup rozhodně neexistuje.

Doporučujeme vám nahradit stávající systém Ubuntu novou 64bitovou instalací.

Pokud se však chcete pokusit o tuto techniku, budete muset ručně stáhnout soubory .deb Pro dpkg a apt. Najdete je na stránkách dpkg v Ubunt a apt v Ubunt na Launchpadu - rozbalte nejnovější verzi pod „Oneiric“ Ocelot “, která je označena jako vydání, zabezpečení a/nebo aktualizace (ale pravděpodobně nechcete, aby byla verze označena pouze navrhovanou a/nebo backports, pokud vůbec existuje). Poté stáhněte soubory .deb Označené AMD64. Konkrétně budete chtít tyto soubory: toto pro dpkg (a další uvedené také, pokud máte nainstalované tyto balíčky) a toto a toto a toto a toto a toto pro apt.

Než s těmito soubory něco uděláte, měli byste si zálohovat všechny důležité dokumenty ve vašem nainstalovaném systému Ubuntu a všechny další důležité soubory (např. Hudbu, e-knihy, videa), protože je spíše pravděpodobné, že pokus o tuto techniku ​​špatně ovlivní a nechte svůj systém Ubuntu zcela nepoužitelný.

Všechny tyto balíčky můžete nainstalovat tak, že je umístíte do složky, která neobsahuje nic jiného (předpokládejme, že se složka nazývá debs a je uvnitř vašeho adresáře Downloads), a poté spusťte tento příkaz:

Sudo dpkg -Ri ~/Downloads/debs

Po jejich instalaci samozřejmě nebudou fungovat, protože jejich spustitelné soubory jsou 64bitové a váš 32bitový systém Ubuntu používá 32bitové jádro (které bude spouštět pouze 32bitové spustitelné soubory). Ve skutečnosti možná ani nedokončí instalaci, protože mohou mít skripty po instalaci, které vyvolávají jejich neovladatelné 64bitové spustitelné soubory.

Existuje několik způsobů, jak se pokusit nainstalovat 64bitové jádro na 32bitový systém, ale všechny jsou velmi komplikované, takže místo toho doporučuji zavést z 64bitového živého CD Oneiric (které samo běží 64bitové) jádro), chroot do nainstalovaného systému Ubuntu a pomocí nedávno nainstalovaného 64bitového apt a dpkg k instalaci 64bitového jádra.

Zde jsou konkrétní pokyny, jak toho dosáhnout ... ale neberte to prosím, což znamená, že říkám, že to bude fungovat. To jsem se nepokusil. (Začal jsem chrootovat do nainstalovaných systémů Ubuntu ze živých CD a provádět správu balíčků a další operace, ale nepokusil jsem se zde navrhnout křížové architektury.)

  1. V nainstalovaném systému Ubuntu otevřete okno Terminálu (Ctrl+Alt+T) a spusťte mount | grep ' on / ' (vložením do terminálu a stiskem enter). Měli byste vidět něco jako /dev/sda2 on / type ext4 (rw,errors=remount-ro,commit=0). Část, která vás zajímá, je název zařízení před on (v tomto příkladu je to /dev/sda2). Pamatujte si to, nebo si to napište.

  2. Krok 1 vám dal název zařízení oddílu /. Pokud máte samostatný oddíl /boot, Budete muset znát také název zařízení. V takovém případě spusťte mount | grep ' on /boot '. Uvidíte něco jako /dev/sda1 on /boot type ext2 (rw). Pamatujte si nebo napište to také.

  3. Spusťte z živého CD Oneiric AMD64 (tj. 64 bitů) a vyberte „Try Ubuntu“ namísto „Install Ubuntu“.

  4. Přejděte do webového prohlížeče a ujistěte se, že je internetové připojení plně funkční. Pokud tomu tak není, nastavte ji.

  5. Otevřete okno terminálu a spusťte Sudo mount /dev/sda2 /mnt (Nahraďte /dev/sda2 Názvem zařízení, které jste dostali v kroku 1, pokud se liší).

  6. Pokud má nainstalovaný systém samostatný oddíl /boot, Spusťte Sudo mount /dev/sda1 /mnt/boot (Nahraďte /dev/sda1 Názvem zařízení, které jste dostali v kroku 2, pokud se liší).

  7. Nyní spusťte tyto příkazy pro chroot do nainstalovaného systému:

    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. Spusťte ping -c 4 launchpad.net A zjistěte, zda připojení k internetu funguje plně z chrootu. Doufáte v něco takového:

    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. Pokud se vám místo toho nepodařilo vysílat nebo přijímat pakety, musíte v chrootu nastavit připojení k internetu. Chcete-li to provést, spusťte tyto příkazy (chcete-li chroot opustit, zkopírujte příslušné konfigurační soubory ze systému živého CD do chrootu a znovu zadejte chroot):

    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
    

    Obecně byste měli tento proces zastavit, pokud dojde k chybě, nebojte se, pokud první a/nebo druhý z těchto čtyř příkazů selže, za předpokladu, že specifickým způsobem selhání je, že vám řekne, že /mnt/etc/resolv.conf (nebo /mnt/etc/hosts) neexistuje.

    Chroot zpět a zkuste to znovu:

    Sudo chroot /mnt  
    ping -c 4 launchpad.net  
    
  10. Spusťte tyto příkazy, aby bylo vaše chrootované prostředí plně připraveno k použití:

    export HOME=/root  
    export LC_ALL=C  
    
  11. Pokud jste nenainstalovali soubory .deb Pro 64bitové verze dpkg a apt, udělejte to nyní. Pokud jste je nainstalovali, ale vyskytly se chyby konfigurace, opravte je spuštěním dpkg --configure -a. (Doufejme, že to bude fungovat ... mohlo by být lepší počkat, až se pokusíte nainstalovat, dokud nebudete v prostředí živého CD, v případě instalace 64bitové dpkg při zavádění do nainstalovaného systému opustí dpkg v nepoužitelném stavu.)

  12. Po instalaci 64bitových verzí dpkg a apt za předpokladu, že budou automaticky instalovat 64bitové balíčky, můžete nyní odebrat všechna 32bitová jádra a nainstalovat 64bitové jádro . Chcete-li odebrat vaše 32bitová jádra, spusťte dpkg -l | grep linux-. Zde jsou uvedeny nainstalované balíčky, které začínají linux-. Konkrétněji se zajímáte o balíčky, které začínají jako linux-generic, linux-image, linux-server A/nebo linux-headers. Odstraňte tyto soubory pomocí apt-get purge ..., Kde je ... Nahrazen seznamem balíků, které odstraňujete, oddělených mezerami.

  13. Nyní znovu nainstalujte odebrané balíčky. (Ve skutečnosti pro balíčky, které obsahují čísla verzí v názvu balíčku, jako například linux-image-3.0.0-13-generic, Stačí nainstalovat pouze nejnovější verze balíčků.) Udělejte to spuštěním apt-get install ... Kde ... Je nahrazen seznamem balíků, které instalujete, oddělených mezerami.

  14. Aktualizujte konfiguraci zavaděče zavaděče, odpojte některá zařízení a nechte chroot:

    update-grub  
    umount /proc || umount -lf /proc  
    umount /sys  
    umount /dev/pts  
    exit  
    Sudo umount mnt/dev  
    
  15. Pokud jste spustili Sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.old A nezdařilo se, nyní spusťte Sudo cp /mnt/etc/resolv.conf.old /mnt/etc/resolv.conf.

  16. Pokud jste spustili Sudo cp /mnt/etc/hosts /mnt/etc/hosts.old A nezdařilo se, nyní spusťte Sudo cp /mnt/etc/hosts.old /mnt/etc/hosts.

  17. Pokud má nainstalovaný systém samostatný oddíl /boot, Odpojte jej: Sudo umount /mnt/boot

  18. Odpojte oddíl / Nainstalovaného systému: Sudo umount /mnt

  19. Opusťte okno Terminálu (spusťte exit), restartujte (nebo vypněte) systém živého CD a spusťte systém do nainstalovaného systému.

  20. Podívejte se, zda je systém použitelný a běží 64bitové jádro (uname -m By mělo říkat, že architektura je x86_64).

Aby to fungovalo, mohou existovat další balíčky, které musíte nainstalovat, například ia32_libs Nebo 64bitová verze libc6. U některých z nich můžete být informováni, že je potřebujete při pokusu o instalaci 64bitové verze dpkg a/nebo apt. Pro ostatní nemusíte být informováni.

(Výše uvedené pokyny pro chrootování a práci v chrootovaném prostředí jsou z velké části založeny na tento související, ale odlišný postup a také na některých Launchpad Odpovědi mých příspěvcích, zejména # 6 zde a # 6 zde . A zvláštní poděkování Cesium za zdůraznění, že 64bitové dpkg a apt spustitelné soubory se nespustí v systému s 32bitovým jádrem.)

38
Eliah Kagan

Jak je uvedeno výše, udělal jsem:

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

Fungovalo to. V Ubuntu 12.04 mohu provozovat svou 32bitovou uživatelskou síť s 64bitovým jádrem.

26
VJ-

Přestože je tato otázka podobná Je možné „upgradovat“ z 32bitové na 64bitovou instalaci? (Pokud jste si ji předtím nečetli, vyzývám vás, abyste ji vyzkoušeli. Odpovědi za předpokladu, že je dobrá. ) Doporučuji také přečíst následující odkazy:

Pro lepší výkon bych si měl nainstalovat 32bitový nebo 64bitový?

Jak mohu přepnout 32bitovou instalaci na 64bitovou?

Jaké jsou rozdíly mezi 32bitovými a 64bitovými a které si mám vybrat?

Je to možné: Ano

Je to snadné: NE!

Pokud máte problém s pamětí, měli byste vědět, že Ubuntu 32 Bit umí číst více než 4 GB RAM (až 64 GB)). Používejte proto nejnovější verzi Ubuntu 32 Bit s počítačem, který má 32bitovou nebo 64bitovou architekturu a vkládání více RAM nebude problém. Prostě přečte extra RAM) a bude fungovat.

6
Luis Alvarado

Tyto pokyny způsobí spuštění systému pomocí 64bitového jádra, ale nemění většinu programů userland.

Po aktualizaci systému pomocí 64bitového procesoru jsem také chtěl nainstalovat 64bitové jádro do mého 32bitového serveru 14.04.2 Ubuntu (kódové označení: Trusty). Za tímto účelem jsem zadal následující příkazy jako uživatel root :

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

Poznámky:

  1. To by mohlo odstranit vaše 32bitové jádro jako důvěryhodné - ve výchozím nastavení - je dodáváno s aktualizovaným jádrem (jádro z utopického), viz 14.04 Poznámky k verzi . V tomto případě je vaše současné jádro v konfliktu s 64-bitovým jádrem, které má být nainstalováno, a proto bude odstraněno. Pokud se vám tento nápad nelíbí, můžete namísto toho vyzkoušet starší 64bitový balíček jádra „linux-generic-lts-trusty: AMD64“.

  2. Příkaz "--add-architecure" je nezbytný. Bez něj systém balíků nepodporuje balíčky z různých architektur, viz Multiarch-HowTo

  3. Chcete-li zjistit, co apt-get udělá váš systém, spusťte jej s volbami -Vs který umožňuje "podrobný simulační režim". Tím se vytisknou všechny balíčky k instalaci a odstranění.

  4. To, zda zavádíte systém pomocí nového jádra, závisí na konfiguraci grub. Jako uživatel root spusťte update-grub provede aktualizaci grubu a vytiskne aktuální konfiguraci bootování. První obrázek v seznamu bude zaveden jako výchozí.

  5. Pro výběr jiného obrazu jádra jsem odstranil řádek GRUB_HIDDEN_TIMEOUT=0 z /etc/default/grub a běžel jako uživatel root update-grub. V době spuštění můžete nyní vybrat jiné jádro (máte 10 sekund na stisknutí libovolné klávesy, jinak grub bude pokračovat s výchozím jádrem).

  6. Odpověď s největším počtem hlasů je z roku 2011 a podle mého názoru je beznadějně zastaralá. Multiarch vám umožňuje instalovat balíčky knihoven z více architektur na stejný počítač bez větších povyku.

5
Daniel K.

Tyto odpovědi jsou poněkud zastaralé. Křížové hodnocení je nyní pro Debian dokumentováno na wiki Debian , ale stále se to nedoporučuje.

Instalace jádra z jiné architektury je nyní stejně snadná, jak je zde popsáno, ale nový 'apt' nerozezná balíčky z předchozí architektury, takže všechny jeho klientské rozhraní může vykazovat spoustu nefunkčních balíčků. To vyžaduje buď změnu všech závislostí na jiné architektuře, nebo vrácení apt a dpkg na 32-bit.

Nejlepším přístupem tedy může být první uložení výsledků dpkg --get-selections, strip: i386 z toho a stáhněte si balíček AMD64 pro každou závislost do mezipaměti:

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

V nejlepším případě to bude pravděpodobně pomalé a časově náročné řešení závislostí.

5
Cedric Knight

Možná, že když čelím stejnému problému, bude to fungovat, je to, co jsem plánoval udělat:

Získat 64bitovou verzi operačního systému, nainstalovat do oddílu, po dokončení zkopírovat dokumenty a další věci z 32bitové instalace, když je vše bezpečně zkopírováno, můžete zbytek jednotky naformátovat a použít.

2
ubuntufan

Ano, linie zahraniční architektury je rozhodně nezbytná pro instalaci JAKÝCHKOLIV křížových archů. Ale poté udělejte, jak uvedlo několik dalších uživatelů:

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

To by mělo udělat asi ...

2
realkstrawn93

Můj recept na Ubuntu 16.04 Xenial, testovaný na čerstvě nainstalovaném 32bitovém Ubuntu VM se standardním systémem a serverem SSH, ale bez GUI:

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

(jinak by nainstaloval thermald: AMD64 a nedokázal jej restartovat pod 32bitovým jádrem)

reboot

po restartu pomocí 64bitového jádra:

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

napište „Ano, udělej, jak říkám!“ na požádání to bude bezpečné

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

ve výše uvedené smyčce odstraníme soubory .deb, které byly úspěšně nainstalovány a mají stav „ii“ ze seznamu dpkg.

musíme opakovat dpkg -i běží, protože neuspěje od prvního pokusu

reboot

nyní lze pomocí 64bitového jádra i uživatelského prostoru odebrat zbývající balíčky i386:

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

seznam, který jste uložili do pkgs1 soubor, který můžete použít pro vaše další potřeby.

2
Wladimir Mutel

Crossgrading (upgrade na jinou architekturu) zatím není podporován.

1
tumbleweed

Dobrá otázka. Měl jsem lov kolem a kromě uživatelského příběhu, který citujete, nemohu najít žádné podrobnosti o tom, jak to udělat. Celá dokumentace ukazuje, že se jedná pouze o provoz 32bitových aplikací na již 64bitovém OS.

Pokud však chcete experimentovat, můžete zkusit následující (odvozené z mého odkazu na [1])

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

Myslím, že budete muset začít s jádrem AMD64, protože 32bitový nebude schopen spouštět žádné 64bitové binární soubory. 64bitový by však měl spustit 32bitové binární soubory (pokud jsou nainstalovány ia32-libs?).

Pokud máte 64bitové jádro nainstalováno a zaváděno, můžete odtamtud nainstalovat apt: AMD64, pak následovat uživatelský příběh, jak byl dříve citován, ubuntu-minimal, ubuntu-desktop atd.

Po instalaci apt: AMD64 si myslím, že můžete odstranit linii zahraniční architektury, protože jste v tomto bodě v podstatě přepnuli.

Zřeknutí se odpovědnosti: Nemám žádný 32bitový systém, který bych testoval, takže je to všechno hádání. Hodně štěstí!

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

1
Caesium