Expanda as capacidades do seu sistema operacional com o distrobox, executando outros sistemas operacionais… sem máquina virtual!
| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. Mais detalhes clicando aqui.
1. Introdução
Imagine a possibilidade de executar qualquer distro Linux dentro do seu sistema Linux, seja ele qualquer um e mais leve/otimizado do que se fosse uma máquina virtual, consumindo o mínimo de hardware?
Use um container! Mas já abordamos isso aqui, e já falamos do Docker aqui também, por questões de contexto recomendo a leitura desses dois artigos.
Contextualizando, aqui também utilizaremos containers, porém em vez do Docker, vamos utilizar o Podman.
1.1 Podman
De forma muito direta o podman é “a mesma coisa” do Docker, com as mesmas sintaxes de comando, aonde era “docker ps -a” será “podman ps -a”.
Mas então por quê não utilizar o Docker?
O Docker possui muitas vantagens principalmente para uso em servidores; mas ele apresenta problemas de arquitetura para ser usado em computadores domésticos, do modo como foi construído. Entre estes problemas, destaco:
- Faltar mais desempenho.
A forma como o Docker funciona obedece ao agendador do kernel do host, ficando com limitações de hardware do próprio host. Ou seja, ele obedecerá também ao governador de CPU! Em alguns casos o desempenho poderá ser inferior. - Um serviço para todos governar.
O Docker executa sob o docker.service. Se você não tem pretensões de executar um servidor que ficará em execução 24h/7d, vai querer um controle mais granular de como e quanto esses containers vão iniciar e não quer correr o risco de esquecer algo rodando! No Podman por outro lado cada container executa isoladamente como uma aplicação; e não auto-inicia por padrão quando o sistema é desligado/reiniciado.
Portanto para todos os fins acima – e outros pormenores – vamos de Podman para configurar o Distrobox!
2. Distrobox
De forma simples o Distrobox é uma forma de criar um container e incrementá-lo para integrar ao sistema utilizando o Podman (ou o Docker) como base. Porém o Distrobox aplica diversos scripts para enriquecer os diminutos containers!
Assim, você fará o container ficar mais rico em recursos e acessando dispositivos removíveis – dispositivos de armazenamento USB -, D-Bus, diretório $HOME do usuário, as interfaces Wayland e X11, e muito mais!
Com isso, aplicações instaladas dentro dos sistemas dentro do distrobox podem executar como se fossem nativos no sistema principal!
Dar um “sudo apt install firefox” dentro do container do Ubuntu em execução sobre um host Fedora fará o Firefox ser instalado e podendo ser chamado diretamente pelo Fedora como se fosse nativo. Isso vale para qualquer aplicação de qualquer distro que seja configurado dessa maneira.
3. Configuração
Há um pré-requisito para instalar o Distrobox seguindo nossa sugestão anterior: Tenha o Podman no sistema.
Se você tem uma distribuição Linux relativamente moderna, recomenda-se instalar o podman de seus repositórios de software. No exemplo do Ubuntu, um simples:
$ sudo apt install podman
basta.
Aos fins deste tutorial vamos utilizar o Podman como super usuário para que ele tenha permissões de acesso a mais recursos do hardware e possa liberar todo seu potencial! Afinal, um container sem root é como um Android sem root… não faz mais do que executar aplicações básicas.
3.1 Instalando o Distrobox
Vai encontrar o distrobox no repositório destas distribuições:
- EPEL 8 e posterior
- Fedora 34 e posterior
- Ubuntu 22.10 ou posterior
A versão mais recente do Ubuntu recomendado para o público em geral é o Ubuntu 22.04 LTS, porém somente no 22.10 interim que o distrobox chegou no repositório.
Se você não encontrá-lo nos repositórios do seu sistema, não se preocupe, você poderá executar o seguinte comando para instalar o Distrobox manualmente – não requer root:
$ curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s — –prefix $HOME/.local/Distrobox
Instalou? Adicione as seguintes linhas ao final do seu arquivo .bashrc:
export PATH=$HOME/.local/Distrobox/bin:$PATH xhost +si:localuser:$USER 1> /dev/null
Isso vai adicionar o binário do distrobox ao path padrão, ou seja, poderá chamá-lo a qualquer momento bastando digitar:
$ distrobox
E também fará a ponte com o xhost para que seu sistema abra aplicações gráficas para que executem dentro dos containers do distrobox.
Agora vamos criar um container!
4. Comandos úteis
4.1 Criando um novo contêiner
A sintaxe para criar um novo contêiner é a seguinte:
$ distrobox-create --name NOME-DO-CONTAINER --image NOME-DO-SO:VERSAO --root
Aqui, você pode especificar qual nome deseja usar em seu container, o nome do sistema operacional que deseja usar, sua versão e o parâmetro –root fará esse container ter capacidade de root para executar aplicações como arp-scan e até mesmo VPN’s. – Por isso o Podman deve ser instalado como root, assim o distrobox apesar de não ser root, poderá rodar como root.
A lista completa de opções de sistemas e versões está aqui!
No nosso exemplo vamos criar um container do Ubuntu 22.04:
$ distrobox create ubuntu --image docker.io/library/ubuntu:22.04 --root
Assim ele será instalado!
4.2 Iniciando um container
Para iniciar nosso container de exemplo do item 4.1, digite:
$ distrobox-enter ubuntu
Quando você iniciar o contêiner pela primeira vez, o Distrobox fará uma configuração inicial automática de instalação, configurando as montagens, temas, ícones, fontes, grupos, usuários e etc. Com base no poder de processamento do seu computador, isso pode levar muito tempo.
Quando isso estiver concluído, você será deixado automaticamente na shell do container!
4.3 Instalando alguma coisa
Se você chegou até aqui, isso é o equivalente a instalar o Ubuntu 22.04 no seu computador e o sistema iniciou limpo, sem aplicações. Para instalar por exemplo o pacote gparted, execute normalmente:
$ sudo apt install gparted
Para integrar esse pacote ao sistema host, execute:
$ distrobox-export --app gparted
Ou seja, agora o gparted vai aparecer listado como uma aplicação “nativa” do sistema host! Isso vale pra basicamente qualquer pacote/aplicação do sistema em container.
4.4 Gerenciando
O Distrobox fornece alguns comandos que podem ser usados para gerenciamento:
- distrobox-list
Lista todos os containeres instalados - distrobox stop NOME-DO-CONTAINER
Para um container em execução - distrobox rm NOME-DO-CONTAINER
Exclui o container, incluindo todos os dados gerados dentro dele.
5. Conclusão
Usando o Distrobox, você pode instalar praticamente qualquer software, mesmo que não esteja disponível nos repositórios da sua distribuição.
Quer o Firefox em formato .deb do repositório do Debian em vez do Snap que vem originalmente no repositório do Ubuntu? Use o distrobox e resolva o problema!
#UrbanCompassPony
Fontes:
ÉLivreEAberto!
FreeCodeCamp
Autodidata, me aprofundei em sistemas operacionais baseados em UNIX®, principalmente Linux. Também procuro trazer assuntos correlacionados direta ou indiretamente, como automação, robótica e embarcados.