Tecnologia

Distrobox: como configurar e instalar suas primeiras distros

O Distrobox é uma ferramenta que permite gerenciar contêineres na sua distribuição, com os quais você pode compartilhar dispositivos removíveis USB, a pasta ou partição HOME do usuário, o áudio, além de soquetes dos ambientes gráficos X11 e Wayland. 

Contêineres em computação são ambientes ou espaços totalmente funcionais e independentes, “recipientes” que envolvem e isolam um aplicativo (seus processos, configurações, bibliotecas e dependências) ou até mesmo uma distribuição, mas, todos eles compartilham o kernel do sistema operacional e o hardware.

Para que você usaria o Distrobox?

Com essa versatilidade, o Distrobox permite que você execute comandos ou aplicativos sem medo de causar dano ao seu sistema, já que eles estarão “virtualizados” e isolados, especialmente se usar contêineres com acesso não-root.

Uma das utilidades dele é que você pode instalar um aplicativo que não esteja disponível na sua distribuição. Que tal instalar um aplicativo do Arch User Repository (AUR) no Fedora ou Ubuntu? Você não precisa instalar o Arch para isso, pode usar o Distrobox. 

Não tenha mais incompatibilidades entre o seu sistema e um único aplicativo que precisa utilizar, acesse todos os seus arquivos na pasta (ou partição) HOME, como as pastas Documentos e Downloads.

Outro uso interessante é comparar o desempenho das distros no seu hardware. Apesar da pequena queda de desempenho por estarem rodando dentro do Distrobox, o impacto deveria semelhante para todas elas. De qualquer forma, saiba que o desempenho de uma distribuição em contêiner é muito superior ao das máquinas virtuais. Você também pode testar a velocidade dos mirrors das distribuições.

Quer compilar um kernel ou uma ROM customizada para o seu Android? Você não precisa “contaminar” o seu sistema com as dependências necessárias, pode usar um ambiente de desenvolvimento completamente isolado e sem privilégios de root.

Uma imagem vale por mil palavras. Com o Distrobox, você pode ter muitas distribuições dentro da sua, sem sobrecarregar o sistema.

distrobox um por todos por um
“Um por todos, todos por um” do Linux.

Pré-requisitos para instalar o Distrobox

Tecnicamente, ele é um wrapper para contêineres do docker ou podman. Por isso, antes de instalá-lo, você precisa instalar o docker (versão 18.06.1 ou superior) ou o podman (versão 2.1.0 ou superior) para criar os contêineres. O docker pode permitir acesso root ao sistema host, enquanto o podman fornece apenas acesso não-root ao sistema host.

Fica um alerta, os contêineres do Distrobox estão intimamente integrados no sistema host, um contêiner com acesso root tem os mesmos privilégios administrativos do usuário root (ou “sudo”) e pode tomar ações que podem ser desastrosas ao seu sistema, caso você não saiba realmente o que está fazendo. Recomendamos o uso de um contêiner sem acesso root sempre que possível.

Verifique se os serviços do gerenciador de contêiner escolhido estão sendo executados, ou reinicie o computador. Por exemplo:

sudo systemctl enable --now docker
sudo systemctl enable --now podman

Instale o Distrobox no Linux

O comando abaixo baixa um shell script e o executa com privilégios de superusuário. Na página oficial do projeto, você pode analisar o shell script antes de executá-lo. Verifique se o pacote curl está instalado no seu sistema antes de executar o script.

curl https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh

Você também pode instalar usando os pacotes da sua própria distribuição (repositório):

  • Alpine (Edge);
  • Arch (AUR);
  • Debian (12/Unstable);
  • Devuan (Unstable);
  • Fedora (34/35/36/Rawhide);
  • Funtoo (1.4);
  • Kali Linux (Rolling);
  • nixpkgs (21.11/22.05/unstable);
  • OpenMandriva (Rolling/Cooker);
  • openSUSE (Tumbleweed);
  • Raspbian (Testing);
  • Ubuntu (kinetic).

Crie seu primeiro contêiner

Você precisa usar uma imagem para criar e executar um contêiner a partir dela. Ele faz isso através do seguinte comando.

distrobox-create --image [os-image:version] --name [container-name]

Se você precisa de acesso root ao sistema, utilize o comando abaixo:

distrobox-create --root --image [os-image:version] --name [container-name]

Nota: não é possível executar comandos no usuário root do anfitrião, ou seja, não é possível usar “sudo” ou “doas” antes dos comandos do Distrobox.

Por exemplo, para criar um contêiner do Fedora Rawhide (a versão de desenvolvimento do Fedora), chamando-o de “fedora-rawhide”, com acesso root:

distrobox-create --root --image fedora:rawhide --name fedora-rawhide
distrobox create

