Sistemas operacionais imutáveis e suas tecnologias

Nesse artigo, apresento o Fedora Silverblue e suas características, além de demonstrar também as vantagens de se utilizar um sistema operacional imutável no dia a dia, seja para a utilização básica ou para desenvolvimento de software.

[ Hits: 13.032 ]

Por: Perfil removido em 14/10/2022


Gerenciamento de software



Bom, se não podemos instalar aplicações de modo tradicional - através de gerenciadores de pacotes - como gerenciar softwares em um sistema imutável? No Fedora Silverblue, temos três formas principais de instalação de softwares.

Flatpak

Aplicações flatpaks são aplicações em sandbox, semelhante aos apps de Android, os quais possuem permissões específicas para interagir com o sistema. O GNOME Software (Silverblue/GNOME) e o Discover (Kinoite/KDE) oferecem apenas aplicações flatpaks em sistemas imutáveis. Isto é, toda aplicação listada nessas lojas são flatpaks.

Essa é a forma mais indicada para usuários não técnicos, que desejam utilizar um sistema operacional estável e imutável. Toda aplicação em flatpak funciona independentemente do sistema, sendo de fácil administração. Os flatpaks são facilmente atualizados pela loja de software, e são instalados dentro da pasta do usuário (~/.var/).

Por isso, não é necessário reiniciar o sistema após a instalação, atualização, ou remoção de um aplicativo flatpak, pois estes não são gerenciados pelo ostree. Entretanto, flatpaks funcionam apenas com aplicações gráficas, como Google Chrome, Brave, Visual Studio Code, Android Studio, etc.

Toolbox

O Toolbox é uma ferramenta nativa do Fedora, e funciona em conjunto com o Podman - um gerenciador de contêineres, semelhante ao Docker. O Toolbox preenche o espaço vazio deixado pelo flatpak, que são aplicativos de linha de comando, SDKs, compiladores, e IDEs.

Isto é, qualquer aplicação que não exista em flatpak ou que não funcione bem nesse formato (IDEs, por exemplo), podem ser utilizados com Toolbox. Embora o toolbox lide com contêineres, a integração com o host (som, vídeo, microfone, área de trabalho) funciona perfeitamente. Além disso, a pasta do usuário também é automaticamente compartilhada para dentro do contêiner.

É possível instalar jogos, ferramentas de transmissão, editores de vídeos e áudio, tudo dentro de um contêiner, e usá-los como se estivesse em uma instalação mutável do Fedora (Wokstation). Essa opção certamente é a mais desejada para desenvolvedores, pois é possível criar diversos ambientes de desenvolvimento para finalidades distintas.

O Toolbox já vem instalado no Silverblue e Kinoite, bastando digitar:

toolbox create nome_do_container

Após a criação do contêiner, basta executar o comando:

toolbox enter nome_do_container

Para entrar no contêiner e começar a instalar pacotes.

O funcionamento é exatamente o mesmo de uma distribuição tradicional do Fedora Workstation, podendo instalar pacotes com o comando:

sudo dnf install pacote

Por padrão, o toolbox utiliza apenas imagens do Fedora Core OS para criar contêineres. Porém, é possível utilizar imagens de outras distribuições, criando "Containerfiles" ou Dockerfiles específicos. E para fins de curiosidade, é dessa forma que o toolbox cria contêineres com integração ao host:

    podman --log-level error
    create --dns none
    --env TOOLBOX_PATH=${TOOLBOX_PATH}
    --env XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR}
    --hostname toolbox
    --ipc host
    --label com.github.containers.toolbox=true
    --mount type=devpts,destination=/dev/pts
    --name
    --network host
    --no-hosts
    --pid host
    --privileged
    --security-opt label=disable
    --ulimit host
    --userns keep-id
    --user root:root
    --volume /:/run/host:rslave
    --volume /dev:/dev:rslave
    --volume /run/dbus/system_bus_socket:/run/dbus/system_bus_socket
    --volume ${HOME}:${HOME}:rslave
    --volume ${TOOLBOX_PATH}:${TOOLBOX_PATH}:ro
    --volume ${XDG_RUNTIME_DIR}:${XDG_RUNTIME_DIR}
    --volume /run/avahi-daemon/socket:/run/avahi-daemon/socket
    --volume /run/.heim_org.h5l.kcm-socket:/run/.heim_org.h5l.kcm-socket
    --volume /run/pcscd/pcscd.comm:/run/pcscd/pcscd.comm
    --volume /run/media:/run/media:rslave
    --volume /etc/profile.d/toolbox.sh:/etc/profile.d/toolbox.sh:ro
    <image>
    toolbox --log-level debug
    init-container --gid 1000
    --home $HOME
    --shell $SHELL
    --uid $UID
