Compute nodes on COSMOS/ORBIT have no fixed operating system — their state is whatever disk image you load. Images are .ndz files in a shared store at console.<domain>.cosmos-lab.org:/mnt/images (the same volume from every console — one store for the whole testbed), loaded with omf load and captured with omf save.
Build on these — they are maintained, current, and what all tutorials assume:
| Image | Contents | Use it for |
|---|---|---|
baseline.ndz |
Current Ubuntu LTS server (24.04), passwordless root SSH from the console | Anything that doesn't need radios |
baseline-sdr.ndz |
baseline + UHD 4.9 and GNU Radio 3.10 | All USRP / SDR work |
ubuntu2404-uhd4.9-gr3.10-RT.ndz |
baseline-sdr + PREEMPT_RT real-time kernel | Latency-critical SDR (e.g. 5G RAN stacks) |
baseline.ndz and baseline-sdr.ndz are stable symlink names: they always point at the current generation (today the ubuntu2404-* images). Use the stable names in scripts, tutorials and documentation — when the testbed moves to a new Ubuntu generation, they follow automatically and your workflow keeps working.
Every reference image ships passwordless root SSH from the console (and a fallback account native/native), so ssh root@node1-1 just works during your reservation.
The portal Disk Images page lists the full library — thousands of images including user-saved and special-purpose ones (tutorial stacks, 5G images, measurement rigs). Tutorial pages name the exact image they need.
omf load -t node1-1,node1-2 -i baseline-sdr.ndz -r 0 # -r 0 = grow root to whole disk
omf tell on -t node1-1,node1-2 # load leaves nodes OFF
After boot, ssh root@node1-1 cat /.omf-image-name confirms which image the node is actually running — see the OMF Quick Start for the caveats that matter.
The normal workflow to preserve your setup:
apt-get update && apt-get install --only-upgrade $(dpkg-query -W -f='${Package}\n' 'cosmos-*' | tr '\n' ' '). A save freezes whatever is installed. (prepare.sh will tell you how many other upgrades are pending, but will not apply them.)/root/prepare.sh (genericizes the node and shuts it down).omf save -n <node-fqdn>.<user>-<node-fqdn>-<epoch>.ndz in /mnt/images to something meaningful.console.<domain>.cosmos-lab.org:/mnt/images). omf save writes the file 0640 — owner and group only — so anyone whose primary group differs cannot load it, and the failure looks like a broken image rather than a permissions problem. If others will use it: chmod 0644 <img>.ndz && touch <img>.ndz (the touch matters — frisbee caches readability by path). Full detail: OMF Quick Start → omf save.Full options and the shrunken-partition caveat: OMF Quick Start → omf save.
Data interfaces come up at MTU 9000; images saved before mid-2026 carry 8000, which makes
UHD derive a frame size below spec. When rebaking an older image, refresh the COSMOS packages
first (step 2 above — cosmos-ifname 1.12+ for the MTU default, and 1.15+ so the save does not
carry the baking node's own journal into your image) so current defaults are baked in. To ship a different MTU in your image, add a /etc/netplan/99-*.yaml override before
running prepare.sh — never edit 10-cosmos-roles.yaml, which is regenerated on every boot.
The image store is shared and finite. Delete images you no longer need (/mnt/images is writable by their owner from the consoles), and prefer one maintained image per project over many near-duplicates.