Après cinq ans et demi depuis la formation de la branche 3.2.x, la version de l'outil de construction d'installateurs Calamares 3.3.0 a été publiée, indépendante des distributions Linux spécifiques. Les développeurs de distributions se voient proposer plusieurs dizaines de modules prêts à l'emploi qui intègrent diverses fonctionnalités demandées dans les installateurs. Le code est écrit en C++, l'interface graphique est basée sur la bibliothèque Qt (utilisant QML), et les modules peuvent être développés en C++ et Python.
Calamares offre des fonctionnalités telles que des modes de partitionnement manuel et automatique, un système flexible d'adaptation de l'apparence, une architecture modulaire, et un large choix de modules prêts à l'emploi (de la gestion des chargeurs de démarrage à la gestion des utilisateurs). Par exemple, il existe des modules pour utiliser NetworkManager, UPower, systemd-boot, GRUB, sgdisk, squashfs-tools et rsync. L'installation peut être organisée par remplacement de partition — les données sont copiées sur une nouvelle partition qui devient active à la place de l'ancienne, ce qui est pratique pour tester de nouvelles installations, tout en permettant de revenir à la version précédente.
Pour créer son propre installateur basé sur Calamares, il suffit de choisir des modules prêts à l'emploi ou d'écrire les siens, de définir la logique d'installation de la distribution et de configurer l'apparence. Pour simplifier et accélérer le développement, les modules et composants de Calamares peuvent être créés en Python. Toutes les données de configuration sont stockées au format YAML. Calamares est déjà utilisé pour organiser l'installation des distributions Manjaro, Lubuntu, Asahi, EndeavourOS, wattOS, Rhino, Nitrux, Siduction, Peppermint OS, GeckoLinux, Chakra, NetRunner, KaOS, OpenMandriva et KDE neon. Le projet évolue avec la participation des communautés KDE, Fedora, Kubuntu et Maui.
Dans cette nouvelle version :
- Une compatibilité totale du framework de base et de la plupart des modules avec Qt 6 et les bibliothèques KDE Frameworks 6 a été assurée. Un ensemble de fichiers QML compatibles avec Qt6 est fourni pour tous les modules QML. La possibilité de compiler avec Qt5 et KDE Frameworks 5 est maintenue.
- L'interface de sélection de paquets «packagechooser» a été mise à jour pour supporter les métadonnées AppStream 1.0.
- Dans le module «keyboard», il est désormais possible de choisir entre l'utilisation des paramètres X11 ou du service DBus FreeDesktop locale1. La sauvegarde des paramètres de disposition du clavier pour tous les agencements non-ASCII a été assurée.
- Le module «dracut» a ajouté la prise en charge de la configuration du nom du noyau.
- L'interface des modules «keyboardq» et «localeq» a été traduite de ComboBox vers le widget Drawer.
- L'éditeur de sections (module «partition») a été mis à jour pour permettre le choix entre les formats LUKS et LUKS2. La possibilité de sauter l'installation du chargeur de démarrage a été ajoutée. La fonctionnalité de la bibliothèque KPMCore 21.12 (KDE Partition Manager) a été mise en œuvre.
- Un module «zfshostid» a été ajouté pour générer /etc/hostid pour ZFS.
- Dans le module «bootloader», les options pour l'utilisation dans la ligne de commande du noyau ont été élargies.
- Dans le module «displaymanager», la prise en charge du gestionnaire d'affichage kdm a été arrêtée.
- Dans le module «fstab», le travail avec la configuration /etc/fstab a été complètement repensé. De nombreux paramètres ont été transférés dans le module «mount».
- Les exigences relatives au style de codage ont été mises à jour : le formatage du code est désormais conforme à clang-format 15 ou 16.
- Les espaces de noms utilisés pour le code C++ ont été révisés (tous les appels ont été transférés dans l'espace de noms Calamares, les liaisons à l'espace de noms CalamaresUtils ont été supprimées).
- Pour le remplacement, ${var} est utilisé au lieu de @{var}.
- La bibliothèque Boost::Python a été retirée des dépendances : pour le développement en Python, un ensemble de liaisons intégré pybind11 est désormais utilisé. Pour revenir à une compilation avec Boost::Python, vous pouvez définir la variable WITH_PYBIND11=OFF.
Source : opennet.ru
