Спустя пять с половиной лет с момента формирования ветки 3.2.x опубликован релиз инструментария для построения инсталляторов Calamares 3.3.0, не зависящего от конкретных дистрибутивов Linux. Разработчикам дистрибутивов предоставлено несколько десятков готовых модулей c реализацией различных возможностей, востребованных в инсталляторах. Код написан на языке С++, графический интерфейс основан на библиотеке Qt (используется QML), для разработки модулей могут применяться языки C++ и Python.
Calamares предоставляет такие возможности, как ручной и автоматический режимы разбиения дисковых разделов, гибкая система адаптации внешнего вида, модульная архитектура, большой выбор готовых модулей (от управления загрузчиками, до управления пользователями). Например, имеются модули для использования NetworkManager, UPower, systemd-boot, GRUB, sgdisk, squashfs-tools и rsync. Установка может быть организована путём замены раздела – данные копируются на новый раздел, который делается активным вместо ранее используемого раздела, что удобно для тестирования новых установок, оставляя возможность отката на прошлую версию.
Для создания собственного установщика на базе Calamares достаточно выбрать готовые модули или написать собственные, определить логику установки дистрибутива и настроить внешний вид. Для упрощения и ускорения разработки модули и компоненты Calamares могут создаваться на языке Python. Все конфигурационные данные хранятся в формате YAML. Calamares уже используется для организации установки дистрибутивов Manjaro, Lubuntu, Asahi, EndeavourOS, wattOS, Rhino, Nitrux, Siduction, Peppermint OS, GeckoLinux, Chakra, NetRunner, KaOS, OpenMandriva и KDE neon. Проект развивается при участии сообществ KDE, Fedora, Kubuntu и Maui.
- Обеспечена полная совместимость базового фреймворка и большинства модулей с Qt 6 и библиотеками KDE Frameworks 6. Для всех QML-модулей предоставлен набор совместимых с Qt6 файлов QML. Сохранена возможность сборки с Qt5 и KDE Frameworks 5.
- В интерфейсе выбора пакетов “packagechooser” добавлена поддержка метаданных AppStream 1.0.
- В модуле “keyboard” реализована возможность выбора использования настроек X11 или DBus-сервиса FreeDesktop locale1. Обеспечено сохранение настроек раскладки клавиатуры для всех не-ASCII раскладок.
- В модуле “dracut” появилась поддержка настройки имени ядра.
- Интерфейс модулей “keyboardq” и “localeq” переведён с ComboBox на виджет Drawer.
- В редактор разделов (модуль “partition”) добавлена возможность выбора между форматами LUKS и LUKS2. Обеспечена возможность пропуска установки загрузчика. Задействована функциональность библиотеки KPMCore 21.12 (KDE Partition Manager).
- Добавлен модуль “zfshostid” для генерации /etc/hostid для ZFS.
- В модуле “bootloader” расширены опции для использования в командной строке ядра.
- В модуле “displaymanager” прекращена поддержка дисплейного менеджера kdm.
- В модуле “fstab” полностью переделана работа с конфигурацией /etc/fstab. Многие настройки перенесены в модуль “mount”.
- Обновлены требования к стилю кодирования – форматирование кода теперь соответствует clang-format 15 или 16.
- Переработаны пространства имён, используемые для кода на C++ (все вызовы перенесены в пространство имён Calamares, убраны привязки к пространству имён CalamaresUtils).
- В качестве маски для подстановки вместо @{var} задействован ${var}.
- Библиотека Boost::Python убрана из зависимостей – для разработки на языке Python теперь используется встроенный набор привязок pybind11. Для возвращения сборки с Boost::Python можно выставить переменную WITH_PYBIND11=OFF.