Suporte nativo
Desde o Ubuntu 11.04 e o Debian wheezy (7.0), o Debian e o Ubuntu têm suporte a multiarch: você pode misturar os pacotes x86_32 (i386) e x86_64 (amd64) no mesmo sistema de maneira direta. Isso é conhecido como suporte a multiarch. Consulte a resposta do warl0ck para obter mais detalhes.
Em versões mais antigas, o Debian e o Ubuntu são fornecidos com várias bibliotecas de 32 bits no amd64. Instale o pacote para ter um conjunto básico de bibliotecas de 32 bits e, possivelmente, outros pacotes que dependem dessa. Seus executáveis de 32 bits devem ser executados simplesmente se você tiver todas as bibliotecas necessárias. Para desenvolvimento, instale e, novamente, possivelmente outros pacotes que dependem dele, como . Você pode achar útil também, e no Debian. Passe a opção para o gcc para compilar para o ix86.ia32-libs 
gcc-multilib 
g++-multilibbinutils-multiarch 
ia32-libs-dev-m32
Observe que uname -mainda será exibido x64_64se você estiver executando um kernel de 64 bits, independentemente dos componentes de modo de usuário de 32 bits que você instalou. Schroot descrito abaixo cuida disso.
Schroot
Esta seção é um guia para instalar uma distribuição semelhante ao Debian "dentro" de outra distribuição Linux. Ele está redigido em termos de instalação de um Ubuntu de 32 bits dentro de um Ubuntu de 64 bits, mas deve ser aplicado com pequenas modificações em outras situações, como a instalação do Debian instável no Debian stable ou vice-versa.
Introdução
A idéia é instalar uma distribuição alternativa em uma subárvore e executar a partir dela. Você pode instalar um sistema de 32 bits em um sistema de 64 bits dessa maneira, ou uma versão diferente da sua distribuição ou um ambiente de teste com diferentes conjuntos de pacotes instalados.
A chrootchamada de comando e sistema inicia um processo com uma visualização do sistema de arquivos restrita a uma subárvore da árvore de diretórios. O Debian e o Ubuntu disponibilizam o schroot , um utilitário que envolve esse recurso para criar um sub-ambiente mais utilizável.
Instale o schrootpacote
( Debian ) e o debootstrappacote
( Debian ). O Debootstrap é necessário apenas para a instalação da distribuição alternativa e pode ser removido posteriormente.
Configurar schroot
Este exemplo descreve como configurar um ambiente alternativo do Ubuntu 10.04LTS (lucid lynx) de 32 bits. Uma configuração semelhante deve funcionar com outras versões do Debian e Ubuntu. Crie um arquivo /etc/schroot/chroot.d/lucid32com o seguinte conteúdo:
[lucid32]
description=Ubuntu 10.04LTS 32-bit
directory=/32
type=directory
personality=linux32
users=yourusername
groups=users,admin
A linha directory=/32informa ao schroot onde colocaremos os arquivos da instalação de 32 bits. A linha username=yourusernamediz que o usuário yourusernamepoderá usar o schroot. A linha groups=users,admindiz que os usuários de qualquer grupo poderão usar o schroot; você também pode colocar uma users=…diretiva.
Instale a nova distribuição
Crie o diretório e comece a preenchê-lo com debootstrap. O Debootstrap baixa e instala um conjunto principal de pacotes para a distribuição e arquitetura especificadas.
mkdir /32
debootstrap --arch i386 lucid /32 http://archive.ubuntu.com/ubuntu
Você quase já tem um sistema em funcionamento; o que se segue são pequenas melhorias. O Schroot sobrescreve automaticamente vários arquivos /32/etcquando você o executa, em particular a configuração do DNS /etc/resolv.confe o banco de dados do usuário /etc/passwde outros arquivos (isso pode ser substituído, consulte a documentação). Há mais alguns arquivos que você pode copiar manualmente de uma vez por todas:
cp -p /etc/apt/apt.conf /32/etc/apt/ # for proxy settings
cp -p /etc/apt/sources.list /32/etc/apt/ # for universe, security, etc
cp -p /etc/environment /32/etc/ # for proxy and locale settings
cp -p /etc/sudoers /32/etc/ # for custom sudo settings
Não haverá um arquivo /etc/mtabou /etc/fstabno chroot. Não recomendo usar o mountcomando manualmente no chroot, faça-o de fora. Mas crie um suficientemente bom /etc/mtabpara fazer comandos como o dftrabalho razoavelmente.
ln -s /proc/mounts /32/etc/mtab
Com o directorytipo, schroot irá realizar montagens bind de um número de diretórios, ou seja, os diretórios serão compartilhados com a instalação parent: /proc, /dev, /home, /tmp.
Serviços no chroot
Conforme descrito aqui, um schroot não é adequado para executar daemons. Os programas no schroot serão eliminados quando você sair do schroot. Use um schroot "simples" em vez de um schroot de "diretório" se desejar que ele seja mais permanente e configure montagens de ligação permanentes na /etc/fstabinstalação pai.
No Debian e Ubuntu, os serviços iniciam automaticamente na instalação. Para evitar isso (que pode interromper os serviços executados fora do chroot, principalmente porque as portas de rede são compartilhadas), estabeleça uma política de não execução de serviços no chroot. Coloque o seguinte script como /32/usr/sbin/policy-rc.de torne-o executável ( chmod a+rx /32/usr/sbin/policy-rc.d).
#!/bin/sh
## Don't start any service if running in a chroot.
## See /usr/share/doc/sysv-rc/README.policy-rc.d.gz
if [ "$(stat -c %d:%i /)" != "$(stat -c %d:%i /proc/1/root/.)" ]; then
exit 101
fi
Preencher o novo sistema
Agora podemos começar a usar o chroot. Você deseja instalar mais alguns pacotes neste momento.
schroot -c lucid32
sudo apt-get update
apt-get install lsb-core nano
...
Pode ser necessário gerar algumas localidades, por exemplo
locale-gen en_US en_US.utf8
Se o schroot é para uma versão mais antiga do Ubuntu, como 8.04 (hardy), observe que o pacote ubuntu-standard puxa um MTA. Selecione em nullmailervez do padrão postfix(você pode querer que seu chroot envie correio, mas definitivamente não deseja que ele receba nenhum).
Indo além
Para mais informações, consulte o schrootmanual , as Perguntas frequentes sobre o schroot e o
schroot.confmanual . Schroot faz parte do projeto Debian autobuilder (buildd) . Pode haver dicas adicionais úteis na página da comunidade Ubuntu sobre o debootstrap .
Máquina virtual
Se você precisar de um isolamento completo do ambiente alternativo, use uma máquina virtual como KVM ( qemu-kvm
) ou VirtualBox .