Компания Microsoft опубликовала обновление дистрибутива Azure Linux 3.0.20241203. Дистрибутив развивается в качестве универсальной базовой платформы для Linux-окружений, используемых в облачной инфраструктуре, edge-системах и различных сервисах Microsoft. Собственные наработки проекта распространяются под лицензией MIT. Сборки пакетов формируются для архитектур aarch64 и x86_64. Размер установочного образа 750 МБ.
Среди изменений в новой версии:
- Пакетный фильтр iptables переведён на обработку команд через трансляцию правил в байткод nftables (по умолчанию вместо iptables-legacy задействован пакет iptables-nft).
- Для систем Aarch64 предложен дополнительный пакет с ядром kernel-64k, в котором используются большие страницы памяти, размером 64КБ (ядро собрано с опцией CONFIG_ARM64_64K_PAGES).
- В пакетный менеджер tdnf (аналог dnf на базе C libs), добавлена поддержка настройки "installonlypkgs", которая задействована для организации установки ядра kernel-64k.
- При использовании systemd-networkd включена обработка livenet rootfs из Dracut.
- Добавлен драйвер для сетевых адаптеров Intel Ethernet Connection E800.
- В обработчик логов fluent-bit добавлена поддержка языка Lua.
- Включена проверка по цифровой подписи ядер, загружаемых через механизм kexec.
- Для определения сборок контейнеров вместо проверки файла "/.dockerenv" задействована утилита systemd-detect-virt.
- Обновлены версии пакетов, среди которых ядро Linux 6.6.57, shim 15.8, SymCrypt 103.6.0, Valkey (форк Redis) 8.0.1, Go 1.23.3, MariaDB 10.11.10, PostgreSQL 16.5.
Дистрибутив Azure Linux предоставляет небольшой типовой набор основных пакетов, выступающих универсальной основой для создания начинки контейнеров, хост-окружений и сервисов, запускаемых в облачных инфраструктурах и на edge-устройствах. Более сложные и специализированные решения могут создаваться путём добавления дополнительных пакетов поверх Azure Linux, но основа для всех подобных систем остаётся неизменной, что упрощает сопровождение и подготовку обновлений.
Azure Linux применяется в качестве основы мини-дистрибутива WSLg, в котором предоставляются компоненты графического стека для организации запуска GUI-приложений Linux в окружениях на базе подсистемы WSL2 (Windows Subsystem for Linux). Расширенная функциональность в WSLg реализуется через включение дополнительных пакетов с композитным сервером Weston, XWayland, PulseAudio и FreeRDP.
Для управления сервисами и загрузкой применяется системный менеджер systemd. Для управления пакетами поставляются пакетные менеджеры RPM и DNF. SSH-сервер по умолчанию не включается. Для установки дистрибутива предоставляется инсталлятор, который может работать как в текстовом, так и в графическом режимах. В инсталляторе предоставляется возможность установки с полным или базовым набором пакетов, предлагается интерфейс для выбора дискового раздела, выбора имени хоста и создания пользователей.
Система сборки Azure Linux позволяет генерировать как отдельные RPM-пакеты на основе SPEC-файлов и исходных текстов, так и монолитные системные образы, формируемые при помощи инструментария rpm-ostree и обновляемые атомарно без разбивки на отдельные пакеты. Соответственно, поддерживается две модели доставки обновлений: через обновление отдельных пакетов и через перестроение и обновление всего системного образа. Доступен репозиторий, включающий около 3000 уже собранных RPM-пакетов, который можно использовать для компоновки собственных образов на основе файла конфигурации.
Базовая платформа включает только самые необходимые компоненты и оптимизирована для минимального потребления памяти и дискового пространства, а также для высокой скорости загрузки. В проекте применяется подход "максимальная безопасность по умолчанию", подразумевающий включение различных дополнительных механизмов для повышения защиты:
- Фильтрация системных вызовов при помощи механизма seccomp.
- Шифрование дисковых разделов.
- Верификация пакетов по цифровой подписи.
- Рандомизация адресного пространства.
- Защита от атак, связанных с символическими ссылками, mmap, /dev/mem и /dev/kmem.
- Режим только для чтения и запрет исполнения кода в областях памяти, в которых размещаются сегменты с данными ядра и модулей.
- Опция для запрета загрузки модулей ядра после инициализации системы.
- Использование iptables для фильтрации сетевых пакетов.
- Включение при сборке режимов защиты от переполнения стека, переполнений буфера и проблем с форматированием строк (_FORTIFY_SOURCE, -fstack-protector, -Wformat-security, relro).
Источник: https://www.opennet.ru/opennews/art.shtml?num=62369