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++-multilib
binutils-multiarch
ia32-libs-dev
-m32
Observe que uname -m
ainda será exibido x64_64
se 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 chroot
chamada 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 schroot
pacote ( Debian ) e o debootstrap
pacote ( 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/lucid32
com 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=/32
informa ao schroot onde colocaremos os arquivos da instalação de 32 bits. A linha username=yourusername
diz que o usuário yourusername
poderá usar o schroot. A linha groups=users,admin
diz 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/etc
quando você o executa, em particular a configuração do DNS /etc/resolv.conf
e o banco de dados do usuário /etc/passwd
e 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/mtab
ou /etc/fstab
no chroot. Não recomendo usar o mount
comando manualmente no chroot, faça-o de fora. Mas crie um suficientemente bom /etc/mtab
para fazer comandos como o df
trabalho razoavelmente.
ln -s /proc/mounts /32/etc/mtab
Com o directory
tipo, 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/fstab
instalaçã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.d
e 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 nullmailer
vez 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 schroot
manual , as Perguntas frequentes sobre o schroot e o
schroot.conf
manual . 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 .