Após cinco anos e meio desde a formação da ramificação 3.2.x, foi lançado o toolkit para criação de instaladores Calamares 3.3.0, independente de distribuições específicas do Linux. Desenvolvedores de distribuições receberam várias dezenas de módulos prontos que implementam diferentes funcionalidades demandadas em instaladores. O código é escrito em C++, e a interface gráfica é baseada na biblioteca Qt (usando QML). Para o desenvolvimento de módulos, podem ser utilizados os idiomas C++ e Python.
Calamares oferece funcionalidades como modos manual e automático de particionamento de discos, um sistema flexível de adaptação de aparência, arquitetura modular e uma ampla seleção de módulos prontos (desde gerenciamento de bootloaders até gerenciamento de usuários). Por exemplo, existem módulos para utilização do NetworkManager, UPower, systemd-boot, GRUB, sgdisk, squashfs-tools e rsync. A instalação pode ser organizada através da substituição de uma partição — os dados são copiados para uma nova partição, que se torna ativa em vez da partição anteriormente usada, o que é conveniente para testar novas instalações, permitindo reverter para uma versão anterior.
Para criar seu próprio instalador baseado em Calamares, basta escolher módulos prontos ou escrever os seus, definir a lógica de instalação da distribuição e configurar a aparência. Para simplificar e acelerar o desenvolvimento, módulos e componentes do Calamares podem ser criados em Python. Todos os dados de configuração são armazenados no formato YAML. O Calamares já é utilizado para organizar a instalação de distribuições como Manjaro, Lubuntu, Asahi, EndeavourOS, wattOS, Rhino, Nitrux, Siduction, Peppermint OS, GeckoLinux, Chakra, NetRunner, KaOS, OpenMandriva e KDE neon. O projeto está se desenvolvendo com a participação das comunidades KDE, Fedora, Kubuntu e Maui.
No novo lançamento:
- Há total compatibilidade do framework básico e da maioria dos módulos com Qt 6 e bibliotecas KDE Frameworks 6. Para todos os módulos QML, um conjunto de arquivos compatíveis com Qt6 foi fornecido. A possibilidade de compilar com Qt5 e KDE Frameworks 5 também foi mantida.
- Na interface de seleção de pacotes 'packagechooser', foi adicionada a suporte a metadados AppStream 1.0.
- No módulo 'keyboard', foi implementada a possibilidade de escolher entre usar configurações X11 ou o serviço DBus locale1 do FreeDesktop. As configurações de layout de teclado foram preservadas para todos os layouts não ASCII.
- No módulo 'dracut', agora é possível configurar o nome do kernel.
- A interface dos módulos «keyboardq» e «localeq» foi traduzida de ComboBox para o widget Drawer.
- No editor de seções (módulo «partition»), foi adicionada a opção de escolher entre os formatos LUKS e LUKS2. Possibilitada a opção de pular a instalação do carregador de inicialização. A funcionalidade da biblioteca KPMCore 21.12 (KDE Partition Manager) foi ativada.
- Adicionado o módulo «zfshostid» para gerar /etc/hostid para ZFS.
- No módulo «bootloader», as opções para uso na linha de comando do kernel foram ampliadas.
- No módulo «displaymanager», a suporte ao gerenciador de exibição kdm foi interrompida.
- No módulo «fstab», o funcionamento com a configuração /etc/fstab foi completamente refeito. Muitas configurações foram transferidas para o módulo «mount».
- As exigências para o estilo de codificação foram atualizadas — a formatação do código agora corresponde ao clang-format 15 ou 16.
- Os espaços de nomes usados para o código em C++ foram reformulados (todas as chamadas foram transferidas para o espaço de nomes Calamares, removendo as ligações ao espaço de nomes CalamaresUtils).
- Como máscara de substituição, ${var} foi utilizado em vez de @{var}.
- A biblioteca Boost::Python foi removida das dependências — para o desenvolvimento em Python, agora é utilizado o conjunto embutido de ligações pybind11. Para retornar à construção com Boost::Python, a variável WITH_PYBIND11 deve ser configurada como OFF.
Fonte: opennet.ru
