= Updating the OS :page-parent: Development // SPDX-FileCopyrightText: 2025 Demi Marie Obenour // SPDX-License-Identifier: GFDL-1.3-no-invariants-or-later OR CC-BY-SA-4.0 Right now, there is no official update server or update signing key. However, it is possible to run your own update server. See xref:../development/build-configuration.adoc[build configuration] for how to enable updates for your own Spectrum images. == Updating the system If you have built your image with updates enabled, you can update the system using the `spectrum-update` command. This takes the path to a staging directory as argument. This directory must be on a BTRFS filesystem. It is strongly recommended to not use this directory for any other purpose. However, it's safe to rename the directory and use `spectrum-update` with the new path afterwards. If there is a problem with the update, it's safe to try again. If that still doesn't work, you can delete the directory and try again with an empty one. This will cause `spectrum-update` to download the latest version even if it is already installed, but is otherwise harmless. Updates are atomic and take effect after the system reboots. If the system is rebooted, crashes, or loses power during an update, the update will not take effect. It is safe to resume an interrupted update. Since Spectrum's host has no network access, the VM that does the updates (`sys.appvm-systemd-sysupdate`) is given a BTRFS subvolume to write the updates into. It uses `systemd-sysupdate` to download the updates into this directory. Once it exits, the host snapshots this directory and checks it for malicious filenames or non-regular files. If the check passes, this directory is used as the source for `systemd-sysupdate`, which installs the updates to the OS volume and EFI system partition. See the documentation of https://www.freedesktop.org/software/systemd/man/systemd-sysupdate.html[systemd-sysupdate]. for some of the details.