Se você quiser isolar os arquivos da HOME do contêiner mantendo simultaneamente acesso à HOME do host, pode informar o caminho para a pasta HOME do contêiner através do seguinte comando:

distrobox-create --root --image fedora:rawhide --name fedora-rawhide --home [caminho-para-home-contêiner]

Esses comandos baixam automaticamente a imagem do contêiner contendo a distribuição escolhida, disponibilizando-a para o Distrobox. Caso seja necessário, informe a variável de ambiente DOWNLOAD_KEYSERVER antes de executar o comando distrobox-create:

export DOWNLOAD_KEYSERVER="hkp://keyserver.ubuntu.com"

Ao final, uma mensagem informa que o contêiner foi criado com sucesso.

Para mais opções, consulte a página do projeto no Github ou execute o comando:

distrobox --help

Você encontra a lista das distribuições e contêineres oficialmente suportados pelo Distrobox ou qualquer imagem OCI disponível, por exemplo, nos repositórios docker-hub e quay.io.

DistribuiçãoVersão
AlmaLinux8; 8-minimal; 9; 9-minimal
Alpine Linux3.14; 3.15
AmazonLinux2; 2022
Archlinuxlatest
ClearLinuxlatest
CentOS7
CentOS Stream8; 9
RedHat (UBI)7; 8; 9
Debian7; 8; 9; 10; 11; testing; unstable
Neurodebiannd100
Fedora34; 35; 36; 37; Rawhide
Mageia8
OpensuseLeap; Tumbleweed
Oracle Linux7; 8
Rocky Linux8
Scientific Linux7
Slackware14.2
Ubuntu14.04; 16.04; 18.04; 20.04
Kali Linuxrolling
Void LinuxLatest
Lista de imagens disponíveis atualmente.

Se quiser uma imagem do Gentoo Linux, como era de se esperar, terá de compilá-la e o ele não dá suporte a contêineres do NixOS, pelo alto grau de integração com o host. Se você quer utilizar um contêiner no NixOS, será necessário usar o nix-shell.

Acesse um contêiner do Distrobox

Para acessar o shell de um contêiner, use o comando:

distrobox-enter --name [container-name]

Ou, para acessar como root use o seguinte comando no seu terminal:

distrobox-enter --root --name [container-name]

No exemplo que vínhamos usando, o comando seria:

distrobox-enter --root --name fedora-rawhide
distrobox enter

Nesse momento, o Distrobox faz a sua mágica:

  • Instala todas as dependências e pacotes básicos;
  • Monta as partições virtuais;
  • Faz a configuração dos temas, ícones e fontes;    
  • Cria os grupos e usuários;    
  • Outras modificações necessárias para que você possa rodar a nova distribuição dentro do seu sistema, como a integração dos soquetes e, se for desejado, habilitação do root (sudo).

Em geral, o tamanho das imagens é pequeno, variando entre 30 e 60 MB, podendo chegar a mais de 100 MB no caso do Mageia. O tempo de configuração inicial varia conforme o poder de processamento do seu computador, a disponibilidade de mirrors dos pacotes da distribuição, mas não deve ser superior a 15 minutos.

Repare que o shell do host é alterado imediatamente para o shell do contêiner, passando de diolinux@arch (host) para diolinux@fedora-rawhide (contêiner dentro do distrobox).

Atualize o contêiner

Você pode atualizar a imagem do contêiner de duas formas:

Usando o próprio Distrobox

A partir do shell do host (diolinux@arch), use o seguinte comando para entrar e atualizar o contêiner:

distrobox-enter --root --name [container-name] -- [update-commands]

No nosso exemplo, seria:

distrobox-enter --root --name fedora-rawhide -- sudo dnf upgrade
distrobox atualizacao imagem

Prosseguindo com a instalação após responder “y” (yes):

distrobox atualizacao imagem completa

Usando o shell do contêiner

Entre no shell do contêiner conforme indicado acima (distrobox-enter –root –name fedora-rawhide) e execute o comando de atualização da distribuição (repare no shell diolinux@fedora-rawhide):

sudo dnf update && sudo dnf upgrade
distrobox atualizacao imagem conteiner

Instale aplicativos no contêiner

Agora você já pode executar comandos dentro desse contêiner. No exemplo abaixo, o host é Arch, o contêiner o Fedora Rawhide, podemos instalar e executar o aplicativo neofetch com os comandos abaixo. Repare que, como numa máquina virtual, a distribuição host não importa mais, os comandos e o gerenciador de pacotes utilizado são os do contêiner:

sudo dnf install neofetch
neofetch
distrobox instalacao neofetch

