La compañía Microsoft ha publicado la primera actualización estable de la nueva rama del distribuidor Azure Linux 3.0, que anteriormente se conocía como CBL-Mariner. El distribuidor se desarrolla como una plataforma base universal para entornos Linux utilizados en infraestructuras en la nube, sistemas edge y varios servicios de Microsoft. El proyecto tiene como objetivo unificar las soluciones Linux empleadas en Microsoft y simplificar el mantenimiento de sistemas Linux de diversos propósitos en su estado actual. Los desarrollos del proyecto se distribuyen bajo la licencia MIT. Las compilaciones de paquetes se generan para las arquitecturas aarch64 y x86_64. El tamaño de la imagen de instalación es de 740 MB.
Entre los cambios en la nueva versión:
- El núcleo de Linux se ha actualizado a la versión 6.6 (anteriormente se utilizaba el núcleo 5.15). Se ha añadido soporte para la aplicación de parches en un núcleo en funcionamiento (live patching), lo que permite corregir vulnerabilidades en el núcleo sin reiniciar.
- Se han propuesto nuevas versiones de paquetes, entre los que se encuentran systemd 255, glibc 2.38, GCC 13.2, clang 18.1, OpenSSL 3.3, rpm 4.18.2, ruby 3.3.0, BIND 9.20, containerd 1.7.13, kunc 1.1.12, ostree 2024.5, rust 1.75, Perl 5.38, Python 3.12.3, QEMU 8.2.0.
- El sistema de control de acceso SELinux se ha configurado por defecto en modo «enforcing».
- Por defecto, se activa una jerarquía unificada de cgroups v2. La principal diferencia de cgroups v2 respecto a v1 es la aplicación de una jerarquía común de cgroups para todos los tipos de recursos, en lugar de jerarquías separadas para la distribución de recursos de CPU, el control del consumo de memoria y la entrada/salida.
- Se han añadido herramientas para la migración desde otros distribuidores (OSsku In-Place Migration) en nodos en la nube de Microsoft Azure, por ejemplo, se puede reemplazar una instalación de Ubuntu por Azure Linux.
- Se ha añadido soporte para nuevas GPU de NVIDIA, como las NVIDIA A100 y H100, así como el NVIDIA GPU Operator para automatizar la gestión de controladores NVIDIA en nodos con Azure Linux.
La distribución Azure Linux proporciona un pequeño conjunto estándar de paquetes básicos que actúan como una base universal para crear el contenido de contenedores, entornos host y servicios que se ejecutan en infraestructuras en la nube y en dispositivos edge. Las soluciones más complejas y especializadas pueden ser creadas añadiendo paquetes adicionales sobre Azure Linux, pero la base para todos estos sistemas permanece inalterada, lo que simplifica el mantenimiento y la preparación de actualizaciones.
Por ejemplo, Azure Linux se utiliza como base para el mini-distribuidor WSLg, que proporciona componentes de la pila gráfica para permitir la ejecución de aplicaciones GUI de Linux en entornos basados en el subsistema WSL2 (Windows Subsystem for Linux). La funcionalidad ampliada en WSLg se implementa mediante la inclusión de paquetes adicionales con composición. el servidor Weston, XWayland, PulseAudio y FreeRDP.
Para gestionar los servicios y la carga se utiliza el gestor de sistema systemd. Los gestores de paquetes RPM y DNF se incluyen para la gestión de paquetes. El servidor SSH no está habilitado por defecto. Se proporciona un instalador para la instalación de la distribución, que puede funcionar tanto en modo texto como gráfico. En el instalador, se ofrece la opción de instalar con un conjunto completo o básico de paquetes, así como una interfaz para seleccionar las particiones del disco, elegir el nombre del host y crear usuarios.
El sistema de construcción de Azure Linux permite generar tanto paquetes RPM individuales a partir de archivos SPEC y textos fuente, como imágenes del sistema monolíticas, que se crean utilizando la herramienta rpm-ostree y se actualizan de manera atómica sin fragmentarse en paquetes individuales. Por lo tanto, se admiten dos modelos de entrega de actualizaciones: mediante la actualización de paquetes individuales y mediante la reconstrucción y actualización de toda la imagen del sistema. Se dispone de un repositorio que incluye alrededor de 3000 paquetes RPM ya compilados, que se pueden utilizar para componer sus propias imágenes basadas en un archivo de configuración.
La plataforma básica incluye solo los componentes más necesarios y está optimizada para un consumo mínimo de memoria y espacio en disco, así como para una alta velocidad de arranque. El proyecto adopta un enfoque de 'máxima seguridad por defecto', que implica habilitar varios mecanismos adicionales para aumentar la protección:
- Filtración de llamadas al sistema mediante el mecanismo seccomp.
- Cifrado de particiones del disco.
- Verificación de paquetes mediante firma digital.
- Aleatorización del espacio de direcciones.
- Protección contra ataques relacionados con enlaces simbólicos, mmap, /dev/mem y /dev/kmem.
- Modo de solo lectura y prohibición de la ejecución de código en áreas de memoria donde se almacenan segmentos de datos del núcleo y módulos.
- Opción para prohibir la carga de módulos del núcleo después de la inicialización del sistema.
- Uso de iptables para filtrar paquetes de red.
- Inclusión al compilar de modos de protección contra desbordamiento de pila, desbordamientos de búfer y problemas de formateo de cadenas (_FORTIFY_SOURCE, -fstack-protector, -Wformat-security, relro).
Fuente: opennet.ru
