Linux Kamarada

KIWI: ferramenta do openSUSE para criar imagens de sistema no Linux

Se você deseja criar uma distribuição Linux baseada no openSUSE, como o Linux Kamarada, precisa conhecer o KIWI. 

O KIWI é uma ferramenta de código aberto desenvolvida pelo Projeto openSUSE que permite criar imagens de sistema no Linux, baseadas principalmente no openSUSE e no SUSE Linux Enterprise, mas também em outras distribuições. Com o KIWI, você pode criar imagens em diferentes formatos para diferentes casos de uso, incluindo:

  • Live ISOs (como LiveCDs, LiveDVDs, LiveUSBs);
  • Máquinas virtuais (como QEMU, KVM, VirtualBox, VMware, Xen, WSL);
  • Nuvem (Amazon EC2, Google Compute Engine, Microsoft Azure);
  • Contêineres (Podman, Docker, Containerd);
  • Dispositivos embarcados (Raspberry Pi, Pinephone);
  • e mais (como PXE).

A criação de imagens com o KIWI é feita de forma automatizada – o KIWI em si é um conjunto de scripts em Python e Bash – e não requer interação humana – toda a informação que o KIWI precisa é passada principalmente por arquivos XML e scripts. Ele também pode ser integrado com o Open Build Service (OBS). Tudo isso torna o KIWI ideal para DevOps. Se você precisa criar ambientes sob demanda ou distribuir sistemas pré-configurados, o KIWI pode te ajudar bastante.

Conceitos básicos

Uma imagem de sistema (geralmente chamada apenas de “imagem”) é uma instalação completa de um sistema operacional Linux dentro de um arquivo. Esse arquivo pode ser uma imagem ISO para ser gravada em um CD/DVD, ou uma imagem de disco virtual VDI para ser usado no VirtualBox, um arquivo .raw para ser extraído para um cartão de memória a ser inserido no Raspberry Pi, etc.

Dentre os conceitos do KIWI, existe também o conceito de aplicação (appliance), que é um sistema pré-configurado criado para um propósito específico. Inclui um conjunto de pacotes e configurações otimizadas para uma determinada finalidade. Uma aplicação pode ter diversos tipos de imagens, que podem ser usadas, como vimos, em máquinas físicas, virtuais ou na nuvem.

Por exemplo, o Linux Kamarada seria uma aplicação, um sistema criado para ser usado por iniciantes em Linux. No momento, o Linux Kamarada gera apenas imagens ISO que podem ser usadas em desktops e notebooks, mas poderia gerar também imagens para Raspberry Pi, Pinephone, WSL, etc.

Etapas da construção de imagens com o KIWI

O processo de construção de imagens com o KIWI é dividido em duas etapas principais.

A primeira é a etapa de preparação (prepare step), na qual o KIWI cria o sistema de arquivos raiz da imagem. Nessa etapa, o KIWI instala pacotes e aplica personalizações ao sistema, como scripts de configuração e adição de arquivos. Ao final dessa etapa, você pode, se quiser, fazer um chroot para testar o sistema (mas note que isso não é recomendado, tampouco fazer modificações manuais, menciono a possibilidade apenas para que você entenda o que é o resultado final dessa etapa).

A segunda é a etapa de criação (create step), na qual o KIWI empacota o sistema de arquivos gerado na etapa de preparação e gera a imagem pronta para ser usada – por exemplo, uma imagem ISO, ou uma imagem de disco virtual VDI, ou um arquivo .raw, etc. Nessa etapa, o KIWI também pode aplicar personalizações à imagem – por exemplo, adicionar um manual em PDF à imagem ISO, de modo que o usuário final poderá consultá-lo sem precisar dar boot pelo CD/DVD/USB.

Normalmente, se tudo ocorre bem, o KIWI não pausa após a etapa de preparação e já prossegue diretamente à etapa de criação. Mas é possível invocar o KIWI para executar apenas a etapa de preparação e, depois, invocá-lo novamente para executar apenas a etapa de criação.

Caso algo dê errado, ter conhecimento dessas duas etapas ajuda a identificar onde está acontecendo o erro com base na mensagem que é apresentada pelo KIWI.

Pré-requisitos

Para usar o KIWI, seu sistema precisa atender aos seguintes requisitos:

  • uma distribuição Linux recente, atualizada e, de preferência (mas não necessariamente) a mesma distribuição da imagem (por exemplo, se você vai usar o KIWI para criar uma imagem do openSUSE Leap, é recomendado que esteja usando também o openSUSE Leap para rodar o KIWI);
  • Python versão 3.5 ou superior (pacote python311);
  • espaço livre em disco suficiente para preparar e criar a imagem, o mínimo recomendado são 15 GB, mas, dependendo do que você quer fazer, pode precisar de 40 GB (para compilar o Linux Kamarada, por exemplo) ou mais;
  • Git (pacote git), para clonar repositórios (não é realmente necessário para rodar o KIWI, mas usaremos neste tutorial para obter os exemplos); e
  • qualquer tecnologia de virtualização para testar a imagem (também não é realmente necessário para rodar o KIWI, mas usaremos neste tutorial, e eu recomendo que você instale o VirtualBox).

