Como posso mudar uma instalação de 32 bits para uma de 64 bits?

52

Eu tenho uma instalação do Ubuntu de 32 bits rodando em hardware de 64 bits. Agora que o multi-arch foi implementado , eu gostaria de mudar para 64 bits sem precisar reinstalar o sistema operacional. / p>

Esta é uma das histórias de usuários abordadas pela especificação :

Shawn instalou seu sistema usando a versão de 32 bits do Ubuntu, mas seu hardware é de 64 bits e ele quer mudar. Ele instala manualmente as versões amd64 do dpkg e do apt, substituindo as versões do i386 e alterando qual arquitetura é usada como padrão; então ele instala o pacote amd64 ubuntu-minimal; então ele instala o pacote amd64 ubuntu-desktop. Com o tempo, os pacotes i386 restantes são substituídos automaticamente na atualização.

No entanto, ao tentar seguir as instruções, não consigo encontrar nenhuma versão de 64 bits do dpkg ou do apt.

Essa história de usuário foi implementada de maneira diferente na especificação final ou preciso fazer algo diferente?

Em resumo, como posso mudar minha instalação de 32 bits para 64 bits?

    
por David Planella 22.11.2011 / 20:34

10 respostas

35

Essa abordagem é muito complicada, e é improvável que isso resulte em todos os seus pacotes sendo a versão amd64 em vez da versão i386 . Somente os pacotes que realmente recebem atualizações provavelmente serão alterados na arquitetura e, provavelmente, apenas se nenhum outro pacote não for atualizado depender de que eles sejam da arquitetura i386 . Uma vez que alguns pacotes não receberão qualquer atualização durante todo o ciclo de suporte da sua versão do Ubuntu, você provavelmente nunca terá um sistema amd64 usando essa técnica. Além disso, certamente não há apoio oficial para tal abordagem.

Você seria aconselhado a substituir seu sistema Ubuntu existente por uma nova instalação de 64 bits.

No entanto, se você quiser tentar essa técnica, terá que manualmente fazer o download dos arquivos .deb para dpkg e apt . Você pode encontrá-los no dpkg no Ubuntu e apt no Ubuntu páginas no Launchpad - expanda a versão mais recente em" Oneiric Ocelot "que está marcada como lançamento, segurança e / ou atualizações (mas você provavelmente não usa) t quer uma versão marcada apenas proposta e / ou backports, se é que existe uma). Em seguida, baixe os arquivos .deb marcados com amd64 . Especificamente, os arquivos que você deseja são: este para dpkg (e os outros listados, também, se você tiver esses pacotes instalados) e e isto e este e isso e isto para apt .

Antes de fazer qualquer coisa com esses arquivos, você deve fazer backup de todos os documentos importantes do sistema Ubuntu instalado e de quaisquer outros arquivos importantes (por exemplo, músicas, e-books, vídeos), porque é bastante provável que esta técnica seja tentada. vai sair mal e deixar o seu sistema Ubuntu completamente inutilizável.

Você pode instalar todos esses pacotes colocando-os em uma pasta que não contém mais nada (suponha que a pasta seja chamada debs e esteja dentro do diretório Downloads ) e, em seguida, execute este comando:

sudo dpkg -Ri ~/Downloads/debs

É claro que, uma vez instalados, eles não serão executados, porque seus executáveis ​​são de 64 bits e seu sistema Ubuntu de 32 bits está executando um kernel de 32 bits (que só executará executáveis ​​de 32 bits). ). Na verdade, eles podem nem mesmo concluir a instalação, pois podem ter scripts de pós-instalação que invocam seus executáveis ​​de 64 bits irrecuperáveis.

Existem várias maneiras de tentar instalar um kernel de 64 bits em um sistema de 32 bits, mas elas são extremamente complicadas, então eu recomendo que você inicialize a partir de um CD live Oneiric de 64 bits (que por sua vez executa um Kernel de 64 bits), chroot no sistema Ubuntu instalado e use o co_de% e% de 64 bits instalado recentemente co_de% para instalar um kernel de 64 bits.

