Fedora Silverblue : Mémo des commandes rpm-ostree et ostree
Table des matières
Voyons ici les commandes pour administrer les étitions "Atomiques" de Fedora Linux (Silverblue, Kinoite) avec rpm-ostree et ostree.
Les commandes n'ont pas besoin d'être lancées en root, une authentification polkit sera éventuellement demandée si nécessaire (pop-up graphique ou prompt en ligne de commande).
Cet article a été remis à jour avec Fedora, car il a été écrit initialement avec Fedora 33.
Pour voir le statut de la distribution, et sur quel snapshot on est :
Voici un retour de console :
La pastille ● indique sur quelle image on se trouve actuellement.
On a le détail de la branche sur laquelle on est, la version du système et le commit.
On a la liste des LayeredPackages, c'est à dire des paquets ajoutés à notre système de base. Ce sont des paquets ajoutés avec rpm-ostree et non des paquets flatpak ni des conteneurs.
Pour mettre à jour le système de base :
Voici le retour qui s'affiche lors de la mise à jour :
Il sera nécessaire de redémarrer sur la nouvelle image (un reboot du système) pour prendre en compte les modifications.
Les remotes sont les "dépôts" depuis lesquels nous pouvons récupérer des images et disponibles sur notre système.
Pour lister les remotes installés :
Par défaut on a fedora et fedora-compose.
On pourra, pour un remote lister les refs (références ou branches) disponibles, exemple ici avec le remote fedora :
Voici un extrait :
On notera qu'on a des images depuis la version 27 de fedora, dans plusieurs architectures et pour plusieurs saveurs.
Pour installer un logiciel dans la base du système, exemple ici avec le logiciel nmon :
Voici un retour de la console pendant le processus d'installation :
Il est nécessaire de redémarrer pour prendre en compte le nouveau paquet dans la base.
En effet, cela génère une nouvelle image du système, incluant le logiciel nmon.
Pour supprimer un logiciel qui a été ajouté à la base, exemple acec iftop :
Par compatibilité, la commande remove fonctionne :
Voici un retour de la console pendant le processus de désinstallation :
Pour rappel, on peut consulter la liste du commit précédent (et suivant si on n'a pas encore rebooté) avec
Pour revenir à l'état précédent, on utilisera :
On est évidemment invité à redémarrer.
L'opération est très rapide car l'image précédente était déjà générée. On a juste l'info de ce qui a été fait.
Le rebase dans le contexte de Fedora Atomique est un processus qui permet de changer l'état de la base de l'OS à une autre version ou à une autre branche du système. Cela est particulièrement utile pour :
- passer d'une version de Fedora Linux à une autre, par exemple, de Fedora Silverblue 39 à Fedora Silverblue 40
- basculer entre différentes variantes, par exemple de Fedora Silverblue 40 à Fedora Kinoite 40
- tester de nouvelles versions (Passer en testing ou sur Rawhide)
Le rebase fonctionne en téléchargeant une nouvelle image du système d'exploitation et en remplaçant l'image actuelle par la nouvelle. Cela se fait de manière atomique, ce qui signifie que l'opération se fait en une seule transaction complète, garantissant ainsi que le système est toujours dans un état cohérent.
Pour mettre à niveau notre système, on vérifiera sur quelle branche on est avec :
On listera les déploiements disponibles :
Si nous étions sur la Fedora Silverblue 39, on est sur :
Pour rebaser sur Fedora Silverblue 40 :
Si ça ne fonctionne pas comme attendu, l'opération de rollback fonctionne évidemment !
Pour changer d'édition, on listera les déploiements disponibles :
Si nous étions sur la Fedora Silverblue 40, on est sur :
Pour rebaser sur Fedora Kinoite 40 :
Si ça ne fonctionne pas comme attendu, l'opération de rollback fonctionne évidemment !
A travers ce paragraphe, je tiens à attirer votre attention. En effet, si vous changez de base, votre dossier utilisateur reste le même. Celui-ci contient vos documents mais aussi les configurations des applications et de l'environnement de bureau.
Si on passe de GNOME à KDE, et que notre GNOME était en mode sombre, avec un thème d'icône personnalisé et notre fond d'écran favori, la première arrivée sur KDE (fait par un rebase) se fera sur les paramétrages par défaut de cet environnement de bureau. Un retour sur GNOME pourra avoir des effets de bord sur la personnalisation de celui-ci.
Si on teste une version plus récente, par exemple sur la version de développement Rawhide, on va peut être avoir une version plus récente de l'environnement de bureau et de ses applications, les fichiers de configurations seront migrés vers la nouvelle version de celui-ci. Revenir à la version stable rétrogradera la version de l'environnement de bureau. Certains fichiers de configurations pourront ne pas être lus correctement et donc perdre la personnalisation qu'on avait avant la montée en version.
Quand on utilise Rawhide, il peut arriver qu'au moment ou Rawhide se rebranche sur la future version, on ait ce genre de message :
Il suffit simplement d'importer la nouvelle clé GPG. Elles sont toutes dispo ici : https://src.fedoraproject.org/rpms/fedora-repos/tree/rawhide :
Dans le dernier cas, Fedora Rawhide était la future 35, j'ai donc importé la clé comme ceci :
On peut relancer les opérations rpm-ostree
Introduction
Voyons ici les commandes pour administrer les étitions "Atomiques" de Fedora Linux (Silverblue, Kinoite) avec rpm-ostree et ostree.
Les commandes n'ont pas besoin d'être lancées en root, une authentification polkit sera éventuellement demandée si nécessaire (pop-up graphique ou prompt en ligne de commande).
Cet article a été remis à jour avec Fedora, car il a été écrit initialement avec Fedora 33.
Statut
Pour voir le statut de la distribution, et sur quel snapshot on est :
Code BASH :
rpm-ostree status
Voici un retour de console :
Code TEXT :
State: idle Deployments: fedora:fedora/40/x86_64/silverblue Version: 40.20240607.0 (2024-06-07T00:43:37Z) BaseCommit: 0e015f83d993c080351afe34b02b93d19a639d5fe432180d61660bfea47a0160 GPGSignature: Valid signature by 115DF9AEF857853EE8445D0A0727707EA15B79CC Diff: 1 removed LayeredPackages: nmon ● fedora:fedora/40/x86_64/silverblue Version: 40.20240607.0 (2024-06-07T00:43:37Z) BaseCommit: 0e015f83d993c080351afe34b02b93d19a639d5fe432180d61660bfea47a0160 GPGSignature: Valid signature by 115DF9AEF857853EE8445D0A0727707EA15B79CC LayeredPackages: iftop nmon fedora:fedora/40/x86_64/silverblue Version: 40.20240607.0 (2024-06-07T00:43:37Z) Commit: 0e015f83d993c080351afe34b02b93d19a639d5fe432180d61660bfea47a0160 GPGSignature: Valid signature by 115DF9AEF857853EE8445D0A0727707EA15B79CC
La pastille ● indique sur quelle image on se trouve actuellement.
On a le détail de la branche sur laquelle on est, la version du système et le commit.
On a la liste des LayeredPackages, c'est à dire des paquets ajoutés à notre système de base. Ce sont des paquets ajoutés avec rpm-ostree et non des paquets flatpak ni des conteneurs.
Mise à jour du système
Pour mettre à jour le système de base :
Code BASH :
rpm-ostree upgrade
Voici le retour qui s'affiche lors de la mise à jour :
Code TEXT :
==== AUTHENTICATING FOR org.projectatomic.rpmostree1.upgrade ==== Authentication is required to update software Authenticating as: adrien Password: ==== AUTHENTICATION COMPLETE ==== ⠙ Scanning metadata: 7958 144 metadata, 234 content objects fetched; 180048 KiB transferred in 43 seconds; 262,0 Mo content written Scanning metadata: 7958... done Staging deployment... done Upgraded: iproute 6.7.0-1.fc40 -> 6.7.0-2.fc40 open-vm-tools 12.3.5-3.fc40 -> 12.4.0-1.fc40 open-vm-tools-desktop 12.3.5-3.fc40 -> 12.4.0-1.fc40 podman 5:5.0.3-1.fc40 -> 5:5.1.0-1.fc40 Run "systemctl reboot" to start a reboot
Il sera nécessaire de redémarrer sur la nouvelle image (un reboot du système) pour prendre en compte les modifications.
Remotes
Les remotes sont les "dépôts" depuis lesquels nous pouvons récupérer des images et disponibles sur notre système.
Pour lister les remotes installés :
Code BASH :
ostree remote list
Par défaut on a fedora et fedora-compose.
On pourra, pour un remote lister les refs (références ou branches) disponibles, exemple ici avec le remote fedora :
Code BASH :
ostree remote refs fedora
Voici un extrait :
Code TEXT :
fedora:fedora/40/aarch64/kinoite fedora:fedora/40/aarch64/sericea fedora:fedora/40/aarch64/silverblue fedora:fedora/40/aarch64/testing/kinoite fedora:fedora/40/aarch64/testing/sericea fedora:fedora/40/aarch64/testing/silverblue fedora:fedora/40/aarch64/updates/kinoite fedora:fedora/40/aarch64/updates/sericea fedora:fedora/40/aarch64/updates/silverblue fedora:fedora/40/ppc64le/kinoite fedora:fedora/40/ppc64le/silverblue fedora:fedora/40/ppc64le/testing/kinoite fedora:fedora/40/ppc64le/testing/silverblue fedora:fedora/40/ppc64le/updates/kinoite fedora:fedora/40/ppc64le/updates/silverblue fedora:fedora/40/x86_64/kinoite fedora:fedora/40/x86_64/onyx fedora:fedora/40/x86_64/sericea fedora:fedora/40/x86_64/silverblue fedora:fedora/40/x86_64/testing/kinoite fedora:fedora/40/x86_64/testing/onyx fedora:fedora/40/x86_64/testing/sericea fedora:fedora/40/x86_64/testing/silverblue fedora:fedora/40/x86_64/updates/kinoite fedora:fedora/40/x86_64/updates/onyx fedora:fedora/40/x86_64/updates/sericea fedora:fedora/40/x86_64/updates/silverblue fedora:fedora/rawhide/aarch64/kinoite fedora:fedora/rawhide/aarch64/sericea fedora:fedora/rawhide/aarch64/silverblue fedora:fedora/rawhide/ppc64le/kinoite fedora:fedora/rawhide/ppc64le/sericea fedora:fedora/rawhide/ppc64le/silverblue fedora:fedora/rawhide/x86_64/kinoite fedora:fedora/rawhide/x86_64/onyx fedora:fedora/rawhide/x86_64/sericea fedora:fedora/rawhide/x86_64/silverblue
On notera qu'on a des images depuis la version 27 de fedora, dans plusieurs architectures et pour plusieurs saveurs.
Gestion des logiciels
Installer un logiciel
Pour installer un logiciel dans la base du système, exemple ici avec le logiciel nmon :
Code BASH :
rpm-ostree install nmon
Voici un retour de la console pendant le processus d'installation :
Code TEXT :
==== AUTHENTICATING FOR org.projectatomic.rpmostree1.install-uninstall-packages ==== Authentication is required to install and remove software Authenticating as: adrien Password: ==== AUTHENTICATION COMPLETE ==== Checking out tree 0e015f8... done Enabled rpm-md repositories: fedora-cisco-openh264 updates rpmfusion-nonfree-steam Updating metadata for 'updates'... done Updating metadata for 'updates-archive'... done Importing rpm-md... done rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2024-03-12T11:45:42Z solvables: 3 rpm-md repo 'updates'; generated: 2024-06-07T04:52:11Z solvables: 16886 rpm-md repo 'fedora' (cached); generated: 2024-04-14T18:51:11Z solvables: 74881 rpm-md repo 'updates-archive'; generated: 2024-05-22T01:41:39Z solvables: 13161 Resolving dependencies... done Will download: 1 package (79,1 Ko) Downloading from 'fedora'... done Importing packages... done Checking out packages... done Running pre scripts... done Running post scripts... done Running posttrans scripts... done Writing rpmdb... done Writing OSTree commit... done Staging deployment... done Freed: 2,2 Go (pkgcache branches: 0) Added: nmon-16p-5.fc40.x86_64 Changes queued for next boot. Run "systemctl reboot" to start a reboot
Il est nécessaire de redémarrer pour prendre en compte le nouveau paquet dans la base.
En effet, cela génère une nouvelle image du système, incluant le logiciel nmon.
Suppression de logiciel
Pour supprimer un logiciel qui a été ajouté à la base, exemple acec iftop :
Code BASH :
rpm-ostree uninstall iftop
Par compatibilité, la commande remove fonctionne :
Code BASH :
rpm-ostree remove iftop
Voici un retour de la console pendant le processus de désinstallation :
Code TEXT :
==== AUTHENTICATING FOR org.projectatomic.rpmostree1.install-uninstall-packages ==== Authentication is required to install and remove software Authenticating as: adrien Password: ==== AUTHENTICATION COMPLETE ==== Checking out tree 0e015f8... done Resolving dependencies... done Checking out packages... done Running pre scripts... done Running post scripts... done Running posttrans scripts... done Writing rpmdb... done Writing OSTree commit... done Staging deployment... done Freed: 262,5 Mo (pkgcache branches: 0) Removed: iftop-1.0-0.33.pre4.fc40.x86_64 Changes queued for next boot. Run "systemctl reboot" to start a reboot
Retour à un état précédent avec les rollback
Pour rappel, on peut consulter la liste du commit précédent (et suivant si on n'a pas encore rebooté) avec
Code BASH :
rpm-ostree status
Pour revenir à l'état précédent, on utilisera :
Code BASH :
rpm-ostree rollback
On est évidemment invité à redémarrer.
L'opération est très rapide car l'image précédente était déjà générée. On a juste l'info de ce qui a été fait.
Changer de branche (rebase)
A propos du rebase
Le rebase dans le contexte de Fedora Atomique est un processus qui permet de changer l'état de la base de l'OS à une autre version ou à une autre branche du système. Cela est particulièrement utile pour :
- passer d'une version de Fedora Linux à une autre, par exemple, de Fedora Silverblue 39 à Fedora Silverblue 40
- basculer entre différentes variantes, par exemple de Fedora Silverblue 40 à Fedora Kinoite 40
- tester de nouvelles versions (Passer en testing ou sur Rawhide)
Le rebase fonctionne en téléchargeant une nouvelle image du système d'exploitation et en remplaçant l'image actuelle par la nouvelle. Cela se fait de manière atomique, ce qui signifie que l'opération se fait en une seule transaction complète, garantissant ainsi que le système est toujours dans un état cohérent.
Rebase pour mettre à niveau
Pour mettre à niveau notre système, on vérifiera sur quelle branche on est avec :
Code BASH :
rpm-ostree status
On listera les déploiements disponibles :
Code BASH :
ostree remote refs fedora
Si nous étions sur la Fedora Silverblue 39, on est sur :
Code TEXT :
fedora:fedora/39/x86_64/silverblue
Pour rebaser sur Fedora Silverblue 40 :
Code BASH :
rpm-ostree rebase fedora:fedora/40/x86_64/silverblue
Si ça ne fonctionne pas comme attendu, l'opération de rollback fonctionne évidemment !
Rebase pour changer d'édition
Pour changer d'édition, on listera les déploiements disponibles :
Code BASH :
ostree remote refs fedora
Si nous étions sur la Fedora Silverblue 40, on est sur :
Code TEXT :
fedora:fedora/39/x86_64/silverblue
Pour rebaser sur Fedora Kinoite 40 :
Code BASH :
rpm-ostree rebase fedora:fedora/40/x86_64/kinoite
Si ça ne fonctionne pas comme attendu, l'opération de rollback fonctionne évidemment !
Informations sur les personnalisations lors du rebase
A travers ce paragraphe, je tiens à attirer votre attention. En effet, si vous changez de base, votre dossier utilisateur reste le même. Celui-ci contient vos documents mais aussi les configurations des applications et de l'environnement de bureau.
Si on passe de GNOME à KDE, et que notre GNOME était en mode sombre, avec un thème d'icône personnalisé et notre fond d'écran favori, la première arrivée sur KDE (fait par un rebase) se fera sur les paramétrages par défaut de cet environnement de bureau. Un retour sur GNOME pourra avoir des effets de bord sur la personnalisation de celui-ci.
Si on teste une version plus récente, par exemple sur la version de développement Rawhide, on va peut être avoir une version plus récente de l'environnement de bureau et de ses applications, les fichiers de configurations seront migrés vers la nouvelle version de celui-ci. Revenir à la version stable rétrogradera la version de l'environnement de bureau. Certains fichiers de configurations pourront ne pas être lus correctement et donc perdre la personnalisation qu'on avait avant la montée en version.
Troobleshooting
Rawhide : Can't check signature: public key not found
Quand on utilise Rawhide, il peut arriver qu'au moment ou Rawhide se rebranche sur la future version, on ait ce genre de message :
Code TEXT :
error: While pulling fedora/rawhide/x86_64/silverblue: Commit 733af93a08c3d620d5248a063256602b65db0a1f0127b5f579a6ec022c63a9f9: Signature made mer. 17 févr. 2021 07:05:47 using RSA key ID DB4639719867C58F Can't check signature: public key not found
Il suffit simplement d'importer la nouvelle clé GPG. Elles sont toutes dispo ici : https://src.fedoraproject.org/rpms/fedora-repos/tree/rawhide :
Dans le dernier cas, Fedora Rawhide était la future 35, j'ai donc importé la clé comme ceci :
Code BASH :
cd /etc/pki/rpm-gpg/ wget https://src.fedoraproject.org/rpms/fedora-repos/raw/rawhide/f/RPM-GPG-KEY-fedora-35-primary
On peut relancer les opérations rpm-ostree