Instalando o KIWI

Os pacotes mais atualizados do KIWI podem ser encontrados no openSUSE Build Service no projeto Virtualization:Appliances:Builder. Obtê-los de lá é a forma recomendada de instalar o KIWI.

Para instalar o KIWI no openSUSE Leap 15.6 dessa forma, execute:

1
2
# zypper addrepo http://download.opensuse.org/repositories/Virtualization:/Appliances:/Builder/openSUSE_Leap_15.6 kiwi
# zypper --gpg-auto-import-keys install python311-kiwi

Para testar se o KIWI foi instalado corretamente, execute:

1
$ kiwi -v

Esse comando deve informar a versão do KIWI instalada:

1
KIWI (next generation) version 10.2.16

O KIWI também pode ser instalado de outras formas. Se precisar de mais informações, consulte a documentação do KIWI.

Exemplos de descrições de imagens do KIWI

Há dois repositórios do GitHub onde você pode obter exemplos oficiais de descrições de imagens do KIWI:

As imagens live do openSUSE Leap 15.6 não são mais listadas no site get.opensuse.org, mas eu as encontrei “escondidas” aqui. Os códigos-fonte dessas imagens podem ser encontrados no openSUSE Build Service no projeto openSUSE:Leap:15.6:Images.

Você também pode usar como exemplo o Linux Kamarada. O código-fonte da imagem está disponível no GitLab, no repositório Linux-Kamarada-GNOME.

Se você souber de mais imagens do KIWI cujo código-fonte é público e podem servir de exemplos, por favor, me indique nos comentários.

Criando sua primeira imagem com o KIWI

Para demonstrar o funcionamento do KIWI e usá-lo pela primeira vez, vamos criar uma imagem com base em um exemplo.

Comece instalando o Git, caso você ainda não o tenha:

1
# zypper in git

Então, obtenha o código-fonte do KIWI:

1
$ git clone https://github.com/OSInside/kiwi.git

O código-fonte é clonado para a pasta kiwi e os exemplos estão na pasta build-tests, dentro dela. Você pode listar os exemplos com o comando a seguir:

1
$ tree -L 3 kiwi/build-tests

Escolhi usar o exemplo da imagem live baseada no openSUSE Leap 15.6 (x86/leap/test-image-live), mas fique à vontade para escolher outro exemplo.

Portanto, de onde estamos, o caminho para esse exemplo é: kiwi/build-tests/x86/leap/test-image-live.

Para preparar e criar a imagem com base nesse exemplo, invoque o comando kiwi da seguinte forma:

1
2
3
4
$ sudo kiwi system build \
    --description kiwi/build-tests/x86/leap/test-image-live \
    --set-repo https://download.opensuse.org/distribution/leap/15.6/repo/oss \
    --target-dir /tmp/myimage

O KIWI começa a rodar, o processo pode demorar alguns minutos:

Ao final, o KIWI indica o caminho para a imagem ISO produzida:

Para testar a imagem ISO, crie uma máquina virtual do VirtualBox, insira a imagem ISO no leitor de DVD virtual e inicie a máquina virtual:

Para entrar no sistema, o usuário é root e a senha é linux:

Feito! Você criou sua primeira imagem com o KIWI. E ela foi testada e está funcionando!

Note que o KIWI gerou mais alguns arquivos na pasta /tmp/myimage:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ tree -L 2 /tmp/myimage/

/tmp/myimage/
├── build
│   ├── image-root
│   └── image-root.log
├── kiwi.result
├── kiwi.result.json
├── kiwi-test-image-live.x86_64-1.15.3.changes
├── kiwi-test-image-live.x86_64-1.15.3.iso
├── kiwi-test-image-live.x86_64-1.15.3.packages
└── kiwi-test-image-live.x86_64-1.15.3.verified

2 directories, 7 files

A pasta build/image-root contém o sistema de arquivos raiz da imagem, foi onde o sistema foi instalado durante a etapa de preparação.

O arquivo build/image-root.log é o log produzido pelo KIWI durante todo o processo de construção. Contém todas as mensagens que foram exibidas no terminal e possivelmente mais informações. Você pode abri-lo pra conferir se tudo ocorreu bem ou se alguma mensagem de erro foi apresentada.

O arquivo com extensão .packages contém uma lista dos pacotes instalados na imagem. Pode ser útil também.

Continua…

Agora que você criou e iniciou com sucesso sua primeira imagem, pode começar a ajustá-la para atender às suas necessidades.

No próximo post, veremos como fazer isso.

Siga o Linux Kamarada nas redes sociais para saber quando for publicado.

Me paga um café?
Se você gostou muito, se foi muito útil pra você, será que vale um café? Se quiser, você pode "me pagar um café" pelo PayPal ou contribuir com o projeto de outras formas.

Comentários

Sobre

O Projeto Linux Kamarada visa divulgar e promover o Linux como um sistema operacional robusto, seguro, versátil e fácil de usar, adequado para o uso diário seja em casa, no trabalho ou no servidor. Os focos do projeto são principalmente distribuição e documentação.

Anúncios

Facebook

Autor