Reference · Decisions
0016: Arch Linux base, in snapshots
Why WolOS is built on the base distribution's packages pinned to a dated snapshot.
Status: accepted; its build parts are replaced by 0029. Supersedes the FreeBSD base of 0001 (fork-and-tune stays).
On this page
Context
the desktop needs current GPU drivers (Mesa, NVIDIA, virtio-gpu in VMs), native Steam and Proton, and a current kernel. A rolling base breaks the "it just works" promise; a frozen base ages.
Decision
- Base = Arch Linux packages pinned to one Arch Linux Archive date per WolOS release (
wolos-iso/profile/snapshot). pacman reads only that date (Server = https://archive.archlinux.org/repos/<date>/$repo/os/$arch). A WolOS update moves the whole system to a newer tested date; nothing rolls in between. - Kernel = only
linux-wolos, published through the[wolos]channel: github.com/wonderlandos/linux (current stable, pinned ref) +kernel/conf/wolos.configfragment + the patches inkernel/linux/patches/. Other or modified kernels may be installed with pacman; they get their own boot entry,linux-wolosstays the default. - A/B slots: btrfs root subvolumes
@wolos-a/@wolos-b(writable, so pacman works), shared@home,@var. An update snapshots the running root into the other slot, moves its pacman.conf to the new release date, runspacman -Syuthere and boots it next; user-installed packages carry over. systemd-boot entries with boot counting (+3) fall back to the previous slot, which is also the restore point. A failed update deletes the new slot. - Init = systemd. rc.d scripts become units in
files/usr/lib/systemd/(wolos repo). sysctl/pciconf/kld readers become /proc, /sys,lspci, modprobe. - Build:
wolos-iso/build.sh= mkarchiso profilewolos-iso/profile/(live + installer ISO) on any Arch host orarchlinuxcontainer. VM tests use QEMU virtio-gpu, so the compositor runs in the VM. - Packages: pacman stays the package manager, used directly;
wolcontrols only the pinned pacman.conf, release updates and.wolapp metadata..wol= signed pacman package + WolOS metadata;[wolos]repo (apps, kernel, system) beside the pinned Arch repos; each release has a signed manifest (snapshot date, repo revision, image + sha256). - Steam and Proton are native packages (multilib). NVIDIA uses
nvidia-open.
Consequences
FreeBSD-only code (ZFS boot environments, pf, bsdinstall, pkg, wolos_qos kmod) is replaced; Host::is_freebsd paths stay compiling only while removed slice by slice. Firewall = nftables. Scheduler QoS moves to a sched_ext scheduler (follow-up).
Related
- 0040: Security defaults on LinuxFirewall on, no remote login, updates found without asking, and app permissions that say how they are enforced.
- 0017: One base systemWolKernel and the base userland are released together, as one version.
- The wol commandEvery wol command, what it does, and which ones helpers may call.
- 0025: Signed boot with this computer's keysEach computer makes its own boot keys at install; no shared vendor key.
- GamesNative Steam with Proton, and Windows programs outside Steam on Wine.
From the developer documentation, wonderlandos/wolos docs/adr/0016-arch-linux-base.md.