28 Creación de imágenes actualizadas de SUSE Linux Micro con Kiwi #
En esta sección se explica cómo generar imágenes actualizadas de SUSE Linux Micro para utilizarlas con Edge Image Builder, con Cluster API (CAPI) + Metal3, o para escribir la imagen de disco directamente en un dispositivo de bloques. Este proceso resulta útil en situaciones en las que es necesario incluir los parches más recientes en las imágenes de arranque iniciales del sistema inicial (para minimizar la transferencia de parches tras la instalación), o para situaciones en las que se usa CAPI, donde se prefiere reinstalar el sistema operativo con una imagen nueva en lugar de actualizar los hosts in situ.
Este proceso hace uso de Kiwi para crear la imagen. SUSE Edge incluye una versión en contenedor que simplifica todo el proceso con una utilidad de ayuda integrada que permite especificar el perfil de destino necesario. El perfil define el tipo de imagen de destino que se requiere. A continuación se muestran los tipos más comunes:
"Base": una imagen de disco de SUSE Linux Micro con un conjunto de paquetes reducido (incluye Podman).
"Base-SelfInstall": una imagen de autoinstalación basada en la imagen "Base" anterior.
"Base-RT": igual que "Base", pero usa un kernel en tiempo real (rt).
"Base-RT-SelfInstall": una imagen de autoinstalación basada en la imagen "Base-RT" anterior.
"Default": una imagen de disco de SUSE Linux Micro basada en la imagen "Base" anterior, pero con algunas herramientas más, como la pila de virtualización, Cockpit y salt-minion.
"Default-SelfInstall": una imagen de autoinstalación basada en la imagen "Default" anterior.
Consulte la documentación de SUSE Linux Micro 6.1 para obtener más detalles.
Este proceso funciona tanto para arquitecturas AMD64/Intel 64 como AArch64, aunque no todos los perfiles de imagen están disponibles para ambas arquitecturas. Por ejemplo, en SUSE Edge 3.3, donde se utiliza SUSE Linux Micro 6.1, no hay disponible actualmente ningún perfil con un kernel en tiempo real (es decir, "Base-RT" o "Base-RT-SelfInstall") para AArch64.
Es preciso usar un host de creación con la misma arquitectura de las imágenes que se están creando. En otras palabras, para crear una imagen AArch64, hay que utilizar un host de creación AArch64; y lo mismo ocurre para AMD64/Intel 64. Actualmente, no se admiten las creaciones cruzadas.
28.1 Requisitos previos #
El creador de imágenes Kiwi requiere lo siguiente:
Un host ("sistema de creación") SUSE Linux Micro 6.1 con la misma arquitectura que la imagen que se va a crear.
El sistema de creación debe haberse registrado vía
SUSEConnect
(el registro se utiliza para extraer los paquetes más recientes de los repositorios de SUSE).Una conexión a Internet que pueda usarse para extraer los paquetes necesarios. Si se conecta a través de proxy y el host de creación debe estar preconfigurado.
SELinux debe estar inhabilitado en el host de creación (ya que el etiquetado de SELinux tiene lugar en el contenedor y puede entrar en conflicto con la directiva del host).
Al menos 10 GB de espacio libre en disco para alojar la imagen de contenedor, la raíz de creación y las imágenes de salida resultantes.
28.2 Inicio #
Debido a ciertas limitaciones, actualmente es necesario inhabilitar SELinux. Conéctese al host de creación de imágenes de SUSE Linux Micro 6.1 y asegúrese de que SELinux está inhabilitado:
# setenforce 0
Cree un directorio de salida que se compartirá con el contenedor de creación de Kiwi para guardar las imágenes resultantes:
# mkdir ~/output
Obtenga la imagen más reciente de Kiwi Builder del registro de SUSE:
# podman pull registry.suse.com/edge/3.3/kiwi-builder:10.2.12.0
(...)
28.3 Creación de la imagen por defecto #
Este es el comportamiento por defecto del contenedor de imágenes de Kiwi si
no se proporcionan argumentos durante la ejecución de la imagen del
contenedor. El comando siguiente ejecuta Podman
con dos
directorios asignados al contenedor:
El directorio del repositorio de paquetes
/etc/zypp/repos.d
de SUSE Linux Micro del host subyacente.El directorio de salida
~/output
creado arriba.
El contenedor de imágenes de Kiwi requiere que se ejecute el guion de ayuda
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
(...)
Es de esperar que, si ejecuta este guion por primera vez, falle poco después de comenzar con el error "ERROR: Early loop device test failed, please retry the container run." (La prueba del dispositivo de bucle temprano ha fallado. Vuelva a intentar la ejecución del contenedor). Esto es un síntoma de que se están creando dispositivos de bucle en el sistema host subyacente que no son inmediatamente visibles dentro de la imagen del contenedor. Solo tiene que ejecutar de nuevo el comando y el guion continuará sin más problemas.
Al cabo de unos minutos, las imágenes se encuentran en el directorio de salida 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 Creación de imágenes con otros perfiles #
Para crear perfiles de imagen distintos, se utiliza la opción de comando "-p" en el guion de ayuda de la imagen del contenedor de Kiwi. Por ejemplo, para crear la imagen 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
(...)
Para evitar la pérdida de datos, Kiwi negará a ejecutarse si hay imágenes en
el directorio output
. Es necesario eliminar el contenido
del directorio de salida antes de proceder con rm -f
output/*
.
Como alternativa, puede crear una imagen ISO de autoinstalación con el kernel en tiempo real ("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 Creación de imágenes con sectores de gran tamaño #
Hay hardware que requiere una imagen con un tamaño de sectores grandes; por ejemplo, de 4096 bytes en lugar de los 512 bytes estándar. El creador en contenedor de Kiwi permite generar imágenes con bloques grandes especificando el parámetro "-b". Por ejemplo, para crear una imagen "Default-SelfInstall" con sectores grandes:
# 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 Uso de un archivo de definición de imagen de Kiwi personalizado #
En ciertos casos de uso avanzados, es posible usar un archivo de definición
de imagen de Kiwi personalizado (SL-Micro.kiwi
) junto con
los guiones de postcreación necesarios. Para ello, habrá que anular las
definiciones predeterminadas preempaquetadas por el equipo de SUSE Edge.
Cree un directorio nuevo y asígnelo a la imagen de contenedor donde busca el
guion de ayuda (/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
(...)
Esto solo es necesario para casos de uso avanzados y puede causar problemas de compatibilidad. Póngase en contacto con su representante de SUSE para obtener más ayuda.
Para obtener los archivos de definición de imagen de Kiwi por defecto incluidos en el contenedor, se pueden utilizar los siguientes 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.*
(...)