Rpm-ostree status says "Initramfs: regenerate"?

I’m learning more about rpm-ostree and working with creating and swapping “deployments”, is that the proper terminology for snapshots?

Anyway, rpm-ostree status:

$ rpm-ostree status
State: idle
Deployments:
● ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-gnome:stable
                   Digest: sha256:a5205aedb8928a6a8cc46fdf6de2e5af69c6a1f70a682fb6c43b40109ff2c7ef
                  Version: v3.6-40.20240815.0 (2024-08-15T15:47:04Z)
          LayeredPackages: edk2-ovmf qemu sunshine virt-manager
            LocalPackages: lact-libadwaita-0.5.5-0.x86_64
                Initramfs: regenerate

  ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-gnome:stable
                   Digest: sha256:a5205aedb8928a6a8cc46fdf6de2e5af69c6a1f70a682fb6c43b40109ff2c7ef
                  Version: v3.6-40.20240815.0 (2024-08-15T15:47:04Z)
          LayeredPackages: edk2-ovmf qemu sunshine virt-manager
            LocalPackages: lact-libadwaita-0.5.5-0.x86_64

Why does the first say "Initramfs: regenerate? Seems like its asking me to regenerate initramfs.
And why are their two identical deployments?

rpm-ostree Cheat Sheet
CoreOS rpm-ostree Documentation

If there are other docs out their for learning about & using rpm-ostree, please let me know.

The Initramfs: regenerate means that whenever there is a new image pulled from the cloud (aka when updates happen), rpm-ostree automatically regenerates the initramfs on your computer during the deployment stage.

The two deployments have identical SHA256 checksum and version because they are the same “image” rpm-ostree pulled from the cloud. I’m guessing you did an rpm-ostree operation that changed the deployment before.

1 Like

on that topic, does the output of ‘status’ correspond to the rollback options we see in GRUB? And would that mean that adding packages via rpm-ostree install removes some level of backup?

Yes.

By default, without any modifications, rpm-ostree keeps two deployments: 0 and 1. 0 is the default deployment (≈ default GRUB entry) that the system boots into, 1 is the default rollback deployment.

When you run a system update (rpm-ostree update), upon success the system will have three deployments instead of two. The previous default deployment becomes 1 instead of 0, and becomes the next default rollback deployment. The previous rollback deployment becomes 2 instead of 1, and in addition, it will be marked for deletion. The updated system becomes the 0 deployment, and the system will boot into it the next time your computer is re/started.

This also applies to other changes made to the deployment specifications using rpm-ostree. So let’s say you enable/disable initramfs regeneration, add/remove/modify kernel arguments, manage base package overrides, install/layer RPM packages, rebase, etc.

So technically, rpm-ostree does remove unused rollback deployments by default. This happens not just when you layer packages, but also when system updates happen.

You can alter this behavior by pinning a deployment so they don’t get marked for deletion. The pinned deployment will remain bootable until you unpin it, after which an rpm-ostree update may remove it from your system.

2 Likes

great to know. Thank you. I wonder if this detail would be useful in the docs?

1 Like