Keeping Herd updated¶
An installed Herd stays up to date without reformatting and without waiting for a new ISO, from the same signed repository as the other editions. There are two kinds of update, with different tools:
| Kind | What changes | Tool |
|---|---|---|
| Day-to-day updates | fixes and new package versions, within the same generation | dnf upgrade |
| Generation upgrade | jump to the next generation of the system (new Fedora base) | herd-upgrade |
This page is about Herd
The desktop editions use capivaraos-upgrade and do get an automatic Btrfs
snapshot. On Herd both of those differ, which is what this page is for. For
desktop, see Keeping your system updated.
Day-to-day updates¶
Besides Fedora's packages you receive ours from a signed repository:
every package and the metadata are verified against our GPG key
(gpgcheck + repo_gpgcheck). A signature that does not check out stops the
transaction — there is no path that installs one of our packages without
passing verification.
Generation upgrade¶
herd-upgrade drives dnf5 system-upgrade in explicit steps:
herd-upgrade # pre-flight: shows what would happen; changes nothing
sudo herd-upgrade download # downloads the offline transaction (no reboot)
sudo herd-upgrade reboot # applies now, rebooting into offline mode
With no argument it runs the pre-flight and nothing is changed. The default
target is the current generation + 1; for another, use --to N.
Run the pre-flight first
The pre-flight answers, for your machine, whether a target generation has been published, what filesystem the root is on, and whether a snapshot will be taken. You don't have to guess which case you are in.
If no target generation has been published yet, the pre-flight refuses — otherwise the machine would move to a new Fedora base and leave the CapivaraOS packages behind. That is the correct behaviour, not a failure.
Snapshots and recovery¶
This is the part worth planning for.
The usual server layout is LVM + xfs, and in that arrangement there is no
automatic snapshot: Snapper covers Btrfs, not xfs. Herd also does not ship
Snapper installed and configured. herd-upgrade detects the case and tells
you in the pre-flight which one you are in:
- root on LVM — no automatic snapshot. The tool prints the manual command
(
lvcreate -s …), which depends on free space in the volume group. On an install where root was grown to fill the disk, there is no space to take the snapshot from. - root on Btrfs with an active Snapper
rootconfig — automatic snapshot, as on the desktop editions. That requires you to have installed and configured Snapper yourself. - neither — nothing is snapshotted.
On a server, then, the recovery path is your backup. Take a verified backup before a generation upgrade and treat restoring it as the way back.
Do not count on snapshot rollback on Herd
Snapshot rollback — and lvconvert --merge with it — only works if the
snapshot exists. On Herd's default layout it does not. Plan with backups.
A kernel that won't boot is a separate case¶
A new kernel that fails to boot does not require restoring anything. The system keeps the last three installed kernel versions (dnf's default) and the GRUB menu lets you boot the previous one. That covers a kernel change, not a generation upgrade.