Skip to content

Sundog

Sundog is Frostyard’s KDE Plasma desktop. It is a Debian Trixie bootc/composefs image for x86-64 machines with UEFI, built from the same Base as the other Frostyard images. Plasma on Wayland is the only desktop session it offers. Sundog ships only as a bootc image. You install it with Firn.

The system lives in a read-only /usr that updates as one piece, and you can roll back to the previous version. Image and system-extension applications live under /usr. Your homes, Flatpak data, containers, and update state live under /var. Sundog has its own core Flatpak set.

Firn is the installer. It needs UEFI and erases the disk you pick. It works with or without Secure Boot, TPM 2.0, and disk encryption, and asks you about each one. Use a disk of at least 30 GiB, and more if you plan to keep Flatpaks, containers, and several updates. The installer runs from RAM and needs at least 4.5 GiB of memory.

  1. Download the installer and its checksums:
  2. Check the signing key’s fingerprint and the ISO, then write the ISO to a USB stick. The installation guide has the exact gpgv and sha256sum commands and the commands to write the stick. Read its warning on picking the right device.
  3. Boot the stick. In Firn, pick the bootc Sundog product, review the recipe Firn builds, and confirm the exact target disk.
  4. If Firn shows a recovery key, store it somewhere other than this disk before you continue.
  5. If Secure Boot is on, enroll the MOK when asked. Without it, the MOK-signed boot stage is not trusted while Secure Boot is enforced.

The native in the ISO address is an old folder name. It does not mean an A/B install.

Sundog starts at the SDDM login screen with the Breeze theme. Log in with the user you created in Firn. Plasma on Wayland is the only session the image offers; it has no Plasma X11 session. Discover lists Flatpak applications only.

Firn can install the chosen core Flatpak set as part of the recipe; Sundog uses its own list. If yours included it, the apps are already there.

Check that the system is healthy:

Terminal window
systemctl is-system-running
sudo bootc status
sudo snosi-update-status --check
systemctl list-timers bootc-update-stage.timer

bootc status shows the booted and staged deployments, and names the image it follows. snosi-update-status --check tells you whether a newer image is published. The timer is listed with its next run.

Install applications as Flatpaks or as system extensions. Do not install APT packages into /usr: an image update does not keep them. The package lists in the build are not a package manager you can add to.

Updates are automatic. Every hour, bootc-update-stage.timer checks for a new image, pulls it with Podman, and stages it. The timer adds a random delay of up to 15 minutes. The new version starts at your next normal reboot. The stager does not force a reboot.

Enabled system extensions update on their own. A new version is staged and starts at the next boot. See Automatic updates.

The stager runs the bootc commands itself. You do not need to run them. On the first staged update, while the host does not yet follow the image from containers-storage, it runs bootc switch --transport containers-storage. From then on, in steady state, it runs bootc upgrade, because a second bootc switch to the same image would do nothing. Both paths verify the staged digest before they report success.

To go back to the previous version:

Terminal window
sudo bootc rollback
sudo systemctl reboot

Homes and container data in /var are shared by all versions, so a rollback keeps them. After a rollback, the updater does not stage the version you rolled back from again. It waits for the next published image.

Keep about twice the image size free in /var. The updater pulls each new image into /var before it stages it.

Sundog checks itself for problems 3 to 8 minutes after boot, then about every hour. It records:

  • a system service that failed
  • an image update that could not be staged
  • a system-extension update that failed
  • a boot into an older image
  • an encrypted disk that the TPM opened only after a retry, or that needed a passphrase or the recovery key
  • an integrity error
  • a crash of a system program
  • a problem that a Frostyard system service recorded

The records stay on this computer.

To see them, open ChairLift and select Problems. The page comes with ChairLift v0.14.0. Each row says what happened and when. Expand a row for a hint, the details, and the Copy details and Dismiss buttons. A dismissed problem shows again if it happens again. The page also lists crashes of your own programs and problems that Frostyard apps recorded in the last 90 days. ChairLift sends nothing until you turn reporting on.

To read the system list in a terminal:

Terminal window
snosi-health --list

Each line shows when the problem was last seen, its kind, a short summary, and how many times it was seen. With no problems, it prints No problems recorded and the time of the last check. If the command is missing, the image is older than this feature: let it update, then reboot.

If ChairLift has no Problems page, the image may carry a ChairLift older than v0.14.0: let it update, then reboot. On an image with ChairLift v0.14.0 or later, ChairLift hides the page when /etc/chairlift/config.yml turns off all 3 of its groups, or when it shows a configuration error. Fix the file and restart ChairLift.

From ChairLift v0.15.0, the Problems page has a Send problem reports switch. It is off until you turn it on, and each user decides for themselves. Ask each time shows you each report before it goes. Send automatically sends without asking. Sent reports lists the 50 newest reports it sent. Crash records stay on this computer. The image gets ChairLift v0.15.0 with the next image release.

If there is no switch, the image may carry a ChairLift older than v0.15.0 (let it update, then reboot), or /etc/chairlift/config.yml turns off problems_reporting_group. Read what a report holds and how to have one deleted in Problem reports. Read how ChairLift decides what to send in ChairLift ADR-0015.

A crash keeps no core file. The journal keeps the crash entry. It has a stack trace only when the core is 1 GiB or smaller. To keep core files while you debug a crash, set Storage=external in /etc/systemd/coredump.conf.d/90-debug.conf:

[Coredump]
Storage=external

The image sets Storage=none in 50-snosi.conf, and the file that sorts last wins. Give your file a name that sorts after 50-snosi.conf.

