Дистрибутив openSUSE представил альтернативный инсталлятор Agama 10

Разработчики проекта openSUSE опубликовали выпуск инсталлятора Agama 10, разрабатываемого для замены классического интерфейса установки SUSE и openSUSE, и примечательного отделением пользовательского интерфейса от внутренних компонентов YaST. Agama предоставляет возможность использования различных фронтэндов, например, фронтэнда для управления установкой через web-интерфейс. Для тестирования нового инсталлятора сформированы live-сборки для архитектур x86_64, ppc64le, s390x и ARM64, поддерживающие установку альфа-версии openSUSE Leap 16, непрерывно обновляемой сборки openSUSE Tumbleweed и редакции MicroOS на базе контейнеров. Код компонентов инсталлятора распространяется под лицензией GPLv2 и написан на языках Ruby, Rust и JavaScript/TypeScript.

Основными целями разработки 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-серверу.