documentation.suse.com / Documentação do SUSE Edge / Guias de procedimentos / Criando imagens atualizadas do SUSE Linux Micro com o Kiwi

28 Criando imagens atualizadas do SUSE Linux Micro com o Kiwi

Esta seção explica como gerar imagens atualizadas do SUSE Linux Micro para usar com o Edge Image Builder, usando Cluster API (CAPI) + Metal3, ou como gravar a imagem do disco diretamente em um dispositivo em blocos. Esse processo é útil quando há necessidade de incluir os patches mais recentes nas imagens de inicialização do sistema inicial (para minimizar a transferência de patches após a instalação) ou quando a CAPI é usada, em que é preferível reinstalar o sistema operacional com uma nova imagem em vez de fazer upgrade dos hosts no local.

Esse processo usa o Kiwi para a criação da imagem. O SUSE Edge vem com uma versão conteinerizada que simplifica o processo geral com um utilitário auxiliar integrado, o que permite especificar o perfil de destino obrigatório. O perfil define o tipo de imagem de saída necessário, sendo os mais comuns relacionados a seguir:

  • "Base": uma imagem de disco do SUSE Linux Micro com um conjunto de pacotes reduzido (inclui o podman).

  • "Base-SelfInstall": uma imagem SelfInstall conforme a imagem "Base" acima.

  • "Base-RT": igual à imagem "Base" acima, mas usa o kernel em tempo real (rt) no lugar.

  • "Base-RT-SelfInstall": uma imagem SelfInstall conforme a "Base-RT" acima.

  • "Default": uma imagem de disco do SUSE Linux Micro conforme a "Base" acima, mas com algumas outras ferramentas, como pilha de virtualização, Cockpit e salt-minion.

  • "Default-SelfInstall": uma imagem SelfInstall conforme a imagem "Default" acima.

Consulte a documentação do SUSE Linux Micro 6.1 para obter mais detalhes.

Esse processo funciona nas duas arquiteturas AMD64/Intel 64 e AArch64, embora nem todos os perfis de imagem estejam disponíveis para ambas, por exemplo, no SUSE Edge 3.3, em que o SUSE Linux Micro 6.1 é usado, um perfil com kernel em tempo real (ou seja, "Base-RT" ou "Base-RT-SelfInstall") não está disponível para AArch64 no momento.

Nota
Nota

É necessário usar um host de build com a mesma arquitetura das imagens que estão sendo criadas. Em outras palavras, para criar uma imagem AArch64, é necessário usar um host de build AArch64, e vice-versa para AMD64/Intel 64. Não há suporte para builds cruzados no momento.

28.1 Pré-requisitos

O construtor de imagens Kiwi requer o seguinte:

  • Um host SUSE Linux Micro 6.1 ("sistema de build") com a mesma arquitetura da imagem que está sendo criada.

  • O sistema de build já deve ter sido registrado pelo SUSEConnect (o registro é usado para obter os pacotes mais recentes dos repositórios SUSE).

  • Uma conexão de Internet para obter os pacotes necessários. Se conectado por proxy, o host de build precisa ser pré-configurado.

  • É necessário desabilitar o SELinux no host de build (já que ocorre a rotulagem do SELinux no contêiner e isso pode entrar em conflito com a política do host).

  • Pelo menos 10 GB de espaço livre no disco para acomodar a imagem do contêiner, a raiz do build e uma ou mais imagens de saída resultantes.

28.2 Introdução

Devido a algumas limitações, é necessário desabilitar o SELinux. Conecte-se ao host de build da imagem do SUSE Linux Micro 6.1 e confirme se o SELinux está desabilitado:

# setenforce 0

Crie um diretório de saída para compartilhar com o contêiner de build do Kiwi no qual salvar as imagens resultantes:

# mkdir ~/output

Extraia a imagem mais recente do construtor Kiwi do SUSE Registry:

# podman pull registry.suse.com/edge/3.3/kiwi-builder:10.2.12.0
(...)

28.3 Criando a imagem padrão

Este é o comportamento padrão do contêiner de imagens do Kiwi quando nenhum argumento é inserido durante a execução da imagem do contêiner. O seguinte comando executa o podman com dois diretórios mapeados para o contêiner:

  • O diretório do repositório de pacotes /etc/zypp/repos.d do SUSE Linux Micro do host subjacente.

  • O diretório de saída ~/output criado acima.