Aqui estão instruções específicas para fazer isso ... mas por favor, não leve isso para dizer que estou dizendo que vai funcionar. Eu não tentei isso. (Eu fiz chroot em sistemas Ubuntu instalados a partir de live CD's e executei gerenciamento de pacotes e outras operações, mas não tentei as operações de arquitetura cruzada sugeridas aqui.)

  1. No seu sistema Ubuntu instalado, abra uma janela do Terminal ( Ctrl + Alt + T ) e execute apt ( colando-o no Terminal e pressionando enter). Você deve ver algo como dpkg . A parte em que você está interessado é o nome do dispositivo antes de mount | grep ' on / ' (neste exemplo, é /dev/sda2 on / type ext4 (rw,errors=remount-ro,commit=0) ). Lembre-se disso ou anote-o.

  2. O passo 1 deu-lhe o nome do dispositivo da partição on . Se você tiver uma partição /dev/sda2 separada, precisará saber também o nome do dispositivo. Então, nesse caso, execute / . Você verá algo como /boot . Lembre-se ou anote isso também.

  3. Inicialize a partir de um CD live oneiric amd64 (ou seja, 64 bits) e selecione "Try Ubuntu" em vez de "Install Ubuntu".

  4. Entre em um navegador da Web e verifique se a conectividade com a Internet está totalmente funcional. Se não for, configure-o.

  5. Abra uma janela do Terminal e execute mount | grep ' on /boot ' (substitua /dev/sda1 on /boot type ext2 (rw) pelo nome do dispositivo que você obteve na etapa 1, se diferente).

  6. Se o seu sistema instalado tiver uma partição sudo mount /dev/sda2 /mnt separada, execute /dev/sda2 (substitua /boot pelo nome do dispositivo que você obteve na etapa 2, se diferente).

  7. Agora, execute esses comandos para chroot no seu sistema instalado:

    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. Execute sudo mount /dev/sda1 /mnt/boot para ver se a conectividade com a Internet funciona totalmente no chroot. Você está esperando por algo assim:

    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. Se, em vez disso, você não conseguir transmitir ou receber pacotes, será necessário configurar a conectividade com a Internet no chroot. Para fazer isso, execute estes comandos (para deixar o chroot, copie os arquivos de configuração relevantes do sistema live CD para o chroot e entre novamente no 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
    

    Embora geralmente você deva interromper este processo caso ocorra um erro, não se preocupe se o primeiro e / ou segundo desses quatro comandos falharem, desde que a maneira específica em que ele falhar seja informando que /dev/sda1 (ou ping -c 4 launchpad.net ) não existe.

    O chroot volta e tenta novamente:

    sudo chroot /mnt  
    ping -c 4 launchpad.net  
    
  10. Execute estes comandos para tornar seu ambiente chrooted totalmente pronto para uso:

    export HOME=/root  
    export LC_ALL=C  
    
  11. Se você não tiver instalado os arquivos /mnt/etc/resolv.conf para as versões de 64 bits de /mnt/etc/hosts e .deb , faça o agora. Se você os instalou, mas houve erros de configuração, execute dpkg para corrigi-los. (Espero que isso funcione ... talvez seja melhor esperar para tentar instalá-los até que você esteja no ambiente de CD ao vivo, caso a instalação do apt de 64 bits durante a inicialização no sistema instalado deixe dpkg --configure -a em um estado inutilizável.)

  12. Com as versões de 64 bits de dpkg e dpkg instaladas, supondo que elas instalem pacotes de 64 bits automaticamente, agora você pode remover todos os seus kernels de 32 bits e instalar um kernel de 64 bits . Para remover seus kernels de 32 bits, execute dpkg . Isso lista os pacotes instalados que começam com apt . Você está mais interessado especificamente em pacotes que começam como dpkg -l | grep linux- , linux- , linux-generic e / ou linux-image . Remova esses arquivos com linux-server , em que linux-headers é substituído por uma lista separada por espaço dos pacotes que você está removendo.

  13. Agora reinstale os pacotes removidos. (Na verdade, para pacotes que contêm números de versão no nome do pacote, como por exemplo apt-get purge ... , você só precisa instalar os nomes dos pacotes com versões mais recentes.) Execute isso executando ... em que linux-image-3.0.0-13-generic é substituído por um espaço. lista separada dos pacotes que você está instalando.

  14. Atualize a configuração do gerenciador de inicialização, desmonte alguns dispositivos e deixe o chroot:

    update-grub  
    umount /proc || umount -lf /proc  
    umount /sys  
    umount /dev/pts  
    exit  
    sudo umount mnt/dev  
    
  15. Se você executou apt-get install ... e ele não falhou, agora execute ... .

  16. Se você executou sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.old e ele não falhou, agora execute sudo cp /mnt/etc/resolv.conf.old /mnt/etc/resolv.conf .

  17. Se o seu sistema instalado tiver uma partição sudo cp /mnt/etc/hosts /mnt/etc/hosts.old separada, desmonte-a: sudo cp /mnt/etc/hosts.old /mnt/etc/hosts

  18. Desmonte a partição /boot do seu sistema instalado: sudo umount /mnt/boot

  19. Deixe a janela do Terminal (execute / ), reinicialize (ou desligue) o sistema do live CD e inicie no sistema instalado.

  20. Veja se o sistema é utilizável e está executando um kernel de 64 bits ( sudo umount /mnt deve dizer que a arquitetura é exit ).

Pode haver pacotes adicionais que você precisa instalar, como uname -m e / ou a versão de 64 bits de x86_64 , para que isso funcione. Para alguns deles, você pode ser informado de que precisa deles ao tentar instalar a versão de 64 bits de ia32_libs e / ou libc6 . Para outros, você pode não ser informado.

(As instruções acima para chrooting e operação no ambiente chrooted são baseadas em parte significativa em este procedimento relacionado, mas diferente e também em algumas postagens de Launchpad Answers , especialmente # 6 aqui e # 6 aqui . E agradecimentos especiais para Cesium por apontar que os executáveis ​​de dpkg e apt de 64 bits não será executado em um sistema executando um kernel de 32 bits.)

    
por Eliah Kagan 22.11.2011 / 20:53
24

Como dito acima, eu fiz:

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

Funcionou. Eu sou capaz de executar meu 32-bit userland com kernel de 64 bits, no Ubuntu 12,04.

    
por VJ- 19.06.2012 / 02:05
6

Embora a pergunta seja semelhante a É possível" atualizar "de uma instalação de 32 bits para uma de 64 bits? (Se você não leu antes, eu sugiro que você tente. A resposta fornecida é boa.) Eu também recomendo lendo os seguintes links:

Para um melhor desempenho devo instalar 32 bits ou 64 bits?

Como posso alternar uma instalação de 32 bits para uma de 64 bits?

Quais são as diferenças entre 32 bits e 64 bits e quais devo escolher?

É possível: sim

É fácil: NÃO!

Se o seu problema é com a memória, então você deve saber que o Ubuntu 32 Bit pode ler mais de 4GB de RAM (até 64 GB). Portanto, usar a versão mais recente do Ubuntu 32 Bit com um computador que tenha arquitetura de 32 bits ou 64 bits e colocar mais memória RAM não será um problema. Ele simplesmente lerá a RAM extra e funcionará.

    
por Luis Alvarado 25.03.2013 / 03:29
4

Essas instruções fazem o seu sistema inicializar com um kernel de 64 bits, mas não altera a maioria dos programas de usuário.

Após atualizar meu sistema com CPU de 64 bits, eu também queria instalar um kernel de 64 bits no meu Ubuntu 14.04.2 de 32 bits (codinome: Trusty). Para fazer isso eu digitei os seguintes comandos como usuário root :

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

Notas:

  1. Isso pode remover seu kernel de 32 bits como confiável - por padrão - vem com um kernel atualizado (o kernel é utópico), veja 14.04 Notas de versão . Nesse caso, seu kernel atual entra em conflito com o kernel de 64 bits a ser instalado e, portanto, é removido. Se você não gostar desta idéia, você pode querer experimentar o antigo pacote de kernel de 64 bits "linux-generic-lts-trusty: amd64".

  2. O comando "--add-architecure" é essencial. Sem isso, o sistema de pacotes não suporta pacotes de diferentes arquiteturas, veja Multiarch-HowTo

  3. Para ver o que o apt-get fará no seu sistema, execute-o com as opções -Vs , que ativam o "modo de simulação detalhado". Isso imprimirá todos os pacotes a serem instalados e removidos.

  4. Se o arranque do sistema usando o novo kernel depende da configuração grub . Como usuário root , execute update-grub para atualizar o grub e imprimir a configuração atual de inicialização. A primeira imagem na lista será inicializada como padrão.

  5. Para selecionar uma imagem de kernel diferente, removi a linha GRUB_HIDDEN_TIMEOUT=0 de /etc/default/grub e executei como usuário raiz update-grub . No momento da inicialização, você pode agora selecionar um kernel diferente (você tem 10 segundos para pressionar qualquer tecla, caso contrário o grub continuará com o kernel padrão).

  6. A resposta com o maior número de votos é de 2011 e está irremediavelmente desatualizada na minha opinião. Multiarch permite que você instale pacotes de bibliotecas de múltiplas arquiteturas na mesma máquina sem muita demora.

por Daniel K. 12.06.2015 / 23:45
3

Essas respostas estão um pouco desatualizadas. A gradação cruzada está agora documentada para o Debian em o wiki do Debian , mas ainda não é recomendado.

Instalar um kernel a partir de uma arquitetura diferente agora é tão fácil quanto descrito lá, mas o novo 'apt' não reconhecerá pacotes de uma arquitetura anterior, e assim todos os seus front-ends podem reportar muitos pacotes quebrados. Isso requer a mudança de todas as dependências para a outra arquitetura, ou a reversão do apt e do dpkg para 32 bits.

Portanto, a melhor abordagem pode ser salvar primeiro os resultados de dpkg --get-selections , strip: i386, e baixar um pacote amd64 para cada uma das dependências do cache:

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

Na melhor das hipóteses, é provável que seja lento e demore a resolver as dependências.

    
por Cedric Knight 31.05.2017 / 19:43
2

Crossgrade (upgrade para uma arquitetura diferente) ainda não é suportado.

    
por tumbleweed 06.01.2012 / 10:53
2

Talvez, ao enfrentar o mesmo problema, isso funcione, é o que eu planejava fazer:

Obtenha uma versão de 64 bits do sistema operacional, instale-a em uma partição, quando concluir a cópia dos documentos e outras coisas da instalação de 32 bits, quando tudo estiver copiado com segurança, você poderá formatar o restante da unidade e usá-la.

    
por ubuntufan 20.06.2012 / 13:10
2

Sim, a linha de arquitetura externa é definitivamente vital para a instalação de QUALQUER pacote de arco cruzado. Mas depois disso, faça como vários outros usuários mencionaram:

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

Isso deve ser feito ...

    
por strawn_04 04.04.2013 / 08:19
1

Boa pergunta. Eu tive uma caçada por aí e além da história do usuário que você cita, não consigo encontrar nenhum detalhe sobre como fazer isso. Toda a documentação indica que é apenas para executar aplicativos de 32 bits em um sistema operacional de 64 bits.

No entanto, se você estiver disposto a experimentar, tente o seguinte (derivado do meu link em [1])

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

Eu acho que você terá que começar com um kernel amd64, já que o de 32 bits não será capaz de executar binários de 64 bits. No entanto, o de 64 bits deve executar binários de 32 bits (se o ia32-libs estiver instalado?).

Se você pegar o kernel de 64 bits instalado e inicializado, você pode ir a partir daí para instalar o apt: amd64, então siga a história do usuário como citado anteriormente, ubuntu-minimal, ubuntu-desktop, etc.

Após o apt: amd64 ser instalado, eu acho que você pode remover a linha de arquitetura externa, já que você basicamente mudou neste ponto.

Disclaimer: Eu não tenho nenhum sistema de 32 bits para testar, então isso é tudo adivinhação. Boa sorte!

[1] Sites

    
por Caesium 22.11.2011 / 20:52
1

Minha receita para o Ubuntu 16.04 Xenial, testada em Ubuntu VM de 32 bits recém-instalada com sistema padrão e servidor SSH mas sem GUI:

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

(senão instalaria o thermald: amd64 e falharia em reiniciá-lo no kernel de 32 bits)

reboot

após a reinicialização com o kernel de 64 bits:

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

digite 'Sim, faça o que eu digo!' quando perguntado, será seguro

mkdir /tmp/upgrade 
cd /tmp/upgrade
pkgs() { dpkg -l | awk '=="''"{print }' | awk -F: '{print }' | sort -u
}
apt download $(comm -23 <(pkgs i386) <(pkgs amd64))
while ls *amd64*deb
do dpkg -i *amd64*deb
   dpkg -l | awk '=="ii" && =="amd64" {print }' | awk -F: '{print }' |
   while read a
   do [ -f ${a}_*amd64*deb ] && rm ${a}_*amd64*deb
   done
done

no loop acima, removemos os arquivos .deb que foram instalados com sucesso e obtiveram o status 'ii' na lista do dpkg.

precisamos repetir dpkg -i runs, pois ele não é bem-sucedido desde a primeira tentativa

reboot

agora, com o kernel de 64 bits e o espaço do usuário, os pacotes restantes do i386 podem ser removidos:

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

a lista que você salvou no arquivo pkgs1 que você pode usar para suas necessidades futuras.

    
por Wladimir Mutel 18.01.2018 / 15:18

Tags