Repare que as imagens usadas nos contêineres são “minimalistas” e, aos instalar os primeiros aplicativos, muitas dependências são automaticamente baixadas e instaladas (no nosso caso, 331MB):

distrobox instalacao neofetch dependencias

Rodando o neofetch no contêiner:

distrobox neofetch

Exporte aplicativos do contêiner para o host

Você também pode instalar aplicativos gráficos no contêiner para, por exemplo, usar um host com um ambiente gráfico KDE com aplicativos GTK “exportados”, evitando conflitos de dependências, sem “contaminar” o host. Após exportar aplicativos instalados no contêiner para o sistema host de forma transparente, você vai usá-los normalmente, sem nem mesmo perceber que ele está sendo executado dentro do contêiner. Use o comando:

distrobox-export --app [aplicativo]

No nosso exemplo, entrando no contêiner do Fedora, instalando e exportando o Geany para o Arch (a partir do shell do contêiner, diolinux@fedora-rawhide):

sudo dnf install geany
distrobox instalacao geany

Novamente, muitas dependências são necessárias (104MB), mas a cada instalação elas tendem a ser cada vez menos:

distrobox instalacao geany dependencias

Após instalado no contêiner (Fedora), o aplicativo Geany precisa ser exportando para o host (Arch), o que pode ser feito dentro do contêiner, repare no shell diolinux@fedora-rawhide:

distrobox-export --app geany
distrobox exportacao geany

Aguarde alguns instantes para que o Geany apareça no menu de aplicativos da sua distribuição (no nosso caso, Arch com ambiente KDE):

distrobox geany exportado

Liste os contêineres criados com o Distrobox

Para listar todos os contêineres criados com o Distrobox, use o seguinte comando a partir do shell do host (diolinux@arch):

distrobox-list --root
distrobox list

Saindo do contêiner

Para sair do contêiner e retornar ao sistema host, no terminal, digite “exit“.

distrobox exit

Removendo um contêiner

Se você não for mais utilizar um contêiner ou se simplesmente deseja recuperar espaço em disco, precisará pará-lo e, em seguida, poderá removê-lo por dois comandos:

distrobox-stop --root --name [container-name]
distrobox-rm --root --name [container-name]

Se falhar, pode forçar a remoção:

distrobox-rm --root --force --name [container-name]

No nosso exemplo, a partir do shell do host (diolinux@arch), seria:

distrobox-stop --root --name fedora-rawhide
distrobox-rm --root --name --name fedora-rawhide
distrobox stop delete

Comandos avançados do Distrobox

Depois que estiver familiarizado com ele, você pode realizar ações mais avançadas como, por exemplo, clonar um contêiner através do comando:

distrobox-create --name fedora-rawhide --clone fedora-rawhide-test

A lista completa de comandos está no manual, digite:

man distrobox

Resolvendo problemas de implantação do Distrobox

Como o Distrobox está integrado no sistema host, podem surgir problemas de implantação. É impossível fazer um guia solucionando todos os possíveis problemas, mas seguem dois que encontrei nas minhas experiências pessoais.

Erros de acesso

No caso de imagens com acesso root, você pode se deparar com mensagens de erro de acesso e talvez seja preciso executar os comandos abaixo como root (ou usando sudo), substituindo [username] pelo seu nome de usuário, antes de executar o comando distrobox-create no shell do host (diolinux@arch):

touch /etc/subuid /etc/subgid
if ! grep -q "[username]" /etc/subuid; then echo "[username]:100000:65536" | sudo tee --append /etc/subuid; fi
if ! grep -q "[username]" /etc/subgid; then echo "[username]:100000:65536" | sudo tee --append /etc/subgid; fi

Correção do idioma

Você deve ter reparado que os contêineres acima estavam em inglês, se deseja ver mensagens em português, instale e configure os pacotes locales no shell do contêiner. Por exemplo, em um contêiner Ubuntu que você quisesse utilizar para desenvolvimento:

sudo apt-get install locales
sudo locale-gen pt_BR.UTF-8
sudo update-locale LANG=pt_BR.UTF-8

Os comandos acima têm de ser adaptados segundo a distribuição do contêiner.

Você gostou de conhecer o Distrobox? Qual seria a utilidade dele para você?

Diolinux Ofertas - Aproveite os melhores descontos em diversos produtos!
64 postagens

Sobre o autor
Para mim, as melhores coisas da vida são gratuitas e não tem preço. Sou apaixonado por compartilhar conhecimento e experiências sobre tecnologia e software livre.
Artigos
    Postagens relacionadas
    Tecnologia

    Descomplicando termos técnicos para hospedagem de sites

    TecnologiaVídeo

    EcoFlow DELTA 2, uma poderosa estação de energia portátil

    Tecnologia

    Domine o CSS Grid Layout com o Penpot