π Rollback & Update Troubleshooting
TunaOS uses bootc to manage your system as a container image. Every update is atomic β if something goes wrong, you can roll back to the previous deployment in one command. This guide covers the full lifecycle: update, verify, roll back, and fix boot failures.
Quick Referenceβ
| Task | Command |
|---|---|
| Check current status | bootc status |
| Apply an update | sudo bootc upgrade && sudo systemctl reboot |
| Roll back to previous | sudo bootc rollback && sudo systemctl reboot |
| List all deployments | bootc status (see the "Queue" section) |
| Pin to a specific image | sudo bootc switch ghcr.io/tuna-os/yellowfin@sha256:... |
How Rollback Worksβ
Every time you update or switch images, bootc keeps the previous deployment on disk. The boot menu shows two entries:
- The current deployment β the system you use now
- The rollback target β the previous deployment
When you run bootc rollback, bootc marks the previous deployment as the next boot target. After the reboot, the old image becomes the "current" deployment, and the problematic update becomes the rollback target.
Bootc keeps the last 2 deployments by default. Bootc automatically cleans up older deployments.
Worked Example: Update, Break, Roll Backβ
This section walks through a realistic scenario: you update your system, discover a regression, and roll back.
Step 1: Check Your Current Stateβ
bootc status
Output:
β TunaOS Yellowfin GNOME (olive)
Image: ghcr.io/tuna-os/yellowfin:gnome
Boot: booted
Note the image digest (the @sha256:... part) β you'll compare against it later.
Step 2: Apply an Updateβ
sudo bootc upgrade
Bootc pulls the latest image and deploys it:
Pulling: ghcr.io/tuna-os/yellowfin:gnome
Deploying: ghcr.io/tuna-os/yellowfin:gnome@sha256:def456...
Reboot to activate:
sudo systemctl reboot
Step 3: Verify the Updateβ
After reboot, confirm you're on the new deployment:
bootc status
β TunaOS Yellowfin GNOME (navy)
Image: ghcr.io/tuna-os/yellowfin:gnome@sha256:def456...
Boot: booted (deploying)
Queue: rollback β ghcr.io/tuna-os/yellowfin:gnome@sha256:abc123...
The "Queue" line shows the rollback target β the deployment you used before.
Step 4: Discover a Problemβ
Something does not work right β a driver regression, a broken dependency, or a display issue. You decide to roll back.
Step 5: Roll Backβ
sudo bootc rollback
sudo systemctl reboot
Step 6: Confirm the Rollbackβ
bootc status
β TunaOS Yellowfin GNOME (olive)
Image: ghcr.io/tuna-os/yellowfin:gnome@sha256:abc123...
Boot: booted
You're back on the previous deployment. The problematic update is now the rollback target if you ever want to try it again.
Pinning a Specific Imageβ
If you want to stay on a known-good version and ignore future updates, pin to a specific digest:
# Find the digest of the image you want
skopeo inspect docker://ghcr.io/tuna-os/yellowfin:gnome | jq '.Digest'
# Pin to that exact image
sudo bootc switch ghcr.io/tuna-os/yellowfin@sha256:abc123...
sudo systemctl reboot
To resume normal updates at a later time, switch back to the tag:
sudo bootc switch ghcr.io/tuna-os/yellowfin:gnome
Troubleshooting Boot Failuresβ
If your system won't boot after an update, you have several recovery options.
Option 1: Select Previous Deployment at Bootβ
When the system boots, the systemd-boot menu shows the available deployments. Use the arrow keys to select the previous entry and press Enter. This boots into the rollback target without any commands.
Option 2: Boot into a Live ISOβ
If the boot menu itself fails:
- Download a TunaOS ISO from tunaos.org/download
- Boot from USB
- Mount your root filesystem and inspect logs:
# Find your root partition
lsblk
# Mount it (adjust /dev/sda3 as needed)
sudo mount /dev/sda3 /mnt
# Check bootc status from the live environment
sudo bootc status --sysroot /mnt
Option 3: Check Boot Logsβ
From a good boot or rescue entry:
# View boot logs from the current session
journalctl -b -o short-monotonic
# View logs from the previous boot
journalctl -b -1 -o short-monotonic
# Check for systemd ordering cycles or failed units
journalctl -b -p err
Common Issuesβ
| Problem | Cause | Fix |
|---|---|---|
| "Ordering cycle found" at boot | A systemd unit has a circular dependency | Boot into the rollback deployment and remove the offending unit from your custom image |
| Black screen after boot | Display driver or compositor issue | Roll back, then check if the issue is in the new image before re-updating |
| Network not available after update | NetworkManager or DNS config changed | Roll back, then file an issue with journalctl -b -u NetworkManager logs |
| Boot drops to emergency shell | Missing root filesystem or broken fstab | Use a live ISO to inspect /etc/fstab and the bootc deployment list |
bootc upgrade fails to pull | Registry auth or network issue | Check podman pull ghcr.io/tuna-os/yellowfin:gnome first to isolate the problem |
Further Readingβ
- Manage TunaOS with Bootc β the full guide for bootc management
- Bootc Resources β curated links and references
- Installation Guide β fresh install instructions
- FAQ β quick answers to common questions
- bootc-dev/bootc β official bootc project