Linux: o que são distribuições imutáveis?
Entenda como funcionam as distribuições imutáveis, ou “atômicas”, e suas vantagens em relação às convencionais
Atualizado em
Ao contrário das distribuições Linux tradicionais, onde os sistemas de arquivos são modificáveis e sujeitos a alterações frequentes, as distribuições imutáveis oferecem uma abordagem diferente, mantendo o sistema de arquivos em um estado constante e inalterável e proporcionando maior estabilidade, segurança e facilidade de manutenção. Essas características têm feito essa abordagem se tornar bastante popular.
Em uma distribuição Linux imutável, o sistema de arquivos raiz é montado em modo somente leitura. Isso significa que, após a instalação, o sistema operacional não pode ser modificado diretamente. Qualquer atualização ou alteração é realizada por meio de um processo de “recriação” ou substituição de todo do sistema de arquivos, garantindo que o sistema base permaneça sempre consistente. Esse processo de atualização é frequentemente chamado “Atomic” ou “Atômico” – daí vem o termo distros atômicas.
Essa característica reduz significativamente os riscos de corrupção do sistema e a possibilidade de introdução de falhas durante atualizações ou instalações de software. Além disso, facilita a recuperação do sistema para um estado anterior, caso ocorra algum problema, uma vez que o sistema base permanece imutável.
As principais vantagens das distribuições Linux imutáveis incluem:
- Maior segurança: A imutabilidade dificulta drasticamente a instalação de malware e vulnerabilidades, pois os arquivos do sistema não podem ser alterados.
- Estabilidade aprimorada: O sistema se torna mais confiável, pois as configurações permanecem consistentes e imunes a alterações acidentais ou mal-intencionadas.
- Facilidade de manuntenção: A imutabilidade simplifica o gerenciamento do sistema, pois as atualizações são realizadas de maneira atômica e reversíveis, minimizando o risco de falhas.
A adoção de distribuições imutáveis pode exigir um período de adaptação, especialmente para aqueles que estão acostumados com distribuições tradicionais e a liberdade que elas oferecem em termos de configuração e personalização do sistema.
Exemplos de distribuições imutáveis
Fedora Silverblue
Talvez a mais popular das distribuições imutáveis, o Fedora Silverblue é uma versão do Fedora Workstation projetada para ser robusta e confiável, especialmente para desenvolvedores e usuários de contêineres. A abordagem do Silverblue é baseada em imagens do sistema, onde cada atualização é tratada como uma nova imagem completa do sistema. Isso permite um rollback fácil para uma versão anterior em caso de problemas. Além disso, o Silverblue integra-se bem com ferramentas de desenvolvimento de contêineres, como o Podman, facilitando o trabalho em ambientes de desenvolvimento isolados e consistentes.
openSUSE MicroOS
Focada em ambientes de contêineres e dispositivos embarcados, o openSUSE MicroOS oferece uma base imutável com atualizações transacionais, o que significa que as atualizações são aplicadas de forma atômica, garantindo que o sistema esteja sempre em um estado coerente. Essa abordagem é particularmente útil em ambientes de produção, onde a confiabilidade e a previsibilidade são cruciais. O MicroOS também se destaca pela sua facilidade de configuração e gerenciamento, tornando-o ideal para administradores de sistemas que necessitam de um ambiente robusto e de fácil manutenção.
NixOS
O NixOS é uma distribuição Linux que utiliza o gerenciador de pacotes Nix para garantir que o sistema de arquivos raiz permaneça imutável. Com o Nix, todas as configurações e instalações de software são definidas de maneira declarativa, permitindo configurações e instalações reprodutíveis. Isso significa que você pode especificar o estado desejado do seu sistema em um arquivo de configuração, e o Nix garantirá que o sistema corresponda a esse estado. Além disso, o NixOS facilita a criação de ambientes de desenvolvimento isolados e reproduzíveis, tornando-o uma escolha popular entre desenvolvedores e pesquisadores.
Alpine Linux
Alpine Linux é uma distribuição Linux leve e segura, conhecida por seu uso em contêineres devido ao seu pequeno tamanho e simplicidade. Apesar de não ser imutável por padrão, o Alpine pode ser configurado para ser imutável usando o modo “diskless” ou “run-from-RAM”, onde o sistema de arquivos raiz é carregado na memória RAM e todas as mudanças são voláteis — com o sistema sendo restaurado ao estado original a cada reboot. Isso faz do Alpine uma excelente opção para dispositivos embarcados e sistemas onde a imutabilidade e a segurança são prioridades.
Como instalar programas em distribuições imutáveis?
A natureza imutável de distribuições como Fedora Silverblue levanta uma questão importante: como instalar programas em um sistema que não pode ser alterado diretamente? Felizmente, existem diversas abordagens e ferramentas que permitem a instalação e gestão de software em distribuições imutáveis.
Uma das principais maneiras de instalar aplicativos em distros imutáveis é através de um sistema de distribuição universal como o Flatpak, que permite a instalação de programas em um ambiente isolado. O Flatpak vem instalado por padrão no Fedora Workstation, Silverblue e Kinoite. Basta ativar o repositório Flathub com o comando abaixo e reiniciar o sistema para ter acesso a milhares de aplicativos:
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
Feito isso, é só acessar o site flathub.org e instalar os apps desejados, direto do navegador, clicando no botão “Install” nas páginas de descrição.
Alternativamente, você pode usar também o comando flatpak install flathub
para instalar aplicativos do Flathub direto do terminal, mas é preciso saber o nome exato do pacote do aplicativo no repositório. Para instalar o editor de imagens GIMP, por exemplo, você deve usar o seguinte comando:
flatpak install flathub org.gimp.GIMP
Outra ferramenta útil no Fedora Silverblue é o Toolbox, que cria contêineres para ambientes de desenvolvimento e testes.
Você pode criar um contêiner com o comando toolbox create
e acessar com toolbox enter
Dentro do contêiner, você pode instalar pacotes usando o gerenciador de pacotes DNF, como faria em uma instalação Fedora tradicional. Para instalar o GIMP, é só usar o comando abaixo:
sudo dnf install gimp
O openSUSE MicroOS utiliza atualizações transacionais para garantir que o sistema permaneça consistente e confiável. Para instalar pacotes, é necessário usar o comando transactional-update
, como no exemplo abaixo:
sudo transactional-update pkg install gimp
O comando acima instala o editor de imagens GIMP no openSUSE MicroOS, mas para usá-lo é necessário reiniciar o sistema.
Flatpaks também podem ser usados no para instalar programas no openSUSE MicroOS. O comando para ativar o repositório Flathub é o mesmo do Fedora Silverblue.
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
Depois de reiniciar o sistema, basta ir em flathub.org para instalar os aplicativos desejados.
No NixOS, a instalação de programas é gerenciada pelo Nix, um poderoso gerenciador de pacotes que permite definir todo o ambiente do sistema de forma declarativa.
Se você deseja instalar um programa temporariamente, de modo que ele seja removido após a reinicialização ou após sair da sessão de terminal, você pode usar o comando nix-env
, como no exemplo abaixo:
nix-env -iA nixpkgs.gimp
Para uma instalação permanente, você deve editar o arquivo de configuração do NixOS e adicionar o GIMP à lista de pacotes do sistema. Isso garante que ele estará disponível após reinicializações e em todas as sessões de terminal.
sudo nano /etc/nixos/configuration.nix
Uma janela do nano
será aberta no terminal. Adicione gimp
após a linha environment.systemPackages
. Deve ficar assim:
environment.systemPackages = with pkgs; [
gimp
];
Recompile e aplique a configuração do NixOS:
sudo nixos-rebuild switch
Outra abordagem é usar o nix-shell
para criar um ambiente temporário com o GIMP instalado. Este método é útil para testes e desenvolvimento, onde você deseja ter acesso a um conjunto específico de ferramentas sem afetar o sistema global.
No terminal, cole o comando abaixo:
nix-shell -p gimp
Dentro do nix-shell
, execute o GIMP:
gimp