Eu tenho um sistema de 32 bits que roda em um processador de 64 bits. Como faço para convertê-lo em 64 bits, sem reinstalar? Eu já vi em algum lugar que é possível como resultado do novo framework Multiarch .
Eu tenho um sistema de 32 bits que roda em um processador de 64 bits. Como faço para convertê-lo em 64 bits, sem reinstalar? Eu já vi em algum lugar que é possível como resultado do novo framework Multiarch .
Respostas:
TL; DR: É factível, mas complicado. Eu descrevi uma alternativa na parte inferior.
Agora, a descrição longa e leve-a com um grão de sal, pois talvez eu não tenha tomado o melhor caminho:
É possível, e aqui está o que eu fiz nas últimas duas noites: Há uma entrada no wiki que descreve o estilo da velha escola sem o suporte a multiarcas. É útil para corrigir pacotes quebrados.
Para migrar seu sistema básico, faça o seguinte :
$ 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 de seus pacotes são então amd64, mas a maioria permanece i386. apt-get upgrade
cuidará de alguns pacotes, apt-get -f install
reparará alguns erros, mas ainda assim a maioria dos pacotes permanecerá 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 precisará migrar.
Minha próxima idéia era fazer:
# apt-get install `dpkg --get-selections \
| grep i386 \
| awk {'gsub(/:i386/, ":amd64"); print $1'}`
Mas acabou sendo uma péssima idéia: alguns pacotes não estão disponíveis no amd64 (por exemplo, libc6-i686), o apt-get ficará confuso e muitos pacotes serão instalados nas duas versões. Muito trabalho manual no aptitude 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 terão que ser removidos e instalados novamente, por exemplo, eu tive esse problema com o tar. Esqueci os pacotes em outro sistema, extraí os pacotes ar p package.deb data.tar.gz | tar zx
e editei os scp
arquivos extraídos scp -r ./* root@other_computer:/
, para que os binários estejam disponíveis novamente. Enxágue e repita e os scp
arquivos editados serão substituídos.
O que eu faria
Fiz o seguinte, sempre que troquei de sistema:
Fazer backup /home
, /etc
(e talvez /var
, /usr/local
, alguns outros arquivos que foram alterados, /root
, ..., YMMV).
Obtenha uma lista de pacotes instalados dpkg --get-selections > packagelist
e copie também o arquivo resultante packagelist
.
Em seguida, faça uma reinstalação limpa do Debian, crie todos os usuários novamente, talvez funções, etc.
Reinstale todos os pacotes com dpkg --set-selections < packagelist; apt-get -f install
.
Copie de volta os diretórios, arquivos e backups, e você estará pronto.
Uma desvantagem dessa abordagem: todos os seus pacotes, incluindo bibliotecas, serão marcados como instalados manualmente, para que não sejam desinstalados, quando nenhum pacote mais depender deles.
apt-mark showauto
para exportar a lista de instalação automática e apt-mark auto
marcá-los na nova instalação.
x86_64
e não me importo se meus pacotes de sistema não estão usando o processador de 64 bits de maneira ideal ? Também estou executando um sistema operacional de 32 bits. Eu acho que eu pensei que o meu processador foi de 32-bit quando eu fiz primeiro a instalar :(
As outras respostas aqui mostram que, embora isso seja teoricamente possível, é muito complexo e provavelmente não vale o esforço. No entanto, você pode fazer uma instalação limpa e tornar o processo relativamente indolor, se você continuar $HOME
igual.
O processo geral será
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
Observe que você também pode remover a arquitetura de qualquer nome de pacote que você instalou usando o multiarch :
dpkg --get-selections '*' | sed -e 's/:\(i386\|amd64\)//' > package.list
Se você /home
é uma partição separada, apenas certifique-se de não formatá-la durante o processo de instalação. Se não estiver em uma partição separada, faça um backup do qual você possa restaurar posteriormente:
tar cvzf home_backup.tgz $HOME/
Depois de instalar seu 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)
Restaure o 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 fornece para facilitar isso. Todos devem ser instaláveis no Ubuntu também.
É teoricamente possível, mas provavelmente traiçoeiro. O Debian multiarch no momento suporta bibliotecas multiarch, mas não binários. Então tem isso.
O sistema entende principalmente sua própria arquitetura dpkg-architecture
(que na verdade é um script perl, mas extrai as informações do arco e as exibe), que também afirma poder definir a arquitetura.
O processo aproximado seria:
libgcc1
)dpkg-architecture -aamd64
para mudar seu arco (observe que pode reclamar sobre o GCC)dpkg
e das dependênciasapt-get
o kernel (observe que pode reclamar MUITO)apt-get
Essas etapas são baseadas no que eu sei sobre o design do Debian ter usado quase exclusivamente entre as distribuições Linux nos últimos 12 anos (incluindo as que foram usadas debtakeover
anteriormente) e a abordagem que eu adotaria. Portanto, considere isso por sua conta e risco . Seu sistema pode ficar inutilizável a qualquer momento após a tentativa da etapa 4. Pode ser a alternativa para as etapas 4 e 5 debbootstrap
.
Mais importante, sugiro tentar isso em uma VM antes de fazer qualquer coisa com a qual você se preocupe.
Boa sorte, e que a força esteja com você .
Não é uma resposta para a pergunta, mas pode ser difícil atualizar todos os pacotes do x86 para o amd64, mas é possível instalar pelo menos facilmente o pacote do kernel amd64, o que permitirá pelo menos executar aplicativos de 64 bits e máquinas e contêineres virtuais ( o que pode ser suficiente para o que você precisa).
Basta instalar o pacote amd64 linux-image com dpkg -i --force-architecture
.
--force-architecture
não é necessário, e o kernel amd64 pode ser instalado via apt no i386.
Existem alguns manuais por aí, mas quase nenhum mostra o que realmente esperar. Estou escrevendo isso em um laptop Debian Wheezy que acabei de atualizar de 32 bits para 64 e realmente funciona.
Segui estas instruções e elas foram realmente precisas sobre o que você realmente enfrentará:
http://blog.zugschlus.de/archives/972-How-to-amd64-an-i386-Debian-installation-with-multiarch.html
Uma recomendação é manter o sistema energizado durante todo o processo, não reinicialize, a menos que você tenha certeza de que migrou tudo e que tudo o que foi removido foi instalado novamente (especialmente os pacotes essenciais), ou não será possível executar o sistema novamente.
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 executá-lo algumas vezes. dpkg --get-selections
é simplesmente uma lista alfabética; portanto, os pacotes na parte superior que exigem pacotes na parte inferior serão ignorados. Se você quiser assistir quantas estão sendo instaladas, faça dpkg --get-selections | grep amd64 | wc -l
dentro do while
loop.
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-arco. Eu seria cauteloso quanto ao quão bem esse novo sistema é suportado.
Aqui está um dos documentos que li que discutiram o assunto, talvez isso ajude você: https://wiki.ubuntu.com/MultiarchSpec
Observe a terceira história de usuário. Aqui está outro link sobre o mesmo tópico: https://help.ubuntu.com/community/MultiArch
Embora possa ser um pouco diferente entre o Debian e o Ubunutu, esse é um recurso essencial. Imagino que o Ubuntu e o Debian trabalhem em estreita colaboração para que essa estrutura funcione antes que o Ubuntu se afaste e faça algo do seu gosto.
Boa sorte!