Como converter um sistema baseado em Debian de 32 bits (x86) para 64 bits

33

Eu tenho um sistema de 32 bits que é executado em um processador de 64 bits. Como posso convertê-lo para ser todo de 64 bits, sem reinstalar? Eu vi em algum lugar que isso é factível como resultado do novo framework do Multiarch .

    
por Tshepang 10.06.2012 / 23:21

7 respostas

7

TL; DR: É factível, mas complicado. Eu delineei uma alternativa na parte inferior.

Agora a descrição longa , e leve com um grão de sal, pois talvez eu não tenha tomado a melhor rota:

É possível, e eis o que fiz nas duas últimas noites: Existe uma entrada na wiki descrevendo o caminho antigo sem suporte multiarch. É útil para consertar pacotes quebrados.

Para migrar seu sistema básico, faça isso :

$ dpkg --print-architecture
i386
# dpkg --add-architecture amd64
$ dpkg --print-foreign-architectures
amd64
# apt-get update
# apt-get download gcc-4.6-base:amd64 libgcc1:amd64 libc6:amd64 \
          libselinux1:amd64 zlib1g:amd64 libbz2-1.0:amd64 dpkg:amd64
# dpkg -i gcc-4.6-base*.deb libgcc*.deb libc*.deb libselinux*.deb \
          libbz2*.deb zlib*.deb dpkg*.deb
$ dpkg --print-architecture
amd64
$ dpkg --print-foreign-architectures
i386

Alguns dos seus pacotes são então amd64, mas a maioria permanecerá i386. apt-get upgrade cuidará de alguns pacotes, apt-get -f install consertará alguns erros, mas a maioria dos pacotes permanecerá em i386. Se você quiser lidar com isso, pule a parte complicada;)

Usar dpkg --get-selections | grep :i386 retornará todos os seus pacotes, que você ainda terá que migrar.

Minha próxima ideia foi fazer:

# apt-get install 'dpkg --get-selections \
  | grep i386 \
  | awk {'gsub(/:i386/, ":amd64"); print $1'}'

Mas acabou por ser uma má ideia: alguns pacotes não estão disponíveis em amd64 (por exemplo, libc6-i686), o apt-get será confundido, e muitos pacotes serão instalados em ambas as versões. Muito trabalho manual em aptidão deve ser feito.

