Основными целями разработки Agama является устранение имеющихся ограничений графического интерфейса, расширение возможностей по использованию функциональности YaST в других приложениях, уход от привязки к одному языку программирования и стимулирование создания альтернативных настроек представителями сообщества. Инсталлятор содержит такие функции, как выбор начального набора приложений, настройка сетевого подключения, языка, клавиатуры, часового пояса и параметров локализации, подготовка устройства хранения и разбивка разделов, добавления пользователей в систему.
Для установки пакетов, проверки оборудования, разбивки дисков и прочих необходимых при инсталляции функций в Agama продолжают использоваться библиотеки YaST, поверх которых реализованы сервисы-прослойки, абстрагирующие доступ к библиотекам через унифицированный коммуникационный протокол на базе HTTP. В инсталляторе используется многопроцессная архитектура, благодаря которой интерфейс взаимодействия с пользователем не блокируется во время выполнения других работ. Базовый интерфейс для управления установкой построен с использованием web-технологий. Web-интерфейс написан на JavaScript с использованием фреймворка React и компонентов PatternFly. Сервис для обмена сообщениями, а также встроенный http-сервер, написанный на языке Ruby.
В новой версии:
- Добавлена возможность генерации QR-кода, содержащего ссылку для открытия web-интерфейса инсталлятора в браузере, что упрощает подключение к инсталлятору со смартфона.
- Добавлены компоненты для подсветки синтаксиса, используемые при редактировании командой «agama config edit» файла конфигурации в формате JSON. Для редактирования по умолчанию вызывается Vim (через переменную окружения EDITOR можно указать любой другой редактор).
- В режиме автоматической установки реализована возможность создания групп разделов LVM, логических разделов LVM, а также пулов и разделов LVM с динамическим выделением места в хранилище (thin provisioning). Использование уже существующих логических разделов и групп разделов пока не поддерживается. Добавлено два режима автоматического удаления разделов — безусловное удаление и удаление только при необходимости (когда не хватает места для создания указанных разделов).
- Добавлен загрузочный параметр «agama.install_url», через который можно указать URL репозитория для установки пакетов, отличного от репозитория, указанного в конфигурации.
- Предоставлена возможность разработки компонентов web-интерфейса инсталлятора на языке Typescript. В дальнейшем разработчики намерены постепенно по мере необходимости переводить код с JavaScript на Typescript.
- В web-интерфейсе для управления состоянием в асинхронном режиме задействован фреймворк TanStack Query.
- Размер хранилища, доступного для установки дополнительных пакетов после загрузки в Live-режиме, расширен с 500 МБ до 3.5 ГБ.
- Для автоматизированного тестирования web-интерфейса вместо системы Playwright задействована JavaScript-библиотека Puppeteer.
- Компоненты управления инсталлятором, запускаемые из командной строки, переведены с DBus на использования HTTP-клиента, обращающегося к встроенному в инсталлятор HTTP-серверу.
Источник: http://www.opennet.ru/opennews/art.shtml?num=62147