Instalando o Ubuntu em um ambiente chroot jail no Archlinux

Devido ao fim de semestre na UFAL, não tive tempo para postar nada no mês passado, assim como não tive tempo também para trabalhar em meus próprios projetos.

Acho que esse é o meu primeiro post desde que meu blog foi agregado ao Planeta GNU/Linux Brasil e ao planeta Arch Linux Brasil.

Nesse post vou detalhar o processo de instalar um sistema Ubuntu aprisionado em um ambiente chroot gerenciado pelo Archlinux. Se você quiser ler mais sobre esse assunto recomendo a leitura das páginas:

Eu estou fazendo isso para trabalhar com o ROS no Archlinux sem a necessidade de usar gambiarras no sistema sem recorrer a uma VM e para colocar todos os pacotes não-livres como o skype dentro de um ambiente isolado. Alguns outros usos para um ambiente chroot podem ser:

  • Isolar aplicativos instáveis e inseguros
  • Rodar aplicativos 32-bit em ambientes 64-bit
  • Testar novos pacotes antes de instalá-los em um ambiente de produção
  • Rodar aplicativos mais velhos em sistemas mais modernos
  • Criar novos pacotes, permitindo um controle cuidadoso sobre as dependências que são instaladas

A arquitetura do ambiente

Com esse processo, pretendo criar um ambiente chroot que é separado em um daemon e um script a ser executado pelo usuário. O daemon vai preparar o ambiente chroot e adicionaremos ele a lista de daemons do sistema. O script a ser executado pelo usuário vai configurar o ambiente para que aplicativos usem o servidor X local e o servidor pulseaudio local.

Escolhi a versão LTS do Ubuntu porque é chato ficar gerenciado um ambiente chroot ou qualquer outro ambiente que não seja seu ambiente primário, então só vou precisar manter a cada 1,5 ano essa instalação.

Escolhi também a versão 32-bit do Ubuntu por conta de meu sistema ser 64-bit. Aí o que eu, dificilmente, não conseguir rodar nativamente aproveito para colocar no ambiente chroot.

Preparando o ambiente chroot

  1. Instale o pacote debootstrap
  2. Crie o diretório /srv/chroot/lucid
  3. Escolha um mirror aqui
  4. Execute o comando a seguir como root
  5. O meu comando ficou assim:
  6. Aguarde o processo de download e instalação terminar

Criando um daemon para o ambiente chroot

Crie o arquivo /etc/rc.d/chrootbuntu com o seguinte conteúdo:

Adicione permissão de execução ao arquivo com o comando:

Adicione-o na lista de DAEMONS no seu arquivo /etc/rc.conf para iniciá-lo junto com o sistema.

schroot

Schroot é uma ferramenta que permite usuários comuns rodarem comandos em ambientes chroot. Além disso, a ferramenta prepara o ambiente realizando algumas tarefas de configuração automaticamente, como montagens de sistemas de arquivos. Para instalá-la:

Após isso, adicione as seguintes linhas no arquivo /etc/schroot/schroot.conf:

Após isso você poderá abrir um shell no ambiente chroot usando seu usuário com o comando:

Se você tentar usar o comando anterior agora, deve ver o erro:

Isso ocorre porque o Archlinux e o Ubuntu usam sistemas de configuração de interfaces de redes diferentes, então a etapa de configuração de rede falha. Para evitar que a ferramenta schroot tente configurar a rede, remova o arquivo 20nssdatabases da pasta /etc/schroot/setup.d (recomendo movê-lo para uma pasta de backup).

Configurando o ambiente chroot

Para entrar no ambiente chroot sem usar o schroot, você pode usar, como root, o comando:

Nesse momento, a instalação do Ubuntu está crua, e muitos programas não vão funcionar corretamente. Um dos problemas nesse momento é configurar um locale, que no Ubuntu é feito automaticamente quando você instala algum language pack:

Precisamos também de um editor de texto para editar alguns arquivos de configuração:

Após isso, no ambiente chroot, edite o arquivo /etc/apt/sources.list para que ele fique com o seguinte conteúdo:

Então use o comando a seguir para atualizar a lista de pacotes:

Antes de prosseguir com a instalação de outros pacotes, é interessantes instalar os dois pacotes a seguir, pois o apt-get sozinho não é capaz de tratar da configuração dos pacotes.

Agora seria interessante criar um usuário comum dentro desse ambiente chroot, pois não é uma boa prática realizar todas as tarefas como root:

Configuração do X

Para rodar aplicativos gráficos que estão dentro do ambiente chroot, você precisa, a partir do seu ambiente Archlinux, em um terminal logado como seu usuário normal, rodar o seguinte comando:

Após isso qualquer aplicativo que você rode a partir do seu ambiente chroot vai usar automaticamente o servidor X em execução no seu sistema.

Bônus: ROS

ROS é o meta sistema operacional open source para robótica com o qual um grupo aqui na UFAL está trabalhando. Um dos problemas de instalá-lo no Archlinux, é que seus scripts apontam para o python mais recente, mas ele usa o python2, ocasionando muitos problemas, principalmente em distribuições rolling release como o Archlinux.

A situação do ROS no Ubuntu é mais estável, sendo a distribuição bem suportada oficialmente e ele pode ser instalado dentro do ambiente chroot que criamos normalmente, seguindo as instruções do site oficial:

http://www.ros.org/wiki/diamondback/Installation/Ubuntu

Próxima etapa

Muitos aplicativos gráficos costumam utilizar o dbus, então é recomendado que o dbus esteja configurado no ambiente chroot. Na próxima parte do artigo tentarei configurar o dbus e o pulseaudio para que os aplicativos do Ubuntu rodem suavemente dentro do Archllinux.

Fontes

Minhas fontes de consulta para criar esse ambiente e esse artigo foram:

Tags:, ,

8 responses to “Instalando o Ubuntu em um ambiente chroot jail no Archlinux”

  1. Dielson Sales says :

    Tá vendo? No final até rolling release tem seus problemas. Não tenho necessidade de fazer isso no momento, mas parabéns por compartilhar a experiência.

    • Vinipsmaker says :

      Requer uma mudança se adaptar ao Rolling Release, mas não é algo como certo ou errado. Eu prefiro. E mesmo em um sistema onde rolling release não fosse adequado, como em um servidor, por exemplo, eu optaria pelas ferramentas do Arch, e usar o ArchServer.

  2. Tiago Menezes says :

    Vinicius,

    boa essa solução para rodar o Ubunut ou outro sistema via chroot, na prática.

    Mas estou tendo um problema com o script de inicialização está gerando erro na linha 8.

    Tens alguma coisa ?

    Abraço.

  3. Bruno Normande says :

    Muito bom, tá funcionando direitinho aqui ^^

    só fiquei confuso com o comando ‘schroot -c lucid’ pois com ele eu continuo tenho acesso ao meu sistema de arquivos fora da pasta do chroot… e não fica o (lucid) antes do meu nome…

    Já com o ‘chroot /srv/chroot/lucid’ eu entro direto como root, tem como entrar como o user que eu criei?

    • Vinipsmaker says :

      A ferramenta schroot é uma ferramenta que tenta fazer tudo automaticamente, executando todos os scripts encontrados na pasta /etc/schroot/setup.d.
      Você pode modificar esses scripts para que eles se adequem a sua necessidade, ou pode usar o chroot normal.

      Tudo depende da sua filosofia =p

      EDIT:
      E sobre entrar como seu usuário, direto, experimente o comando abaixo:
      chroot /srv/chroot/lucid/ /bin/bash -c "su seu_user"

Comentários (with MarkDown support)

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: