Not stable yet. WolOS is in active development and the current ISO is a test build: try it in a virtual machine or on a spare disk, not on a computer you depend on.

WolOS
Manual contents

Under the hood

Boot and install safety

Two system slots, signed boot images, quiet boot, and an installer that only touches what it planned.

What it is

WolOS keeps two copies of the system (slots) on one btrfs partition and boots the newest good one. Each slot starts from one signed image that holds the kernel, initramfs and command line.

Why

If an update fails to start three times, the other slot starts on its own. Signing the whole image means the command line and the system seal are covered by the signature too.

How

Nothing to do day to day. wol boot status shows the Secure Boot tier; wol boot enroll repeats the one-time key screen if you missed it. Other boot managers (rEFInd, another system's GRUB) can start WolOS.

Reference

Disk layout

GPT: partition 1 = ESP (1 GiB, FAT32, label WOLOS, mounted at /efi), partition 2 = btrfs (label WolOS). Subvolumes: @wolos-a (installed system), @home, @var; the first update creates @wolos-b. / is the slot the boot entry names (rootflags=subvol=@wolos-a); fstab mounts only /home, /var, /efi. The pacman database lives in the slot (DBPath = /usr/lib/pacman/), so each slot knows its own packages.

Boot entries

systemd-boot, timeout 0 (3 with another system on the disk), no default: entries share a sort key and sort by generation, so the newest good slot boots (ADR 0025). /usr/lib/wolos/esp-sync (pacman hook 95-wolos-esp, boot-setup, updates with --new) builds one image per kernel in EFI/wolos/ and writes:

EntryImageNotes
wolos-<slot>+3.confwolos-<slot>.efithree tries; version <generation>-<release>
wolos-<slot>-<pkgbase>.confwolos-<slot>-<pkgbase>.efiany other kernel installed with pacman

Words come from /etc/kernel/cmdline, the slot from /etc/wolos/slot; wolos.epoch=, the tier's words and wolos.seal= are added inside the image. A boot is good when wolos-boot-ok.service sees wold (login window) up, before boot-complete.target; systemd-bless-boot then drops the counter and wol boot bless moves the epoch floor. Three failed boots: the entry sorts last and the other slot boots.

Quiet boot

Kernel quiet splash loglevel=3 audit=0 rd.udev.log_level=3 systemd.show_status=auto vt.global_cursor_default=0; plymouth theme wolos (the mark on black) in a systemd initramfs.

Secure Boot

ADR 0025. install-boot runs boot-setup ROOT ESP after the seal; it prints the tier and writes plain words to /run/wolos/boot-note (the Install app shows that file).

TierWhenFirst stage
own-keysSetup Modeour loader, signed with this computer's key, enrolled next to Microsoft's
mokthird-party CA in dbwolos-shim, then our signed loader as grubx64.efi; one key screen, word boot
offneither, or WOLOS_SECURE=nounsigned
firmwareSecure Boot on, nothing above fitsa firmware setting must change

Keys: /var/lib/wolos/secureboot (boot-keys create|open|close). boot-setup / /efi --enroll turns protection on later. wol boot status prints the JSON Settings reads. The firmware menu entry and tamper proofs are in wolos-iso/tests/test/.

Other boot managers

rEFInd finds EFI/systemd/systemd-bootx64.efi and EFI/wolos/*.efi on its own. Pick the first: it keeps try counting and rollback. GRUB of another system: copy /usr/share/wolos/boot/41_wolos to its /etc/grub.d/ and run its config update.

Install safety

StepScriptGuarantee
listinstall-disksnever the live medium, CDs, loop, zram or read-only disks
checkinstall-check <disk>read-only; refuse not-listed/too-small/in-use; os Windows/Linux/macOS/FreeBSD from GPT types and filesystems; secureboot on
writeinstall-run <disk>all checks before systemd-repart --empty=force; only the picked disk and its partitions are named; sleep and lid held off
planinstall-run --plan FILE (ADR 0023)the disk must still match the plan's fingerprint; Alongside and Manual go through wol install layout, which names only the partitions in the plan and reads the table back after every step
verifyinstall-runentry, kernel and initramfs on the ESP and fstab before done

Unattended: wolos.autoinstall=<disk> on the live command line (wolos-autoinstall.service), then power off. Tests: crates/controller/tests/image_install.rs (fake tools). VM: wolos-iso/tests/test-install.sh (bystander disk, BOOT PASS|FAIL). wolos-iso/tests/test-installer.sh: Windows-like and Linux-like disks, real partitioning on loop devices (layouts) and whole installs in a VM (run).

Key enrollment

wol boot enroll queues this computer's key with mokutil --import and sets the key screen to wait. boot-setup runs it during install and wolos-mok-enroll.service repeats it at each start until the key is enrolled. The password comes from wol boot password. The image carries the first stage in wolos-shim: a system without it never reports mok.

Reference synced from wonderlandos/wolos docs/modules/boot.md.