Skip to content

Commit 70bdc29

Browse files
author
linux_name2
committed
docs: decouple from systemd-boot, clarify bootloader-agnostic UKI support
1 parent 860d502 commit 70bdc29

3 files changed

Lines changed: 35 additions & 14 deletions

File tree

‎README.md‎

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
[![CI](https://github.com/rpPH4kQocMjkm2Ve/atomic-upgrade/actions/workflows/ci.yml/badge.svg)](https://github.com/rpPH4kQocMjkm2Ve/atomic-upgrade/actions/workflows/ci.yml)
44
![License](https://img.shields.io/github/license/rpPH4kQocMjkm2Ve/atomic-upgrade)
55

6-
Atomic system upgrades for Arch Linux on Btrfs + UKI + Secure Boot.
6+
Atomic system upgrades for Arch Linux on Btrfs + UKI + optional Secure Boot.
77

8-
NixOS/Silverblue-style generational updates on plain Arch: Btrfs snapshot → chroot → upgrade → build UKI → sign → reboot. Rollback is selecting a previous entry in systemd-boot.
8+
NixOS/Silverblue-style generational updates on plain Arch: Btrfs snapshot → chroot → upgrade → build UKI → sign → reboot. Rollback is selecting a previous UKI entry in the boot menu.
99

1010
## How it works
1111

@@ -23,7 +23,9 @@ sudo atomic-upgrade
2323
reboot → new generation active
2424
```
2525

26-
Rollback: select a previous UKI entry in systemd-boot at boot time.
26+
Rollback: select a previous UKI entry in the boot menu.
27+
28+
Each generation is a snapshot + UKI pair. The UKI contains the kernel and initramfs from that snapshot, and its cmdline points to that specific subvolume. Rollback works because each boot menu entry maps to one complete system state.
2729

2830
## Comparison
2931

@@ -35,7 +37,7 @@ Rollback: select a previous UKI entry in systemd-boot at boot time.
3537
|---------|---------------|---------------------|------------------------|-------|---------------|
3638
| **Base distro** | Arch | Any (openSUSE native) | Any Btrfs | NixOS | Fedora |
3739
| **Atomic upgrades** | ✓ (chroot) | ✗ (pre/post snapshots) | ✗ (pre/post snapshots) | ✓ | ✓ |
38-
| **Rollback** | Boot menu (systemd-boot) | Boot menu (GRUB) | Boot menu (GRUB) | Boot menu | Boot menu (GRUB) |
40+
| **Rollback** | Boot menu (UKI) | Boot menu (GRUB) | Boot menu (GRUB) | Boot menu | Boot menu (GRUB) |
3941
| **Secure Boot** | ✓ (sbctl, optional) | Via separate setup | Via separate setup | ✓ (lanzaboote) | ✓ |
4042
| **UKI per generation** | ✓ | ✗ | ✗ | Optional | Optional |
4143
| **Upgrade isolation** | Chroot snapshot | None (live) | None (live) | Nix build | OSTree |
@@ -293,11 +295,12 @@ On disks larger than ~200 GB, the free percentage may drop below 10% while absol
293295

294296
### Prerequisites
295297

296-
- Btrfs root filesystem
297-
- systemd-boot
298-
- Root on a Btrfs subvolume (any name — snapshots are created as `root-<timestamp>`)
298+
- Btrfs root filesystem on a subvolume (any name — snapshots are created as `root-<timestamp>`)
299+
- A bootloader or UEFI firmware that discovers UKI files (Type #2 entries) — systemd-boot, rEFInd, direct UEFI boot, etc.
299300
- Secure Boot with sbctl *(optional, enable with `SBCTL_SIGN=1`)*
300301

302+
The tool places `.efi` files into `ESP/EFI/Linux/` (signed or unsigned depending on `SBCTL_SIGN`). Any boot environment that picks up UKI files from that path will work.
303+
301304
> **Important:** `/home`, `/var/log`, `/var/cache`, and other stateful data
302305
> should live on **separate Btrfs subvolumes**. Only the root subvolume is
303306
> snapshotted and rolled back — anything on the same subvolume will be

‎man/atomic-upgrade.8‎

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
.\" Automatically generated by Pandoc 3.5
22
.\"
3-
.TH "ATOMIC\-UPGRADE" "8" "" "atomic\-upgrade" "System Administration"
3+
.TH "" "" "" ""
4+
.SS \[ga]\[ga]\[ga]markdown
5+
title: ATOMIC\-UPGRADE section: 8 header: System Administration footer:
6+
atomic\-upgrade \[em]
47
.SH NAME
58
atomic\-upgrade \[em] atomic system upgrades for Arch Linux on Btrfs
69
.SH SYNOPSIS
@@ -17,9 +20,17 @@ subvolume, mounts it, runs a command inside an arch\-chroot (default:
1720
Kernel Image (UKI), optionally signs it with \f[B]sbctl\f[R](8), and
1821
runs garbage collection.
1922
.PP
23+
Each generation is a snapshot + UKI pair.
24+
The UKI contains the kernel and initramfs from that snapshot, and its
25+
cmdline points to that specific subvolume.
26+
Rollback works because each boot menu entry maps to one complete system
27+
state.
28+
.PP
2029
The new generation becomes active on next reboot.
21-
Rollback is performed by selecting a previous UKI entry in
22-
systemd\-boot.
30+
Rollback is performed by selecting a previous UKI entry in the boot
31+
menu.
32+
Any bootloader or UEFI firmware that discovers Type #2 entries works
33+
\[em] systemd\-boot, rEFInd, direct UEFI boot, etc.
2334
.PP
2435
\f[B]atomic\-rebuild\-uki\f[R] rebuilds the UKI for an existing
2536
generation subvolume.
@@ -179,5 +190,4 @@ sudo atomic\-rebuild\-uki \-\-list
179190
.SH SEE ALSO
180191
\f[B]atomic\-gc\f[R](8), \f[B]atomic.conf\f[R](5),
181192
\f[B]btrfs\-subvolume\f[R](8), \f[B]ukify\f[R](1), \f[B]sbctl\f[R](8),
182-
\f[B]pacman\f[R](8), \f[B]arch\-chroot\f[R](8),
183-
\f[B]systemd\-boot\f[R](7)
193+
\f[B]pacman\f[R](8), \f[B]arch\-chroot\f[R](8)

‎man/atomic-upgrade.8.md‎

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
```markdown
12
---
23
title: ATOMIC-UPGRADE
34
section: 8
@@ -22,8 +23,15 @@ mounts it, runs a command inside an arch-chroot (default: **pacman -Syu**),
2223
updates *fstab*, builds a Unified Kernel Image (UKI), optionally signs it
2324
with **sbctl**(8), and runs garbage collection.
2425

26+
Each generation is a snapshot + UKI pair. The UKI contains the kernel and
27+
initramfs from that snapshot, and its cmdline points to that specific
28+
subvolume. Rollback works because each boot menu entry maps to one complete
29+
system state.
30+
2531
The new generation becomes active on next reboot. Rollback is performed by
26-
selecting a previous UKI entry in systemd-boot.
32+
selecting a previous UKI entry in the boot menu. Any bootloader or UEFI
33+
firmware that discovers Type #2 entries works — systemd-boot, rEFInd,
34+
direct UEFI boot, etc.
2735

2836
**atomic-rebuild-uki** rebuilds the UKI for an existing generation subvolume.
2937
Use it to recover an accidentally deleted *.efi* file.
@@ -164,4 +172,4 @@ List subvolumes and UKI status:
164172
# SEE ALSO
165173

166174
**atomic-gc**(8), **atomic.conf**(5), **btrfs-subvolume**(8), **ukify**(1),
167-
**sbctl**(8), **pacman**(8), **arch-chroot**(8), **systemd-boot**(7)
175+
**sbctl**(8), **pacman**(8), **arch-chroot**(8)

0 commit comments

Comments
 (0)