Os valores entre <> são informados ao toolbox pelo usuário. Perceba que o toolbox é um wrapper para o podman, podendo replicar esses comandos em qualquer distribuição Linux com o podman ou o docker instalado.

rpm-ostree

Com o rpm-ostree também é possível instalar pacotes na base do sistema. Porém nesse caso, o ideal é utilizarmos esse recurso somente em casos onde o Flatpak e o Toolbox não consegue resolver. Nesse sentido, podemos citar a instalação de drivers nvidia e impressoras, módulos de virtualização (VirtualBox, VMWare), VPNs, e shells alternativos (zsh, fish, etc).

Os pacotes instalados pelo rpm-ostree ficam separados em um espaço chamado de "pacotes em camadas" (LayeredPackages), sendo possível visualizá-los utilizando o comando:

rpm-ostree status

Caso queria remover todos os LayeredPackages e manter apenas a base, basta digitar o comando:

rpm-ostree reset

Para instalar um pacote na base, digite:

rpm-ostree install nome_do_pacote

Será necessário reiniciar o sistema após a instalação, pois será gerada uma nova entrada no menu do grub.
Página anterior     Próxima página

Páginas do artigo
   1. Imutabilidade
   2. Atualizações atômicas
   3. OSTree
   4. Gerenciamento de software
   5. Bônus: toolbox-shortcuts
   6. Finalização
Outros artigos deste autor

Open source fomentando o conhecimento

Estratégias de backup e ferramentas livres

Restaurando o LILO com o Slackware 9.1 (HOWTO)

FreeRADIUS - Conceitos Básicos - Parte II

Instalando programas utilizando os fontes no seu Slackware com o checkinstall

Leitura recomendada

Linux Básico - Parte II

Conceitos sobre o X-Window

Introdução ao Arch Build System

Iniciar no Linux sem medo

Mamãe, quero Arch! (parte 2 - final)

  
Comentários
[1] Comentário enviado por caslubas em 16/10/2022 - 15:21h

Excelente artigo!

[2] Comentário enviado por xerxeslins em 17/10/2022 - 09:13h


Vou favoritar, porque acredito que será leitura obrigatória para quem for usar um sistema imutável desses.

--
Chega uma hora na vida que você só quer bater o prego e não perder tempo estudando a ciência da construção de um martelo.

[3] Comentário enviado por removido em 17/10/2022 - 12:29h


[1] Comentário enviado por caslubas em 16/10/2022 - 15:21h

Excelente artigo!


Obrigado!

[4] Comentário enviado por removido em 17/10/2022 - 12:52h


[2] Comentário enviado por xerxeslins em 17/10/2022 - 09:13h


Vou favoritar, porque acredito que será leitura obrigatória para quem for usar um sistema imutável desses.

--
Chega uma hora na vida que você só quer bater o prego e não perder tempo estudando a ciência da construção de um martelo.



Um complemento, é que algumas distros imutáveis seguem uma abordagem um pouco diferente, pois não fazem uso do OSTree. Nesse caso, o OSTree se aplica ao Silverblue/Kinoite, Endless OS, e GNOME OS, mas não ao MicroOS, este faz uso do BTRFS para criar snapshots antes de qualquer atualização atômica.

Mas com exceção do OSTree/rpm-ostree, o flatpak e o toolbox são ferramentas universais nesse tipo de sistema. Inclusive, uma dica: no lugar do toolbox, pode ser utilizado o distrobox, o qual seria mais fácil para quem está iniciando nesse tipo de sistema.

[5] Comentário enviado por maurixnovatrento em 23/10/2022 - 13:23h


Excelente artigo.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10

[6] Comentário enviado por Creto em 01/01/2023 - 07:48h

O artigo está de parabéns! Até porque eu li e concordei com o "que está escrito", mas discordo em um uso de um sistema feito para ser esse modelo em que eu não posso alterar, ou quem sabe corrigí-lo, como quase sempre faço.


Uso GNU/Linux sou livre, papa-chibé e açaí (mas é açaí mesmo aqui do Pará)
BigLinux 22.0.0 Sikaris, Manjaro Plasma 22.0.0 Sikaris, PCLinuxOS versão BR Plasma

[7] Comentário enviado por removido em 01/01/2023 - 08:53h


[6] Comentário enviado por Creto em 01/01/2023 - 07:48h

O artigo está de parabéns! Até porque eu li e concordei com o "que está escrito", mas discordo em um uso de um sistema feito para ser esse modelo em que eu não posso alterar, ou quem sabe corrigí-lo, como quase sempre faço.


Uso GNU/Linux sou livre, papa-chibé e açaí (mas é açaí mesmo aqui do Pará)
BigLinux 22.0.0 Sikaris, Manjaro Plasma 22.0.0 Sikaris, PCLinuxOS versão BR Plasma


Obrigado pelo comentário.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts