Captura de tela da área de trabalho do Fedora Silverblue
Fedora/Reprodução
Área de trabalho do Fedora Silverblue
 

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:

  1. Maior segurança: A imutabilidade dificulta drasticamente a instalação de malware e vulnerabilidades, pois os arquivos do sistema não podem ser alterados.
  2. Estabilidade aprimorada: O sistema se torna mais confiável, pois as configurações permanecem consistentes e imunes a alterações acidentais ou mal-intencionadas.
  3. 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.

captura de tela da página do aplicativo de lista de tarefas Folio no Flathub
Flathub/Reprodução
Página do aplicativo de anotações Folio no Flathub
 

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