Mais dificuldades: alguns pacotes essenciais podem ser substituídos, para que você sempre tenha os binários instalados para instalação, mas alguns pacotes precisarão ser removidos e instalados novamente, por exemplo, Eu tive esse problema com tar. Eu coloquei os pacotes em outro sistema, extraí os pacotes via ar p package.deb data.tar.gz | tar zx e então scp os arquivos extraídos via scp -r ./* root@other_computer:/ , então os binários estão disponíveis novamente. Enxague e repita e os arquivos scp ed serão sobrescritos.

O que eu faria em vez disso

Eu fiz o seguinte, sempre que eu troquei de sistema:

Fazer backup de /home , /etc (e talvez /var , /usr/local , alguns outros arquivos que você alterou, /root , ..., YMMV).

Obtenha uma lista de pacotes instalados com dpkg --get-selections > packagelist e copie também o arquivo packagelist .

Então faça uma reinstalação limpa do Debian, crie todos os usuários novamente, talvez papéis, etc.

Reinstale todos os pacotes com dpkg --set-selections < packagelist; apt-get -f install .

Copie os arquivos e diretórios salvos em backup e, na maioria das vezes, você está pronto.

Uma desvantagem nessa abordagem: todos os seus pacotes, incluindo bibliotecas, serão marcados como instalados manualmente, para que não sejam desinstalados, quando nenhum pacote depender deles mais.

    
por 12.06.2013 / 19:30
6

As outras respostas aqui mostram que, embora isso seja teoricamente possível, é muito complexo e provavelmente não vale o esforço. Você pode, no entanto, fazer uma instalação limpa e tornar o processo relativamente indolor se você mantiver seu $HOME igual.

O processo geral será

  1. Faça um backup da sua lista de pacotes instalados e da lista de pacotes instalados automaticamente.

    dpkg --get-selections '*' > package.list
    apt-mark showauto >auto.list
    

    Note que você também pode querer remover a arquitetura de qualquer nome de pacote que você tenha instalado usando multiarch :

    dpkg --get-selections '*' | sed -e 's/:\(i386\|amd64\)//' > package.list
    
  2. Se o seu /home for uma partição separada, apenas certifique-se de não formatá-lo durante o processo de instalação. Se não estiver em uma partição separada, faça um backup que você possa restaurar depois:

    tar cvzf home_backup.tgz $HOME/
    
  3. Depois de instalar o novo sistema, instale os pacotes ausentes

    sudo dpkg --set-selections < package.list 
    sudo apt-get update
    sudo apt-get dist-upgrade
    sudo apt-mark auto $(cat auto.list)
    
  4. Restaure seu $ HOME. Copie o arquivo tgz e extraia-o no diretório $ HOME:

    tar xvzf home_backup.tgz
    

Você também pode querer dar uma olhada nas ferramentas que o Mint oferece para facilitar isso. Todos devem ser instaláveis no Ubuntu também.

    
por 23.11.2015 / 20:09
4

É, em teoria, possível, mas provavelmente traiçoeiro. O Debian multiarch na atual suporta bibliotecas multiarch, mas não binários. Então tem isso.

O sistema basicamente entende sua própria arquitetura de dpkg-architecture (que na verdade é um script perl, mas extrai as informações do arco e as exibe), que também afirma ser capaz de definir a arquitetura .

AVISO: Eu não fiz isso nem tentei fazê-lo

O processo difícil seria:

  1. Instale a variante multiarch de todas as suas bibliotecas (o mais importante é libgcc1 )
  2. Use dpkg-architecture -aamd64 para deslocar seu arco (observe que ele pode reclamar do GCC)
  3. Faça o download e prepare todos os componentes necessários (veja a seguir)
  4. Forçar a instalação da variante amd64 de dpkg e dependências
  5. Forçar a instalação de variantes amd64 de pacotes essenciais do sistema básico, incluindo apt-get e o kernel (observe que ele pode reclamar A MUITO)
  6. Reinicializar
  7. Provavelmente instale o restante do sistema com apt-get

Estes passos são baseados no que eu sei sobre o design do Debian ter usado quase que exclusivamente entre distribuições Linux nos últimos 12 anos (incluindo o uso de debtakeover antes) e a abordagem que eu tomaria. Portanto, considere isso por sua conta e risco . Seu sistema pode ficar inutilizável a qualquer momento após a tentativa da etapa 4. Alternar para as etapas 4 e amp; 5 pode ser debbootstrap .

Mais importante, sugiro que você experimente isso em uma VM antes de fazer qualquer coisa que seja importante para você.

Boa sorte e Que a Força esteja Com Você .

    
por 27.08.2012 / 10:56
3

Não é uma resposta à pergunta, mas pode ser difícil atualizar todos os pacotes do x86 para o amd64, mas você pode pelo menos instalar facilmente o pacote kernel amd64, que permitirá pelo menos executar aplicativos e máquinas virtuais de 64 bits e contêineres (que podem ser suficientes para o que você precisa).

Basta instalar o pacote amd64 linux-image com dpkg -i --force-architecture .

    
por 26.08.2012 / 22:13
3

Existem alguns manuais, mas quase nenhum mostra o que realmente esperar. Eu estou escrevendo isso em um laptop Debian Wheezy que acabei de atualizar de 32 bits para 64 e realmente funciona.

Eu segui estas instruções e elas foram realmente precisas sobre o que você realmente enfrentará:

link

Uma recomendação é manter o sistema ligado durante todo o processo, não reinicialize a menos que tenha certeza de que você migrou tudo e que tudo que foi removido foi instalado novamente (especialmente pacotes essenciais), ou você não obterá o sistema correndo de novo.

    
por 26.06.2013 / 04:04
1

Seguindo a ideia usando o awk , acabei usando:

dpkg --get-selections \               # get the list
 | grep -v deinstall \                # throw away deselected packages
 | grep ':i386' \                     # get the i386 arch packages
 | sed 's/install//g' \               # drop 'install' to get list
 | sed 's/:i386/:amd64/g' \           # replace i386 with amd64
 | while read package; do \           # iterate over the result
      apt-get -yf install $package; \ # install each one and fix dependencies
   done

Eu tive que correr algumas vezes. dpkg --get-selections é simplesmente uma lista alfabética, portanto os pacotes no topo que requerem pacotes na parte inferior serão ignorados. Se você quiser ver quantos estão sendo instalados, faça dpkg --get-selections | grep amd64 | wc -l dentro do loop while .

    
por 19.10.2014 / 08:52
-1

Eu tenho pouca experiência com o assunto, mas acredito que você está correto quando diz que a conversão de 32 para 64 deve ser capaz com o multi-arch. Eu seria cauteloso sobre o quão bem suportado este novo sistema é.

Aqui está um dos documentos que eu li que discutiram o assunto, talvez isso ajude você: link

Observe as terceiras histórias do usuário. Aqui está outro link em torno do mesmo tópico: link

Mesmo que seja um pouco diferente entre o Debian e o Ubunutu, este é um recurso central. O que eu imagino que o Ubuntu e o Debian trabalharão de perto para que essa estrutura funcione em campo antes que o Ubuntu se afaste e faça algo de sua própria preferência.

Boa sorte!

    
por 05.08.2012 / 06:34