Eu tenho uma instalação do Ubuntu de 32 bits em execução no hardware de 64 bits. Agora que o multi-arco foi implementado , eu gostaria de mudar para 64 bits sem precisar reinstalar o sistema operacional.
Esta é uma das histórias de usuário abordadas pelas especificações :
Shawn instalou seu sistema usando a versão de 32 bits do Ubuntu, mas seu hardware é de 64 bits e ele deseja mudar. Ele instala manualmente as versões amd64 do dpkg e apt, substituindo as versões do i386 e alterando a 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 apt.
Essa história de usuário foi implementada de uma 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?
Respostas:
Essa abordagem é muito complicada e dificilmente resultará em todos os seus pacotes sendo a
amd64
versão em vez dai386
versão. Apenas os pacotes que realmente receberem atualizações provavelmente serão alterados na arquitetura, e provavelmente apenas se nenhum outro pacote que não estiver sendo atualizado depender da suai386
arquitetura. Uma vez que alguns pacotes não receberá quaisquer atualizações ao longo de todo o ciclo de suporte de sua versão do Ubuntu, você provavelmente nunca ter um totalmenteamd64
sistema usando essa técnica. Além disso, certamente não há apoio oficial para essa abordagem.Recomenda-se substituir o sistema Ubuntu existente por uma nova instalação de 64 bits.
No entanto, se você deseja tentar esta técnica, precisará baixar manualmente os
.deb
arquivos paradpkg
eapt
. Você pode encontrá-los nas páginas dodpkg
Ubuntu eapt
do Ubuntu no Launchpad - expanda a versão mais recente em "The Oneiric Ocelot" que está marcada como release, segurança e / ou atualizações (mas você provavelmente não quer uma versão marcada apenas proposto e / ou backports, se houver). Em seguida, baixe os.deb
arquivos marcadosamd64
. Especificamente, os arquivos que você deseja são: este paradpkg
(e os outros listados também, se você tiver esses pacotes instalados) e isso e isso e isso e isso e issoe isso paraapt
.Antes de fazer qualquer coisa com esses arquivos, você deve fazer backup de todos os documentos importantes no sistema Ubuntu instalado e de outros arquivos importantes (por exemplo, músicas, ebooks, vídeos), porque é bem provável que a tentativa dessa técnica seja um tiro pela culatra. e deixe 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 seuDownloads
diretório) e depois execute este comando:Obviamente, depois de instalá-los, 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 executará apenas executáveis de 32 bits). De fato, eles podem nem concluir a instalação, pois podem ter scripts de pós-instalação que invocam seus executáveis de 64 bits.
Existem várias maneiras de tentar instalar um kernel de 64 bits em um sistema de 32 bits, mas todos são extremamente complicados; portanto, recomendo que você inicialize a partir de um live CD Oneiric de 64 bits (que executa um sistema de 64 bits). kroot), faça chroot no sistema Ubuntu instalado e use o recentemente instalado de 64 bits
apt
edpkg
para instalar um kernel de 64 bits.Aqui estão instruções específicas para fazer isso ... mas, por favor, não entenda que estou dizendo que funcionará. Eu não tentei isso. (Entrei em sistemas Ubuntu instalados a partir de CD's ao vivo e realizei o gerenciamento de pacotes e outras operações, mas não tentei as operações de arquitetura cruzada sugeridas aqui.)
No sistema Ubuntu instalado, abra uma janela do Terminal ( Ctrl+ Alt+ T) e execute
mount | grep ' on / '
(colando-a no Terminal e pressionando enter). Você deve ver algo como/dev/sda2 on / type ext4 (rw,errors=remount-ro,commit=0)
. A parte que você está interessado é o nome do dispositivo anteson
(neste exemplo, é/dev/sda2
). Lembre-se disso ou escreva-o.A etapa 1 forneceu o nome do dispositivo da
/
partição. Se você tiver uma/boot
partição separada , também precisará saber o nome do dispositivo. Então, nesse caso, corramount | grep ' on /boot '
. Você verá algo como/dev/sda1 on /boot type ext2 (rw)
. Lembre-se ou escreva isso também.Inicialize a partir de um CD ao vivo Oneiric amd64 (ou seja, 64 bits) e selecione "Experimente o Ubuntu" em vez de "Instalar o Ubuntu".
Entre em um navegador da web e verifique se a conectividade com a Internet está totalmente funcional. Se não estiver, configure-o.
Abra uma janela do Terminal e execute
sudo mount /dev/sda2 /mnt
(substitua/dev/sda2
pelo nome do dispositivo que você obteve na etapa 1, se diferente).Se o sistema instalado tiver uma
/boot
partição separada , executesudo mount /dev/sda1 /mnt/boot
(substitua/dev/sda1
pelo nome do dispositivo que você obteve na etapa 2, se diferente).Agora, execute estes comandos para fazer chroot no seu sistema instalado:
Corra
ping -c 4 launchpad.net
para ver se a conectividade com a Internet funciona totalmente de dentro do chroot. Você está esperando algo assim:Se, em vez disso, você não conseguir transmitir ou receber pacotes, precisará configurar a conectividade com a Internet no chroot. Para fazer isso, execute estes comandos (para sair do chroot, copie os arquivos de configuração relevantes do sistema de CD ao vivo no chroot e digite novamente o chroot):
Embora geralmente você deva interromper esse processo se houver um erro, não se preocupe se o primeiro e / ou o segundo desses quatro comandos falharem, desde que a maneira específica pela qual ele falhe seja informando que
/mnt/etc/resolv.conf
(ou/mnt/etc/hosts
) não existe .O chroot volta e tenta novamente:
Execute estes comandos para deixar seu ambiente chrootado totalmente pronto para uso:
Se você não instalou os
.deb
arquivos para as versões de 64 bits dodpkg
eapt
, faça-o agora. Se você os instalou, mas houve erros de configuração, executedpkg --configure -a
para corrigi-los. (Espero que isso funcione ... talvez seja melhor esperar para tentar instalá-los até que você esteja no ambiente do live CD, caso a instalação de 64 bitsdpkg
enquanto inicializada no sistema instalado saiadpkg
em um estado inutilizável.)Com as versões de 64 bits
dpkg
eapt
instaladas, supondo que eles instalem automaticamente pacotes de 64 bits, 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, executedpkg -l | grep linux-
. Isso lista os pacotes instalados que começam comlinux-
. Você está interessado mais especificamente em pacotes que começam comolinux-generic
,linux-image
,linux-server
, e / oulinux-headers
. Remova esses arquivos comapt-get purge ...
where...
é substituído por uma lista separada por espaço dos pacotes que você está removendo.Agora reinstale os pacotes que você removeu. (Na verdade, para pacotes que contêm números de versão no nome do pacote, como por exemplo
linux-image-3.0.0-13-generic
, você só precisa instalar os nomes dos pacotes com versão mais recente.) Faça isso executandoapt-get install ...
onde...
é substituído por uma lista separada por espaço dos pacotes que você está instalando .Atualize a configuração do carregador de inicialização, desmonte alguns dispositivos e deixe o chroot:
Se você executou
sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.old
e não falhou, execute agorasudo cp /mnt/etc/resolv.conf.old /mnt/etc/resolv.conf
.Se você executou
sudo cp /mnt/etc/hosts /mnt/etc/hosts.old
e não falhou, execute agorasudo cp /mnt/etc/hosts.old /mnt/etc/hosts
.Se o seu sistema instalado tiver uma
/boot
partição separada , desmonte que:sudo umount /mnt/boot
Desmonte a
/
partição do sistema instalado :sudo umount /mnt
Deixe a janela Terminal (execução
exit
), depois reinicie (ou desligue) o sistema do Live CD e inicialize no sistema instalado.Veja se o sistema é utilizável e está executando um kernel de 64 bits (
uname -m
deve-se dizer que a arquitetura éx86_64
).Pode haver pacotes adicionais que você precisa instalar, como
ia32_libs
e / ou a versão de 64 bitslibc6
, para que isso funcione. Para alguns deles, você pode ser informado de que precisa deles ao tentar instalar a versão de 64 bitsdpkg
e / ouapt
. Para outros, você pode não ser informado.(As instruções acima para fazer chroot e operar no ambiente chroot são baseadas em parte significativa nesse procedimento relacionado, mas diferente, e também em algumas postagens das Respostas do Launchpad , especialmente # 6 aqui e # 6 aqui . E agradecimentos especiais a Cesium por apontar que a 64-bit
dpkg
eapt
executáveis não será executado em um sistema executando um kernel de 32 bits.)fonte
apt
edpkg
ainda tiver 32 bits e (presumivelmente) se recusará a instalar um pacote de kernel de 64 bits. (Construir o kernel a partir do código-fonte e usar a compilação cruzada funcionaria, mas isso é muito complicado e não quero recomendá-lo. Tenho certeza de que há uma maneira melhor e mais fácil. Se você o conhece, sinta-se à vontade para editar o meu ou o seu post ou comentário sobre isso).Como mencionado acima, eu fiz:
Funcionou. Sou capaz de executar minha terra de usuário de 32 bits com o kernel de 64 bits, no Ubuntu 12.04.
fonte
sudo dpkg --add-architecture amd64
vez disso. Gritará com você se você fizer o contrário. Eu precisava fazer isso para poder executar uma instalação de 64 bits a partir de uma instalação de 32 bits (anteriormente) e funcionou exatamente como o esperado, sem problemas.linux-image-generic:amd64
Ubuntu 16.04. Funcionou bem, mesmo sem os dois últimos comandos.Embora a pergunta seja semelhante a É possível "atualizar" de uma instalação de 32 bits para uma de 64 bits? (Se você ainda não leu antes, sugiro que tente. A resposta fornecida é boa.) Também recomendo a leitura dos seguintes links:
Para um melhor desempenho, devo instalar 32 ou 64 bits?
Como posso mudar uma instalação de 32 bits para uma de 64 bits?
Quais são as diferenças entre 32 e 64 bits e qual devo escolher?
É possível: Sim
É fácil: NÃO!
Se o seu problema for com memória, você deve saber que o Ubuntu 32 Bit pode ler mais de 4 GB de RAM (até 64 GB). Portanto, usar a versão mais recente do Ubuntu 32 bits em um computador com arquitetura de 32 bits ou 64 bits e colocar mais RAM não será um problema. Simplesmente lerá a RAM extra e funcionará.
fonte
Essas respostas estão um pouco desatualizadas. A classificação cruzada agora está documentada para o Debian no wiki do Debian , mas ainda não é recomendada.
Instalar um kernel a partir de uma arquitetura diferente agora é tão fácil como descrito lá, mas o novo 'apt' não reconhece pacotes de uma arquitetura anterior e, portanto, todos os seus front-ends podem relatar muitos pacotes quebrados. Isso requer a alteração 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 primeiro salvar os resultados de
dpkg --get-selections
, strip: i386 e baixar um pacote amd64 para cada uma das dependências do cache:Na melhor das hipóteses, é provável que seja lento e demorado resolver as dependências.
fonte
Essas instruções fazem o sistema inicializar com um kernel de 64 bits, mas não altera a maioria dos programas da terra do usuário.
Depois de 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, digitei os seguintes comandos como usuário root :
Notas:
Isso pode remover seu kernel de 32 bits como confiável - por padrão - é fornecido com um kernel atualizado (o kernel do utopic), consulte as Notas da versão 14.04 . Nesse caso, seu kernel atual entra em conflito com o kernel de 64 bits a ser instalado e, portanto, é removido. Se você não gostou dessa idéia, pode tentar o pacote mais antigo do kernel de 64 bits "linux-generic-lts-trusty: amd64".
O comando "--add-architecure" é essencial. Sem ele, o sistema de pacotes não suporta pacotes de arquiteturas diferentes, consulte Multiarch-HowTo
Para ver o que
apt-get
fará com o 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.A inicialização do sistema usando o novo kernel depende da
grub
configuração. Como usuário root , executeupdate-grub
para atualizar o grub e imprimir a configuração de inicialização atual. A primeira imagem da lista será inicializada como padrão.Para selecionar uma imagem de kernel diferente, tirei a linha
GRUB_HIDDEN_TIMEOUT=0
de/etc/default/grub
e correu como usuário rootupdate-grub
. No momento da inicialização, agora você pode selecionar um kernel diferente (você tem 10 segundos para pressionar qualquer tecla, caso contrário, o grub continuará com o kernel padrão).A resposta com o maior número de votos é de 2011 e está irremediavelmente desatualizada na minha opinião. O Multiarch permite instalar pacotes de bibliotecas de várias arquiteturas na mesma máquina sem muito barulho.
fonte
apt-get install linux-generic:amd64
que não deve ser muito importante para o experimento)! Se eu passar pela opção de inicialização "resgate", o sistema será executado, mas o X não usanouveau
driver de vídeo e outras coisas. Se eu inicializar normalmente, a inicialização será interrompida em algum momento e o sistema será reiniciado. (Mas, na primeira vez, consegui inicializar com êxito.) Não tenho certeza se o problema está no driver de vídeo durante a inicialização "normal" ou em outra coisa.Talvez, ao enfrentar o mesmo problema, isso funcione, seja o que eu estava planejando fazer:
Obtenha uma versão de 64 bits do sistema operacional, instale em uma partição; quando concluir, copie os documentos e outros itens da instalação de 32 bits; quando tudo for copiado com segurança, você poderá formatar o restante da unidade e usá-lo.
fonte
Sim, a linha de arquitetura estrangeira é definitivamente vital para a instalação de QUALQUER pacote cross-arch. Mas depois disso, faça o que vários outros usuários mencionaram:
Isso deveria fazê-lo ...
fonte
Minha receita para o Ubuntu 16.04 Xenial, testada na Ubuntu VM de 32 bits recém-instalada com sistema padrão e servidor SSH, mas sem a GUI:
(caso contrário, ele instalaria o thermald: amd64 e falharia ao reiniciá-lo no kernel de 32 bits)
após a reinicialização com o kernel de 64 bits:
digite 'Sim, faça o que eu digo!' quando solicitado, será seguro
no loop acima, removemos os arquivos .deb que foram instalados com êxito e obtiveram o status 'ii' na lista do dpkg.
precisamos repetir
dpkg -i
execuções, pois não obtém sucesso desde a primeira tentativaagora, com o kernel de 64 bits e o espaço do usuário, os pacotes i386 restantes podem ser removidos:
a lista que você salvou no
pkgs1
arquivo que você pode usar para quaisquer outras necessidades.fonte
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 detalhes 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])
Eu acho que você terá que começar com um kernel amd64, pois o de 32 bits não poderá 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ê instalar e inicializar o kernel de 64 bits, poderá instalar o apt: amd64 e seguir a história do usuário conforme citado anteriormente, ubuntu-minimal, ubuntu-desktop, etc.
Após o apt: amd64 estar instalado, acho que você pode remover a linha de arquitetura estrangeira, pois você mudou essencialmente nesse ponto.
Disclaimer: Eu não tenho um sistema de 32 bits para testar, então isso é tudo adivinhação. Boa sorte!
[1] https://wiki.ubuntu.com/OneiricOcelot/TechnicalOverview/Beta1#Improved_handling_of_32-bit_compatibility_on_amd64_systems
fonte
A atualização (atualização para uma arquitetura diferente) ainda não é suportada.
fonte