Dopo cinque anni e mezzo dalla creazione del ramo 3.2.x, è stato pubblicato il rilascio dello strumento per la creazione di installer Calamares 3.3.0, indipendente dai singoli distribuzioni Linux. Gli sviluppatori delle distribuzioni hanno a disposizione diverse decine di moduli pronti con implementazioni di varie funzionalità richieste negli installer. Il codice è scritto in C++, l'interfaccia grafica è basata sulla libreria Qt (utilizza QML), per lo sviluppo dei moduli possono essere utilizzati i linguaggi C++ e Python.
Calamares offre funzionalità come modalità manuale e automatica per partizionare i dischi, un sistema flessibile di personalizzazione dell'aspetto, architettura modulare e un'ampia scelta di moduli pronti (dalla gestione dei bootloader alla gestione degli utenti). Ad esempio, ci sono moduli per l'utilizzo di NetworkManager, UPower, systemd-boot, GRUB, sgdisk, squashfs-tools e rsync. L'installazione può essere organizzata tramite la sostituzione della partizione - i dati vengono copiati su una nuova partizione che diventa attiva al posto di quella precedentemente utilizzata, il che è comodo per testare nuove installazioni, lasciando la possibilità di tornare alla versione precedente.
Per creare il proprio installer basato su Calamares, è sufficiente selezionare moduli pronti o scriverne di propri, definire la logica di installazione della distribuzione e configurare l'aspetto. Per semplificare e velocizzare lo sviluppo, i moduli e i componenti di Calamares possono essere realizzati in Python. Tutti i dati di configurazione vengono memorizzati in formato YAML. Calamares è già utilizzato per organizzare l'installazione delle distribuzioni Manjaro, Lubuntu, Asahi, EndeavourOS, wattOS, Rhino, Nitrux, Siduction, Peppermint OS, GeckoLinux, Chakra, NetRunner, KaOS, OpenMandriva e KDE neon. Il progetto è in fase di sviluppo con la partecipazione delle comunità KDE, Fedora, Kubuntu e Maui.
Nel nuovo rilascio:
- È garantita la piena compatibilità del framework di base e della maggior parte dei moduli con Qt 6 e le librerie KDE Frameworks 6. Per tutti i moduli QML è fornito un insieme di file QML compatibili con Qt6. È mantenuta la possibilità di compilazione con Qt5 e KDE Frameworks 5.
- Nell'interfaccia di selezione dei pacchetti «packagechooser» è stata aggiunta la supporto per i metadati AppStream 1.0.
- Nel modulo «keyboard» è stata implementata la possibilità di scegliere se utilizzare le impostazioni X11 o il servizio DBus locale1 di FreeDesktop. È garantita la memorizzazione delle impostazioni della tastiera per tutti i layout non ASCII.
- Nel modulo «dracut» è stata aggiunta la supporto per la configurazione del nome del kernel.
- L'interfaccia dei moduli «keyboardq» e «localeq» è stata tradotta da ComboBox a widget Drawer.
- Nell'editor delle sezioni (modulo «partition») è stata aggiunta la possibilità di scegliere tra i formati LUKS e LUKS2. È stata garantita la possibilità di saltare l'installazione del caricatore di avvio. È stata sfruttata la funzionalità della libreria KPMCore 21.12 (KDE Partition Manager).
- Aggiunto il modulo «zfshostid» per generare /etc/hostid per ZFS.
- Nel modulo «bootloader» sono state ampliate le opzioni per l'utilizzo nella riga di comando del kernel.
- Nel modulo «displaymanager» è stata interrotta la supporto per il gestore di visualizzazione kdm.
- Nel modulo «fstab» è stata completamente ristrutturata la gestione della configurazione /etc/fstab. Molte impostazioni sono state trasferite nel modulo «mount».
- Aggiornati i requisiti per lo stile di codifica: ora il formato del codice è conforme a clang-format 15 o 16.
- Rivisti gli spazi dei nomi utilizzati per il codice C++ (tutte le chiamate sono state trasferite nello spazio dei nomi Calamares, rimosse le legami allo spazio dei nomi CalamaresUtils).
- Come maschera per la sostituzione, invece di @{var} è stato utilizzato ${var}.
- La libreria Boost::Python è stata rimossa dalle dipendenze: per lo sviluppo nel linguaggio Python ora viene utilizzato il set di binding incorporato pybind11. Per tornare alla build con Boost::Python, è possibile impostare la variabile WITH_PYBIND11=OFF.
Fonte: opennet.ru