Apply it before you reproduce the crash:

Terminal window
sudo systemctl reload systemd-coredumpd.service

If that service is not running, there is nothing to reload: each crash then reads the file. A reboot also applies it.

Sundog is Base plus the bootc runtime, the bootc security setup, the KDE composition, the backports kernel, and the image output format.

Layer What you get
Base Debian Trixie userspace, systemd, the hourly update stager, Updex, and the system-extension definitions
Bootc runtime bootc, libostree-1-1, and the packages OCI bootc needs
Desktop Plasma 6 on Wayland with kde-plasma-desktop, kwin-wayland, SDDM, and the KDE applications below
Kernel linux-image-amd64/forky for now, with most firmware and Mesa from trixie-backports
Core Flatpak set Gwenview, Haruna, KCalc, KCharSelect, Okular, Skanpage, Weather, Kontainer, Bazaar, MissionCenter, Elisa, Filelight, KRDC, and KClock
Containers Podman, Distrobox, and Buildah, plus systemd-container and the Frostyard Intune integration

The image carries its Flatpak list at /usr/share/frostyard/sundog.core-flatpaks.json.

The image carries these KDE packages:

  • Plasma and the session: kde-plasma-desktop, kwin-wayland, sddm, sddm-theme-breeze, plasma-nm, plasma-pa, kscreen, powerdevil, polkit-kde-agent-1, libpam-kwallet5, xdg-desktop-portal-kde, and qt6-wayland.
  • Applications: dolphin, dolphin-plugins, kio-extras, kio-fuse, ark, kate, konsole, kde-spectacle, kdeconnect, and khelpcenter.
  • System tools: plasma-systemmonitor, ksystemstats, kinfocenter, plasma-thunderbolt, kwalletmanager, kmenuedit, keditbookmarks, and kde-config-screenlocker.
  • Appearance, input, and previews: breeze-gtk-theme, kde-config-gtk-style, xsettingsd, sonnet6-plugins, hunspell-en-us, fcitx5, kde-config-fcitx5, fcitx5-frontend-gtk3, fcitx5-frontend-gtk4, fcitx5-frontend-qt6, ffmpegthumbs, kdegraphics-thumbnailers, qt6-image-formats-plugins, and kimageformat6-plugins.
  • Flatpak: flatpak, plasma-discover-backend-flatpak, and kde-config-flatpak.
  • Printing and scanning: cups, print-manager, system-config-printer-udev, and libsane1.
  • Hardware and power: pipewire, pipewire-audio, bluez, bluedevil, bolt, tuned, tuned-ppd, upower, and switcheroo-control.
  • Boot: plymouth, plymouth-label, and plymouth-theme-breeze.

Gwenview, Okular, KCalc, and Skanpage are Flatpaks, not packages in the image.

  • sddm.service is the display manager. The image links /usr/lib/systemd/system/display-manager.service to it, so SDDM starts on every boot.
  • /etc/sddm.conf.d/10-sundog.conf sets the Breeze theme and RememberLastSession=true.
  • /etc/plymouth/plymouthd.conf sets the Breeze Plymouth theme, ShowDelay=0, and DeviceTimeout=8.
  • The user preset 90-sundog.preset disables bazaar.service and podman.service. The Podman API socket stays available.
  • tmpfiles rules create /var/lib/sddm with mode 0750 for user sddm, and /var/lib/tuned.
  • The image removes the Plasma X11 session descriptor, so Plasma on Wayland is the only session.
  • Discover has only its Flatpak backend. The build removes the PackageKit backend plugin, and fails if the plugin is not there.
  • Flathub is configured as on Snow, from the same repository descriptor.
  • Sundog reuses the shared tree that Floe carries. That adds the Homebrew setup and update units and the presets that turn off the APT daily timers. The image removes /usr/share/floe. Base supplies the persistent journal and the zram swap, as on every image.

Choose Sundog for a KDE Plasma desktop on Wayland. For GNOME, use Snow. The other products are:

  • Snow: the general-purpose GNOME desktop.
  • Snowfield: GNOME for Microsoft Surface devices. It is untested on representative Surface hardware; its hardware gate was waived for catalog inclusion.
  • Floe: a headless server.

Base is the shared foundation, not a fifth installer choice. Sundog has the Trixie userspace with a newer kernel.

Symptom Check Fix
No update is staged systemctl list-timers bootc-update-stage.timer and journalctl -u bootc-update-stage.service Wait for the hourly run. Check the network and the free space in /var.
Staging fails for lack of space Compare the free space in /var with the image size Free space or grow the disk. The updater needs room for the download, the new version, and the previous one.
Discover shows no system packages That is how Sundog ships: Discover has only its Flatpak backend Install Flatpaks from Discover, or install host software as a system extension.
A KDE application you expect is missing The core Flatpak set Install it as a Flatpak. Gwenview, Okular, KCalc, and Skanpage are Flatpaks.
Secure Boot or TPM does not behave as you expect bootc status and the firmware settings Check the firmware settings, then read the Bootc Secure Operations runbook. Secure Boot is not production-ready yet.

Reviewed 2026-10-27 against snosi commit b2858ca0222814c395cf8248db98f3e096d57dc9.

The Problems section was reviewed 2026-11-05 against snosi commit b6e5e0769c605b920686c12bc7f0962caac10586 and ChairLift release v0.14.0 commit 54124831081796ffdadd4e10644fdc20719bf723 (release).

The reporting part was reviewed 2026-11-05 against ChairLift release v0.15.0 commit e3e434a2843512c99538c08070bafd1c965eb7f8 (release).

Privacy