Компания Microsoft опубликовала обновление дистрибутива CBL-Mariner 1.0.20210901 (Common Base Linux Mariner), который развивается в качестве универсальной базовой платформы для Linux-окружений, используемых в облачной инфраструктуре, edge-системах и различных сервисах Microsoft. Проект нацелен на унификацию применяемых в Microsoft Linux-решений и упрощение поддержания Linux-систем различного назначения в актуальном состоянии. Наработки проекта распространяются под лицензией MIT.
В новом выпуске:
- Началось формирование базового iso-образа (700 МБ). В первом выпуске готовые ISO-образы не предоставлялись, подразумевалось, что пользователь может сам создать образ с необходимой начинкой (cборочные инструкции подготовлены для Ubuntu 18.04).
- Реализована поддержка автоматического обновления пакетов, для чего в состав включено приложение Dnf-Automatic.
- Ядро Linux обновлено до версии 5.10.60.1. Обновлены версии программ, в том числе openvswitch 2.15.1, golang 1.16.7, logrus 1.8.1, tcell 1.4.0, gonum 0.9.3, testify 1.7.0, crunchy 0.4.0, xz 0.5.10, swig 4.0.2, squashfs-tools 4.4, mysql 8.0.26.
- В OpenSSL предоставлена возможность возвращения поддержки TLS 1 и TLS 1.1.
- Для проверки исходных текстов инструментария задействована утилита sha256sum.
- В состав включены новые пакеты: etcd-tools, cockpit, aide, fipscheck, tini.
- Удалены пакеты brp-strip-debug-symbols, brp-strip-unneeded и ca-legacy. Удалены SPEC-файлы для пакетов Dotnet и aspnetcore, которые теперь собираются основной командой разработчиков .NET и размещаются в отдельном репозитории.
- В используемые версии пакетов перенесены исправления уязвимостей.
Напомним, что дистрибутив CBL-Mariner предоставляет небольшой типовой набор основных пакетов, выступающих универсальной основой для создания начинки контейнеров, хост-окружений и сервисов, запускаемых в облачных инфраструктурах и на edge-устройствах. Более сложные и специализированные решения могут создаваться путём добавления дополнительных пакетов поверх CBL-Mariner, но основа для всех подобных систем остаётся неизменной, что упрощает сопровождение и подготовку обновлений. Например, CBL-Mariner применяется в качестве основы мини-дистрибутива WSLg, в котором предоставляются компоненты графического стека для организации запуска GUI-приложений Linux в окружениях на базе подсистемы WSL2 (Windows Subsystem for Linux). Расширенная функциональность в WSLg реализуется через включение дополнительных пакетов с композитным сервером Weston, XWayland, PulseAudio и FreeRDP.
Система сборки CBL-Mariner позволяет генерировать как отдельные RPM-пакеты на основе SPEC-файлов и исходных текстов, так и монолитные системные образы, формируемые при помощи инструментария rpm-ostree и обновляемые атомарно без разбивки на отдельные пакеты. Соответственно, поддерживается две модели доставки обновлений: через обновление отдельных пакетов и через перестроение и обновление всего системного образа. Доступен репозиторий, включающий около 3000 уже собранных RPM-пакетов, который можно использовать для компоновки собственных образов на основе файла конфигурации.
Дистрибутив включает только самые необходимые компоненты и оптимизирован для минимального потребления памяти и дискового пространства, а также для высокой скорости загрузки. Дистрибутив также примечателен включением различных дополнительных механизмов для повышения защиты. В проекте применяется подход «максимальная безопасность по умолчанию». Предоставляется возможность фильтрации системных вызовов при помощи механизма seccomp, шифрования дисковых разделов, верификации пакетов по цифровой подписи.
Активированы поддерживаемые в ядре Linux режимы рандомизации адресного пространства, а также механизмы защиты от атак, связанных с символическими ссылками, mmap, /dev/mem и /dev/kmem. Для областей памяти, в которых размещаются сегменты с данными ядра и модулей, установлен режим только для чтения и запрещено исполнение кода. Опционально доступна возможность запрета загрузки модулей ядра после инициализации системы. Для фильтрации сетевых пакетов задействован инструментарий iptables. На этапе сборки по умолчанию включены режимы защиты от переполнения стека, переполнений буфера и проблем с форматированием строк (_FORTIFY_SOURCE, -fstack-protector, -Wformat-security, relro).
Для управления сервисами и загрузкой применяется системный менеджер systemd. Для управления пакетами поставляются пакетные менеджеры RPM и DNF (вариант tdnf от vmWare). SSH-сервер по умолчанию не включается.
Для установки дистрибутива предоставляется инсталлятор, который может работать как в текстовом, так и в графическом режимах. В инсталляторе предоставляется возможность установки с полным или базовым набором пакетов, предлагается интерфейс для выбора дискового раздела, выбора имени хоста и создания пользователей.