Usando um chroot para rodar aplicações 32bit em uma instalação amd64

Tags: , , — March 11, 2008 @ 11:55 am

Quem tem um processador 64 bits deve ficar tentado a instalar um sistema inteiro em 64 bits para aproveitar todos os recursos da máquina. Acontece que, após a instalação, nota-se que certas aplicações inexistem para a arquitetura 64 bits (amd64 ou x86_64), como o plugin Flash para Firefox/Iceweasel, o Navegador Opera e Skype.

O Debian dispõe de um pacote ia32-libs, contendo as principais bibliotecas 32 bits necessárias para rodar o FlashPlayer e algumas outras aplicações, mas caso deseja instalar algum outro pacote 32 bits (ia32, x86) então temos um problema. Mas não existe problema que não possa ser resolvido em software livre.

A solução Debian para o problema é criar um chroot 32 bits, um chroot trata-se de uma pasta root (’/') dentro de uma pasta do sistema, em outras paravras, é como instalar um sistema inteiro dentro de outro. Antes de mais nada precisamos instalar os programa necessários para criar e utilizar o chroot:

# aptitude install cdebootstrap schroot

cdebootstrap é um comando presente no atual Debian Testing e Unstable, se estiver usando Stable (Etch) ou anterior, use o comando debootstrap

Então você deve criar o chroot com o comando cdeboostrap:

# cdebootstrap --arch i386 sid /var/chroot/sid-ia32 \
http://ftp.debian.org/debian/

Após isso, você terá uma estrutura completa de diretórios dentro de /var/chroot/sid-ia32. Para alterar para este chroot basta usar o comando chroot:

# chroot /var/chroot/sid-ia32

Podendo instalar qualquer programa ou biblioteca normalmente com apt-get/aptitude:

# aptitude install opera skype

Para executar asplicações dentro de seu chroot ia32m você vai precisar de certas parte do seu sistema 64 bits, isso pode ser obtido com um ‘bind mount‘. No mínimo você precisará de /tmp, para compartilhar a sessão do X11, e de /home, para poder utilizar seus arquivos e configurações pessoais. Você poderá desejar também unir os diretórios /dev, /proc e /sys.

Saia do chroot e escreva em seu /etc/fstab:

# sid32 chroot
/home   /var/chroot/sid-ia32/home none    bind      0       0
/tmp    /var/chroot/sid-ia32/tmp  none    bind      0       0
/dev    /var/chroot/sid-ia32/dev  none    bind      0       0
/proc   /var/chroot/sid-ia32/proc none    bind      0       0
/sys    /var/chroot/sid-ia32/sys  none    bind      0       0

Depois monte-os:

mount /var/chroot/sid-ia32/home
mount /var/chroot/sid-ia32/tmp
mount /var/chroot/sid-ia32/dev
mount /var/chroot/sid-ia32/proc
mount /var/chroot/sid-ia32/sys

Para executar eplicações facilmente no novo chroot, você poderá usar o programa schroot. Para isso configure o arquivo /etc/schroot/schroot.conf:

[sid32]
description=Debian Sid i386 (sid32)
location=/var/chroot/sid-ia32
priority=3
groups=users,root
root-groups=root
aliases=default,unstable,ia32
personality=linux32
type=plain
run-exec-scripts=true
run-setup-scripts=true

A partir daí basta executar os aplicativos com o comando schroot:

schroot -p openoffice

Para facilitar ainda mais, você poderá criar um script que permite executar os aplicativos com um simples comando. Crie um arquivo /usr/local/bin/do_chroot e adicione o conteúdo a seguir:

#!/bin/bash

exec schroot -p -c sid32 -q -- "`basename $0`" "$@"

Torne-o executável:

# chmod 755  /usr/local/bin/do_chroot

E então crie links simbólicos para ele dentro de /usr/local/bin:

# cd /usr/local/bin
# ln -s do_chroot opera
# ln -s do_chroot skype

Agora, para executar estes aplicativos basta executar os comandos opera ou skype normalmente.

NOTA: Os aplicativos Opera e Skype não estão presentes nos repositórios oficiais do Debian, para instalá-los via aptitude adicione as seguintes linhas ao seu /etc/apt/sources.list, dentro do chroot, não esquecendo de executar aptitude update:

## Opera Web-Browser
deb http://deb.opera.com/opera/ sid non-free
## Skype
deb http://download.skype.com/linux/repos/debian/ stable non-free

Fonte: debian-amd64-howto

Se você gostou deste artigo, inscreva-se em meu RSS feed!