O contêiner de imagens do Kiwi requer a execução do script auxiliar build-image como:

# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ~/output:/tmp/output \
    -it registry.suse.com/edge/3.3/kiwi-builder:10.2.12.0 build-image
(...)
Nota
Nota

Se você está executando o script pela primeira vez, é esperado que ocorra uma falha nele logo depois de ser iniciado com o erro: "ERROR: Early loop device test failed, please retry the container run." (ERRO: Falha no teste do dispositivo no ciclo inicial. Tente executar o contêiner novamente.). Trata-se de um sintoma em que os dispositivos que são criados em loop no sistema host subjacente não ficam imediatamente visíveis dentro da imagem do contêiner. Você apenas precisa executar o comando novamente, e ele deverá prosseguir sem problemas.

Após alguns minutos, as imagens estarão disponíveis no diretório de saída local:

(...)
INFO: Image build successful, generated images are available in the 'output' directory.

# ls -1 output/
SLE-Micro.x86_64-6.1.changes
SLE-Micro.x86_64-6.1.packages
SLE-Micro.x86_64-6.1.raw
SLE-Micro.x86_64-6.1.verified
build
kiwi.result
kiwi.result.json

28.4 Criando imagens com outros perfis

Para criar perfis de imagens diferentes, é usada a opção de comando "-p" no script auxiliar da imagem do contêiner do Kiwi. Por exemplo, para criar a imagem ISO "Default-SelfInstall":

# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ~/output:/tmp/output \
    -it registry.suse.com/edge/3.3/kiwi-builder:10.2.12.0 build-image -p Default-SelfInstall
(...)
Nota
Nota

Para evitar perda de dados, o Kiwi recusará a execução se houver imagens no diretório output. É necessário remover o conteúdo do diretório de saída antes de prosseguir com o rm -f output/*.

Uma alternativa é criar a imagem ISO SelfInstall com o kernel RealTime ("kernel-rt"):

# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ~/output:/tmp/output \
    -it registry.suse.com/edge/3.3/kiwi-builder:10.2.12.0 build-image -p Base-RT-SelfInstall
(...)

28.5 Criando imagens com tamanho de setor grande

Alguns modelos de hardware exigem imagens com tamanho de setor grande, ou seja, 4096 bytes em vez do padrão de 512 bytes. O construtor Kiwi conteinerizado permite gerar imagens com tamanho de bloco grande especificando o parâmetro "-b". Por exemplo, para criar a imagem "Default-SelfInstall" com um tamanho de setor grande:

# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ~/output:/tmp/output \
    -it registry.suse.com/edge/3.3/kiwi-builder:10.2.12.0 build-image -p Default-SelfInstall -b
(...)

28.6 Usando um arquivo de definição de imagem personalizado do Kiwi

Para casos de uso avançados, é possível usar um arquivo de definição de imagem personalizado do Kiwi (SL-Micro.kiwi) junto com os scripts necessários após a criação. Para isso, substitua as definições padrão predefinidas pela equipe do SUSE Edge.

Crie e mapeie um novo diretório para a imagem do contêiner em que o script auxiliar faz a busca (/micro-sdk/defs):

# mkdir ~/mydefs/
# cp /path/to/SL-Micro.kiwi ~/mydefs/
# cp /path/to/config.sh ~/mydefs/
# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ~/output:/tmp/output -v ~/mydefs/:/micro-sdk/defs/ \
    -it registry.suse.com/edge/3.3/kiwi-builder:10.2.12.0 build-image
(...)
Atenção
Atenção

Isso é necessário apenas em casos de uso avançados e pode causar problemas de suporte. Contate seu representante SUSE para receber mais conselhos e orientações.

Para acessar os arquivos de definição de imagem padrão do Kiwi incluídos no contêiner, use os seguintes comandos:

$ podman create --name kiwi-builder registry.suse.com/edge/3.3/kiwi-builder:10.2.12.0
$ podman cp kiwi-builder:/micro-sdk/defs/SL-Micro.kiwi .
$ podman cp kiwi-builder:/micro-sdk/defs/SL-Micro.kiwi.4096 .
$ podman rm kiwi-builder
$ ls ./SL-Micro.*
(...)
Documentation survey