Converta um servidor Ubuntu de 64 bits para um servidor Ubuntu de 32 bits

1

Temos uma instância vmware do servidor Ubuntu que parece estar instalada com a versão de 64 bits.

Infelizmente, agora queremos movê-lo para um host de apenas 32 bits, portanto, a instalação atual não será executada. A instalação é bem ajustada, então eu realmente prefiro ter a instalação atual convertida em vez de fazer uma instalação nova.

Existe uma maneira confiável de obter versões de 32 bits de tudo e converter o kernel, ou eu deveria abandonar completamente a idéia?

Obrigado por toda ajuda.

EDIT: O objetivo principal desta instância do Linux era fornecer um repositório CVS. Após cuidadosa consideração, decidimos migrar do CVS para o git em vez de fazer o exercício 64- > 32 bit.

    
por Thorbjørn Ravn Andersen 14.01.2010 / 14:02

3 respostas

5

Eu suspeito que não existe uma maneira fácil, estável, confiável e automatizada, já que não é algo que será necessário com frequência suficiente para que valha a pena gastar muito tempo desenvolvendo e testando, e fazendo isso manualmente provavelmente levaria mais tempo do que simplesmente reconstruir a instalação da VM a partir do zero.

Você pode acelerar a reconstrução até certo ponto, mas pode ter certeza de ter todos os mesmos pacotes instalados executando

sudo dpkg --get-selections | grep '[[:space:]]install$' | \awk '{print $1}' > package_list

na antiga VM, transferindo o arquivo e executando

cat package_list | xargs sudo apt-get install

na nova VM.

Em seguida, copie a árvore /etc/ da VM antiga para a nova máquina (não como /etc - solte-a em algum lugar temporário) e use uma ferramenta diff para localizar as diferenças que você precisa transferir. A razão para não apenas copiar em massa /etc no lugar é que pode haver pequenas diferenças na configuração padrão para alguns pacotes de 64 bits / 32 bits que você pode querer pelo menos olhar ao invés de blitzing sem saber. Para começar, /etc/apt/sources.lst precisará diferir. (Mesmo se estiver fazendo isso para duplicar uma instalação de 32 bits para outra instalação de 32 bits, eu ainda não copiai apenas /etc wholesale - fazer um diff como esse dá a você a chance de descobrir coisas que não são mais relevante e deveria ter sido removido para maior clareza)

Depois disso, copie / home para recuperar qualquer configuração & dados, e qualquer coisa como /var/www se você tiver arquivos servidos por HTTP de lá, e assim por diante, e você está praticamente pronto.

Eu usei o acima para replicar uma instalação de 32 bits como outra instalação de 32 bits, mas ela deve funcionar tão bem entre as arquiteturas. Você pode encontrar alguns pacotes fazendo com que o comando apt-get avise sobre não encontrar o pacote. Alguns desses pacotes de compatibilidade de 32 bits não estarão presentes no repositório de 32 bits, obviamente (basta removê-los da lista de pacotes e reexecutá-los) e alguns podem ser pacotes explicitamente chamados de 32 bits e 64 bits ( Nesse caso, encontre o nome correto usando a pesquisa em packages.ubuntu.com, edite a lista de pacotes e execute novamente o apt-get).

É claro que isso não irá replicar nada que você não tenha instalado nos repositórios do Ubuntu, então você terá que refazer qualquer coisa assim manualmente, mas, caso contrário, esse processo pode economizar um pouco de tempo. Além disso, antes de executar o apt-get, certifique-se de que as novas VMs sources.list tenham os mesmos repositórios ativados como o antigo, ou você obterá muito mais problemas de pacote não encontrado de apt-get .

    
por 14.01.2010 / 14:27
0

Eu sei que não é só o kernel que é de 64 bits no Ubuntu.

Não tendo feito essa migração antes, não posso dizer com certeza, mas acho que esse plano pode ser melhor. Tente alterar o kernel para 32 bits em uma cópia da instância e veja se isso funciona. Em seguida, tente copiá-lo para a outra máquina. Se isso não funcionar, reinstale o Ubuntu e copie os arquivos de configuração em pequenos lotes para ver se alguma coisa quebra.

Se o primeiro modo não funcionar, o segundo é terrivelmente complicado e consome tempo, mas pode salvar seus ajustes.

    
por 14.01.2010 / 14:26
0

A melhor opção é realizar uma reinstalação. Por exemplo, dê uma olhada nos detalhes do pacote binutils no meu servidor Ubuntu de 64 bits:

smiller@corinne3:~$ dpkg-query -p binutils
Package: binutils
Priority: optional
Section: devel
Installed-Size: 10092
Maintainer: Ubuntu Core developers <[email protected]>
Architecture: amd64
Version: 2.20-0ubuntu2
Provides: elf-binutils
Depends: libc6 (>= 2.8), zlib1g (>= 1:1.1.4)
Suggests: binutils-doc (>= 2.20-0ubuntu2)
Conflicts: elf-binutils, gas, modutils (<< 2.4.19-1)
Size: 1660892
Description: The GNU assembler, linker and binary utilities
 The programs in this package are used to assemble, link and manipulate
 binary and object files.  They may be used in conjunction with a compiler
 and various libraries to build programs.
Original-Maintainer: Matthias Klose <[email protected]>

A linha "Arquitetura: amd64" indica que o pacote foi compilado como um binário de 64 bits e que ele precisaria ser substituído pela versão de 32 bits antes de inicializar em um kernel de 32 bits. Haverá grandes problemas quando você substituir as bibliotecas principais do libc6, já que muitos pacotes dependem dessas bibliotecas.

    
por 14.01.2010 / 14:53