Software Update
Check for updatesInstall nowRestart nowDetails
src/apps/updater_ui.c
Over the air
On the device
/BOOTSLOT
active=A # or B -> which slot to boot
trial=1 # 1 = this slot is newly-updated and unconfirmed
tries=3 # boot attempts left before auto-rollback
UPDATER_DESIGN.md · updater design
XUP1
manifest.txt
XUP1
version=<string>
slot=<kernel|data|full>
notes=<one line, optional>
file <relpath> <size> <sha512hex>
...
tools/xeris_update_sign.py
XUP1manifest.sig · Ed25519 · 64 raw bytesslot=
| slot= | Payload | Lands at | Boot slot |
|---|---|---|---|
kernel | kernel.bin | /<slot>/kernel.bin | flips to the inactive slot · trial=1 tries=3 |
data | one runtime file | / (volume root) | no flip |
full | kernel.bin + XCRAFT.ELF UPDTST2.ELF ABOUT XKBMAP.TXT ari | /<slot>/… | flips to the inactive slot · trial=1 tries=3 |
src/net/updater.c · release.mk
Servers
| URL | Serves | Transport |
|---|---|---|
updates.xerisos.com/manifest.txt | signed manifest | HTTP · 301 to https followed |
updates.xerisos.com/manifest.sig | Ed25519 signature, 64 raw bytes, over manifest.txt | HTTP |
updates.xerisos.com/<relpath> | each payload file named in the manifest, SHA-512 checked | HTTP |
components.xerisos.com/web/ | Web component · our Chromium build, CHROME.ELF, fetched on first use | HTTPS manifest · HTTP files |
components.xerisos.com/office/26.8.0/ | LibreOffice component · corresponding source | HTTPS manifest · HTTP files |
src/net/updater.c · src/net/component_url.h · tools/component.mk
COMPONENTS.TXT · shipped on the image
XCOMP1
# XerisOS runtime components. The OS fetches these on demand and verifies each
# against its own signed per-component manifest (Ed25519, same key as updates).
# Regenerate with: make -f tools/component.mk components-manifest
component web https://components.xerisos.com/web/ latest / CHROME.ELF
tools/stage_image.ps1 · · installing the browser · LibreOffice
updates.xerisos.comcomponents.xerisos.comOn the device
src/apps/updater_ui.c
src/core/shell.c
Now serving
0.20.20