Os desenvolvedores do projeto openSUSE publicaram a versão do instalador Agama 10, desenvolvido para substituir a interface clássica de instalação do SUSE e openSUSE, e notável por separar a interface do usuário dos componentes internos do YaST. O Agama oferece a possibilidade de utilizar diferentes front-ends, como um front-end para gerenciar a instalação através de uma interface web. Para testar o novo instalador, foram formadas builds live para as arquiteturas x86_64, ppc64le, s390x e ARM64, que suportam a instalação da versão alfa do openSUSE Leap 16, da build continuamente atualizada do openSUSE Tumbleweed e da edição MicroOS baseada em contêineres. O código dos componentes do instalador é distribuído sob a licença GPLv2 e escrito nas linguagens Ruby, Rust e JavaScript/TypeScript.

Os principais objetivos do desenvolvimento do Agama são eliminar as limitações existentes da interface gráfica, expandir as funcionalidades de uso do YaST em outros aplicativos, desvincular-se de uma única linguagem de programação e estimular a criação de alternativas de configuração por membros da comunidade. O instalador contém funções como seleção de um conjunto inicial de aplicativos, configuração de conexão de rede, língua, teclado, fuso horário e parâmetros de localização, preparação do dispositivo de armazenamento e particionamento, além da adição de usuários ao sistema.
Para a instalação de pacotes, verificação de hardware, particionamento de discos e outras funções necessárias durante a instalação, o Agama continua utilizando as bibliotecas do YaST, sobre as quais são implementados serviços de camada que abstraem o acesso às bibliotecas através de um protocolo de comunicação unificado baseado em HTTP. O instalador utiliza uma arquitetura multiprocessada, a qual permite que a interface de interação com o usuário não fique bloqueada durante a execução de outras tarefas. A interface básica para gerenciar a instalação é construída utilizando tecnologias web. A interface web é escrita em JavaScript usando o framework React e os componentes PatternFly. O serviço de troca de mensagens, assim como um servidor http embutido, são escritos na linguagem Ruby.
Na nova versão:
- Foi adicionada a possibilidade de geração de um QR code, contendo um link para abrir a interface web do instalador no navegador, facilitando a conexão ao instalador a partir de um smartphone.

- Foi adicionada a capacidade de destacar a sintaxe utilizada ao editar o arquivo de configuração com o comando "agama config edit" no formato JSON. Por padrão, o Vim é chamado para edição (é possível especificar qualquer outro editor através da variável de ambiente EDITOR).

- No modo de instalação automática, foi implementada a capacidade de criar grupos de partições LVM, partições lógicas LVM, bem como pools e partições LVM com alocação dinâmica de espaço de armazenamento (thin provisioning). O uso de partições lógicas e grupos de partições já existentes ainda não é suportado. Dois modos de remoção automática de partições foram adicionados — remoção incondicional e remoção somente quando necessário (quando não há espaço suficiente para criar as partições especificadas).
- Foi adicionado o parâmetro de inicialização "agama.install_url", pelo qual é possível especificar a URL do repositório para instalação de pacotes, diferente do repositório indicado na configuração.
- Foi disponibilizada a possibilidade de desenvolver componentes da interface web do instalador na linguagem Typescript. No futuro, os desenvolvedores pretendem gradualmente traduzir o código de JavaScript para Typescript conforme necessário.
- Na interface web para gerenciamento de estado em modo assíncrono, foi utilizado o framework TanStack Query.
- O tamanho do armazenamento disponível para a instalação de pacotes adicionais após o boot no modo Live foi ampliado de 500 MB para 3.5 GB.
- Para testes automatizados da interface web, a biblioteca JavaScript Puppeteer foi utilizada em vez do sistema Playwright.
- Os componentes de controle do instalador, acionados a partir da linha de comando, foram convertidos de DBus para o uso de um cliente HTTP que se comunica com o servidor HTTP embutido no instalador.
Fonte: opennet.ru


