O problema :

Antigamente ter um hardware apple rodando linux era trivial, tirando o modem todo o resto subia sem qualquer dificuldade. Com a troca de arquitetura de PPC para i386 é provavel que os developers tenham abandonado o linux pois apesar do hardware do mac ser muito parecido com o dos PCs, quase nada vem funcionando “de graça” …

O Fedora que tinha um suporte fantástico aos macs PPC não presta para macs-intel e fiquei na mão … Depois de perder um tempão com o Archlinux , não quis arriscar com o gentoo, apelei e coloquei opensuse … wow, funcionou quase tudo de primeira, e decidi manter a distro pelo seu ótimo suporte ao meu hardware.

Mas como o mundo é injusto , tive que instalar programas e bibliotecas exotéricas , que exigem versões velhas de outras bibliotecas mais extravagantes ainda, e como essas coisas são desenvolvidas em debian e para debian, naturalmente sequer compilavam no opensuse. Quando quase estava instalando debian na máquina meu debianita favorito @kov reforçou uma idéia que eu já tinha descartado, a do chroot.

Chroot significa change root , ou seja ele altera o diretório “/” de uma instância do shell, isso permite que eu mude meu shell de distribuição sem ter que rebootar a máquina. Melhor que isso, em paralelo, e quantas forem necessárias… O comando é simples :


chroot /dir /bin/bash

Onde “/dir” é o diretório onde eu tenho minha distro alternativa …

Para resolver meu problema, precisava de um debian no meu opensuse, fiz o seguinte …

A solução :

Primeiro precisei instalar uma distro, como não uso debian (ou demais variantes) não tenho acesso ao debootstrap, ferramenta usada para criar subdistros debian … Pra não ter que instalar a distro em uma partição física da máquina, peguei um template de distro desses usados em máquinas virtuais , no caso os do openvz, clicando aqui . Baixei um tar do debian lenny i386 com uns 200 mb mais ou menos.

Feito isso, criei um diretório chamado /opt/debian, e descompactei a mini distro debian lá dentro usando tar -xzvpf , note que o “p” nesse comando é importante para criar os links, sockets,  e manter as permissões.

Assim basta usar o comando chroot /opt/debian /bin/bash para entrar em sua sub-distro, pronto né ? Não ! Tem uns pequenos detalhes pra resolver.

Internet e rede

Para que seu sistema alternativo tenha acesso à rede e internet você deve criar/editar o arquivo (dentro do ambiente chrooted) /etc/resolv.conf , por exemplo :


nameserver 4.2.2.1
nameserver 4.2.2.2

Com isso você já pode fazer um apt-get update/upgrade :)

Suporte ao hardware

Até aqui, a distro alternativa não tem acesso aos devices do sistema principal, como partições , cameras , pendrives etc… Para habilitar esses recursos saia do ambiente chrooted (Control + d) e use esses dois comandos simples :


mount -o bind /proc /opt/debian/proc
mount -o bind /dev /opt/debian/dev

Com isso o debian alternativo terá acesso ao hardware da mesma forma que a distro principal, inclusive com poder de formatar e destruir tudo :P

Suporte ao X

Suporte ao X não se faz apenas com /dev e o /proc habilitados, tem que liberar o acesso ao Xserver à partir do cliente X (ou seja de um terminal qualquer do seu usuário normal) com o comando xhost + . Como root (da distro principal) você deve “montar” a partição /tmp dentro do ambiente chroot :

mount -o bind /tmp /opt/debian/tmp


Agora o debian alternativo tem acesso ao soquete do X . Falta só dentro do chroot executar export DISPLAY=:0.0 agora tudo que vc abrir à partir do chroot vai abrir no X normal da sua distro principal =)

Para facilitar minha vida , criei 2 scripts que automatizam esse processo para mim, com apenas dois comando entro no meu chroot e começo a usar como num terminal comum. Se alguém quiser eu disponibilizo.

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks