Accueil
» Comment faire
»
Comment construire un bureau Debian en tant que système immuable basé sur OSTree
Comment construire un bureau Debian en tant que système immuable basé sur OSTree
Exemple de scénario : Imaginons que Maya utilise un poste de travail Debian 13 pour le développement et souhaite que les mises à jour système puissent être restaurées à une version antérieure complète. Elle peut utiliser cet objectif pour évaluer une distribution Debian dérivée basée sur OSTree, mais elle ne doit pas exécuter une commande sur son installation actuelle et s’attendre à ce qu’elle devienne immuable. OSTree nécessite une arborescence du système d’exploitation, une intégration au démarrage et un processus de mise à jour adapté aux déploiements.
OSTree stocke l'intégralité de l'arborescence du système de fichiers sous forme de commits versionnés et organise les déploiements amorçables. Un nouveau déploiement peut être sélectionné pour le prochain démarrage, tandis qu'un déploiement antérieur reste disponible pour la restauration. Cela modifie la façon dont le système d'exploitation est construit et mis à jour ; la gestion des paquets Debian classique ne se transforme pas automatiquement en un système atomique. Le ostree-bootpaquet Debian actuel est décrit comme une intégration pour une distribution dérivée de Debian et requiert un initramfs compilé avec dracut ainsi qu'un chargeur d'amorçage compatible. Les étapes ci-dessous décrivent donc un flux de travail pour une distribution dérivée testable, et non une conversion en une seule commande d'un bureau Debian installé.
Avant de construire un système OSTree, sauvegardez votre bureau et testez le chemin de démarrage dans une machine virtuelle.
Ce que OSTree change — et ce qu'il ne change pas
OSTree est un système de déploiement et de mise à jour de systèmes d'exploitation, et non un substitut au dépôt de paquets ou au gestionnaire de dépendances de Debian. Le processus de compilation nécessite toujours l'installation des paquets et l'assemblage d'un système de fichiers racine complet. OSTree enregistre et déploie ensuite cet arbre. Pour les mises à jour, le processus de compilation crée un nouveau commit complet de l'arbre, et le client bascule vers ce déploiement. C'est pourquoi un bureau OSTree requiert une méthode reproductible pour construire son image système ; l'exécution apt upgradesur le système de fichiers racine en direct ne constitue pas le même modèle de mise à jour.
« Immuable » est un raccourci pratique, mais ne signifie pas que tous les fichiers de l'ordinateur sont en lecture seule. Dans un déploiement classique, l'arborescence système est considérée comme en lecture seule, tandis que le répertoire /etccontenant la configuration machine et /varles entrées de démarrage peut être modifié. Les fichiers utilisateur résident généralement en dehors de l'arborescence versionnée du système d'exploitation, souvent dans un répertoire spécifique /home. La gestion de ces chemins et des entrées de démarrage par OSTree fait partie intégrante de la conception du système. Les modifications apportées au répertoire de déploiement /usrne constituent pas une solution durable ; il est donc nécessaire de créer une nouvelle image système.
1. Déterminez si cette approche convient à votre bureau Debian.
Pour Maya, la première question est de savoir si elle souhaite un projet d'apprentissage ou un système d'exploitation pour une utilisation quotidienne. OSTree permet un meilleur contrôle des mises à jour et des restaurations, mais Debian ne propose pas de solution clé en main pour « convertir ce poste de travail » dans la description du paquet. Un développeur doit préparer l'arborescence du système d'exploitation, créer son initramfs, intégrer le chargeur d'amorçage, définir comment les mises à jour des paquets deviennent de nouveaux commits et tester le matériel. Une distribution basée sur OSTree, déjà connue, sera peut-être plus adaptée à un ordinateur de bureau où l'utilisateur souhaite une expérience stable et prête à l'emploi.
Vérifiez la chaîne de démarrage avant d'investir du temps. ostree-bootLa page du paquet Trixie sur Debian indique que dracut est requis pour l'initramfs et que GRUB 2, syslinux/extlinux ou U-Boot sont des familles de chargeurs de démarrage compatibles. Cette liste ne garantit pas le bon fonctionnement de toutes les configurations de firmware, de démarrage sécurisé, de chiffrement de disque ou de menus de démarrage spécifiques au fournisseur sans intégration supplémentaire. En particulier, testez la machine en question ou une configuration de machine virtuelle similaire avant de modifier son disque interne.
Veuillez également indiquer les fonctionnalités de bureau qui doivent être conservées : pilotes graphiques, micrologiciel Wi-Fi, mise en veille et reprise, audio, imprimantes, stockage chiffré, gestion de plusieurs écrans et tous les modules noyau externes. Un démarrage réussi en mode graphique n’est que le point de départ. Si Maya dépend d’un pilote propriétaire ou d’un module noyau spécifique, celui-ci doit être disponible dans l’image système compilée et compatible avec le noyau et l’initramfs.
2. Créer un environnement de compilation et de test sécurisé
Commencez par une machine virtuelle éphémère utilisant une version de Debian et une architecture identiques à celles de votre système cible. Créez un instantané de la machine virtuelle avant tout test. Sauvegardez le répertoire personnel de votre ordinateur principal, vos profils de navigateur, vos clés SSH, les éléments de récupération de votre gestionnaire de mots de passe et toutes les données non synchronisées. Conservez cette sauvegarde séparément du disque de la machine virtuelle. Ne repartitionnez pas et ne formatez pas votre ordinateur principal lors de ce premier test.
Utilisez un répertoire de compilation distinct et une image disque cible séparée. Notez la version de Debian, l'architecture, la liste des paquets, la version du noyau, le chargeur de démarrage et les modifications apportées à l'arborescence. Un historique de compilation reproductible permet à Maya de distinguer une modification de l'image d'une modification de la configuration spécifique à la machine. Si l'objectif est de conserver exactement le bureau existant, une nouvelle arborescence de base ne le fera pas automatiquement : les paquets installés, les comptes utilisateurs, les paramètres matériels et la configuration doivent être transférés ou recréés manuellement.
3. Installez les outils OSTree sur le générateur.
Sur une machine de construction Debian Trixie, installez les outils OSTree disponibles, l'intégration au démarrage et les paquets dracut :
La disponibilité des paquets et leurs dépendances peuvent varier selon la version de Debian et l'architecture ; vérifiez-les donc avec APT sur le système de compilation. Cette opération installe uniquement des outils sur la machine ; elle ne modifie pas le processus de démarrage ni ne rend le système de fichiers racine immuable. La description du paquet Debian indique explicitement ostree-bootqu'il fournit les éléments nécessaires au démarrage d'une distribution dérivée de Debian.
4. Construire une arborescence racine Debian propre
Préparez un système de fichiers racine complet à l'aide des outils de gestion de paquets de la distribution ou d'un système de création d'images Debian. Incluez le noyau, systemd, l'environnement de bureau, le firmware et les pilotes nécessaires à la cible, ainsi que l'intégration de démarrage OSTree et sa prise en charge d'initramfs. Configurez les utilisateurs, la langue, le réseau, les services et les paramètres par défaut du bureau de manière appropriée. Par exemple, une image système minimale démarrant sur une console ne constitue pas encore un bureau, et une image système créée pour une machine peut ne pas inclure les pilotes nécessaires pour une autre.
Avant de valider l'arborescence, assurez-vous qu'elle soit conforme à la structure de déploiement d'OSTree. Le guide d'adaptation amont indique que la configuration par défaut doit se trouver dans un répertoire spécifique /usr/etc, plutôt que dans une arborescence racine traditionnelle/etc ; OSTree utilise ce répertoire comme base pour la configuration modifiable propre à chaque déploiement /etc. L'arborescence doit également inclure le noyau et un initramfs compatible, dans des emplacements reconnus par la version d'OSTree et l'intégration de démarrage choisies. Il est recommandé de consulter conjointement le paquet de démarrage spécifique à Debian et le guide amont : une arborescence de répertoires valide ne constitue pas nécessairement un déploiement Debian amorçable.
Ne copiez pas aveuglément l'intégralité du système hôte en production /dans un commit. Cela pourrait inclure des fichiers temporaires, un état spécifique à la machine, un état du gestionnaire de paquets mal placé et une configuration qui suppose l'ancien processus de démarrage. OSTree attend du créateur d'images qu'il définisse comment les paquets sont assemblés et comment les mises à jour sont générées. Ce processus de création d'images représente le principal travail d'ingénierie lors de la conversion d'un bureau Debian.
5. Enregistrez l'arbre préparé dans un dépôt local.
Une fois l'arbre racine préparé, créez un dépôt local et enregistrez-y l'arbre sous un nom de branche descriptif. Dans cet exemple, ` /srv/debian-root<nom_de_branche>` correspond à l'arbre préparé ; il ne s'agit pas de la racine du système hôte en cours d'exécution.
Le commit enregistre les fichiers dans l'arborescence et la branche pointe vers cette version. Il ne configure pas de disque, ne crée pas d'entrée de démarrage du firmware et ne prouve pas que l'initramfs peut trouver le déploiement. Conservez le dépôt et les entrées de compilation disponibles afin que la prochaine image puisse être reconstruite et comparée. Pour un véritable service de mise à jour, il est également nécessaire de concevoir un transport sécurisé, des contrôles d'accès au dépôt, des commits signés le cas échéant et un processus de publication documenté.
Le pipeline de construction assemble un arbre racine Debian complet, puis l'enregistre sous forme de commit OSTree versionné.
6. Configurez un disque de test avec l'intégration de démarrage OSTree.
Provisionnez un disque de machine virtuelle vierge via un programme d'installation ou un flux de travail de création d'image capable de créer un système racine OSTree et de configurer son chargeur de démarrage. admin init-fsLa commande OSTree initialise un système de fichiers racine physique vide, et un administrateur peut initialiser un système racine d'état et déployer un commit, mais ces commandes ne sont que des éléments de base ; elles ne constituent pas une recette d'installation complète pour chaque bureau Debian. Elles ne dispensent pas de la création des partitions, de l'installation des fichiers de démarrage du firmware, de la génération d'un initramfs compatible et de la configuration du firmware et du chargeur de démarrage.
Utilisez la famille de chargeurs de démarrage prise en charge par le paquet d'intégration Debian et vérifiez que l'entrée de démarrage transmet la référence de déploiement OSTree à l'initramfs. La documentation de déploiement d'OSTree explique que les entrées de démarrage incluent un ostree=argument noyau, utilisé par l'initramfs pour localiser le déploiement sélectionné. Pour les systèmes avec chiffrement, LVM, RAID, Secure Boot ou stockage non standard, assurez-vous que l'initramfs contient les modules et clés requis avant de tester. Ne présumez pas qu'une entrée de démarrage Debian classique fonctionnelle démarrera automatiquement un déploiement OSTree.
Pour le premier déploiement, suivez les instructions de l'installateur ou du générateur d'images en fonction de votre chemin de démarrage exact. Une commande simple, comme celle-ci, ostree admin deploymet uniquement en file d'attente une modification en tant que déploiement par défaut sur un système OSTree déjà configuré ; elle ne transforme pas l'installation Debian en cours d'exécution en ce système.
7. Démarrer, inspecter et tester la restauration
Démarrez la machine virtuelle dans le nouveau déploiement et vérifiez plus que l'écran de connexion : contrôlez la connectivité réseau, l'accélération graphique, le son, la mise en veille et la reprise, les montages de stockage, les mises à jour et le comportement des applications. Ensuite, examinez la liste des déploiements :
sudo ostree admin status
La commande liste les déploiements disponibles et indique celui actuellement démarré. Conservez le déploiement précédent fonctionnel pendant les tests. Si la nouvelle image échoue, utilisez le menu de démarrage pour choisir le déploiement précédent ou suivez la procédure de restauration OSTree documentée pour la version installée. Vérifiez que le bureau précédent démarre et que les données utilisateur sont intactes. OSTree versionne l'arborescence du système d'exploitation ; il ne restaure pas automatiquement les fichiers personnels ni n'annule les modifications apportées par les applications aux données partagées /var.
Testez le menu de démarrage et conservez une installation fonctionnelle avant d'accepter une mise à jour.
8. Définir le processus de mise à jour et de maintenance
Pour un poste de travail maintenable, chaque mise à jour du système d'exploitation doit provenir d'un nouveau commit vérifiable dans l'arbre de distribution. Il convient de définir qui est responsable de la compilation, comment les mises à jour des paquets Debian sont intégrées à l'arbre, comment les mises à jour du noyau et du microprogramme sont testées, comment les commits parviennent aux clients et pendant combien de temps les versions précédentes sont conservées. Si les utilisateurs ont besoin d'applications supplémentaires, privilégiez une méthode de distribution d'applications prise en charge, telle que Flatpak le cas échéant, plutôt que de modifier silencieusement le système d'exploitation de base avec les commandes APT classiques.
Planifiez soigneusement la gestion de l'état. Un déploiement plus récent peut conserver /etcles modifications locales, mais les changements de configuration peuvent nécessiter la validation d'un administrateur. Les données sous-jacentes /varsont partagées entre les déploiements ; par conséquent, la restauration du système d'exploitation n'entraîne pas nécessairement la restauration du schéma de base de données ou du format des données applicatives. Les fichiers utilisateur doivent disposer de leur propre plan de sauvegarde et de restauration. Les fichiers système immuables facilitent le changement de version du système d'exploitation ; ils ne rendent pas l'ensemble de l'état de la machine transactionnel.
Utilisez-le ostree admin statuspour confirmer quel déploiement est actif et si un déploiement antérieur reste disponible.
Liste de contrôle pratique de préparation
La compilation est reproductible et cible la version et l'architecture Debian prévues.
L'arbre racine utilise la configuration attendue d'OSTree, inclut un noyau et un initramfs correspondants, et possède les pilotes de bureau requis.
La cible utilise l'intégration dracut et du chargeur de démarrage prise en charge par Debian, testée dans une machine virtuelle avant l'installation matérielle.
Un nouveau déploiement démarre sur le bureau, et un déploiement précédent peut être sélectionné et démarré.
Les sauvegardes couvrent à la fois les données utilisateur et tout état qu'une restauration du système d'exploitation ne permettra pas de rétablir.
Il existe une procédure documentée pour les mises à jour de paquets, les reconstructions d'images, la signature ou la vérification des versions et le test des modifications du noyau.
Pour le poste de travail hypothétique de Maya, l'objectif pratique est de disposer d'une image OSTree dérivée de Debian testée et d'une méthode reproductible pour son déploiement ultérieur ; il ne s'agit pas d'une installation Debian immuable par magie. Commencez par une machine virtuelle, simplifiez le processus de mise à jour et ne passez au matériel physique qu'une fois que l'intégration au démarrage, les pilotes de bureau et la procédure de restauration fonctionnent correctement sur la machine cible.
Présentation d'OSTree — commits, arbres et relation avec les gestionnaires de paquets.
Adaptation des distributions existantes — organisation du système de fichiers, initramfs, gestion des utilisateurs et considérations relatives au gestionnaire de paquets.