Documentation
Updates & rollback
You don't have to do anything. That's the whole story. Margine updates itself in the background, every single day, without ever asking you to confirm, click, type a password, or open a terminal. When you do want to look, the **Margine System** app shows what you are running and whether anything is waiting. This page is mostly about why that's a good thing, plus the rare moments where a button is involved.
You don't have to do anything π
Once a day, in the background, Margine checks if a new image is ready, downloads it if it is, and stages it. Flatpaks (Bazaar apps) get refreshed in the same pass. When the new image is sitting on disk, GNOME shows a quiet "Restart to apply updates" message in the top bar / power menu. Click Restart whenever it suits you. Until you do, you're still running the previous image: no rush, no nag, no forced reboot.
That's it. No PPAs to baby-sit, no half- failed apt upgrade at 2 AM, no kernel-and- X-server-mismatch surprise, no driver to recompile after a kernel bump. You install Margine and stop thinking about updates.
Why that matters:
- Less to keep in your head. A computer that updates itself is one less thing taking attention. You sit down, do what you came to do, close the lid.
- Security without the friction. Patches roll out as fast as the upstream ships them. The automatic cadence means you're never the user running an unpatched system for three months because the update prompt looked annoying.
- Identical-everywhere behaviour. Every Margine machine on the same release is byte-for-byte the same OS. If something works on one Margine, it works on yours; if a bug shows up, it's the same bug across the install base, and the fix lands for everyone at once.
- You can always go back. The previous image stays on disk after every update. If a new release ever misbehaves, the boot menu has both versions ready to pick. See "Roll back" below.
Check what you're running: the Margine System app
Open Margine System from the app grid. The top of the window answers the two questions people actually have, in big letters: whether the system is current, and which version it is on.
Below that, it shows the parts a single version number doesn't cover:
- Extra packages. Anything installed on top of the image with rpm-ostree layering, typically by
ujust margine-gaming-native, listed by name. They are re-resolved from the repositories on every system update, so they stay current along with the OS: there is nothing separate to update. - Apps and command-line tools. Flatpak apps and Homebrew tools with an update waiting, listed by name. Both update on their own in the background; the tools row has an Update Now button if you'd rather not wait.
- System check. Runs the same validators as
ujust margine-doctorand reports, one line per check, whether the system still matches how Margine ships it. - Previous version. One click to make the previous image the one you boot next: the graphical equivalent of the rollback described below.
The app is a front-end, not a second implementation: the update button runs exactly what ujust margine-update runs, so the terminal and the window can never disagree about how your machine updates.
Roll back if an update broke something
The simplest path is the Margine System app: open it, and under Health and Recovery press Roll Back, then restart. Everything below is the same thing done by hand, useful when the desktop itself is the problem.
From the boot menu:
- Open Activities β Power β Restartβ¦.
- While the machine reboots, tap the β / β arrow keys to stop the GRUB auto-boot countdown and show the menu (don't press
Esc: it drops into GRUB's command line). You'll see two entries: Margine (current) and Margine (previous). - Pick the previous one. You're back on the previous version, byte-for-byte.
To make the previous version permanent (so you stay on it next reboot too), open a terminal once you're back in and paste:
sudo bootc rollback
systemctl reboot
The broken update is still on disk and you can move forward again later, after a fix lands upstream.
Force an update right now
Most users never need this: the daily auto-update handles everything. But if you want to grab the latest image immediately (e.g. you read in the changelog that a bug you have was just fixed), open Margine System and press Download Update. The terminal equivalent, if you prefer it:
ujust margine-update
systemctl reboot
ujust margine-update is the safe manual update: it auto-detects whether you've added a layer (e.g. with ujust margine-gaming-native) and uses the right engine under the hood: rpm-ostree upgrade on a layered system, bootc upgrade otherwise. Don't run sudo bootc upgrade directly: it refuses on a layered deployment (Deployment contains local rpm-ostree modifications; cannot upgrade via bootc). And don't reach for rpm-ostree reset to "fix" that: it wipes every layered package (e.g. your whole gaming-native layer).
After the reboot, the validators tell you what you're on:
margine-validate-margine-system
Pause updates temporarily
Going into a tight deadline and don't want even a "click to restart" notification?
sudo systemctl disable --now uupd.timer
Re-enable when the deadline is past:
sudo systemctl enable --now uupd.timer
Under the hood (for the curious)
The daily routine is a systemd timer that fires once a day and orchestrates three things in the right order:
- bootc upgrade (or rpm-ostree upgrade on a layered system,
uupdauto-detects which to use): pulls a new OS image, stages it as a deployment. - flatpak update: refreshes installed Flatpaks (Bazaar apps).
- distrobox upgrade: refreshes any Distroboxes you have.
"Stages" is the key word: nothing replaces the running system. Restart picks up the staged version atomically.