This is the canonical reference for the omf command-line tools. They are run on your reserved domain's console, as your own user, during an active reservation. Four verbs cover day-to-day resource control: stat (status), tell (power), load (image), save (snapshot).
user@console:~$ omf
Usage: omf [COMMAND] [ARGUMENT]...
help Print this help message or a specific command usage
load Load a disk image on a given set of nodes
save Save a disk image from a given node into a file
tell Switch a given set of nodes ON/OFF or reboot them
stat Returns the status of a given set of nodes
Common options for all verbs: -d <domain> (override the auto-detected domain), -v (verbose), --debug.
-t topology argument| Form | Meaning |
|---|---|
all |
all nodes in the domain |
node1-1,node1-2 |
explicit comma-separated list (no spaces) |
1-1,1-2 |
short names, auto-qualified with the domain |
1..3,1..4 |
ranges (all x,y combinations) |
system:topo:imaged / failed / timedout |
result sets from the last omf load |
system:topo:<name> |
a named topology stored in the inventory |
Nodes in another domain need the full FQDN (e.g. node1-1.sb5.cosmos-lab.org).
omf stat -t all --summary # counts of up/down for the whole domain
omf stat -t node1-1,node1-2 # detailed status for specific nodes
omf stat -t all is also the quickest way to list every node name the console knows about.
omf tell <on|off|offs|offh|reset|reboot> -t <topology>
| Verb | Effect |
|---|---|
on |
power on |
offs |
soft power-off (graceful OS shutdown) |
offh |
hard power-off |
off |
power off |
reset |
hard power-cycle |
reboot |
soft reboot |
omf tell on -t node1-1,node1-2
omf tell reset -t node1-1
omf tell offs -t all # graceful shutdown of everything when you finish
(The older -a <verb> flag form is still accepted.)
Power actions go through each node's chassis manager; some (PoE-switched nodes, PDUs) take 20–60 s to act, so allow a moment before concluding nothing happened.
omf load -t <topology> [-i <image>.ndz] [-r <size>] [-o <secs>]
-i/--image — image name from the shared store (default baseline.ndz)-r/--resize — root partition size in GB; 0 = grow to the whole disk (default 20)-o/--timeout — image-transfer timeout in seconds (default 800)omf load -t all -i baseline.ndz # baseline on every node
omf load -t node1-1 -i baseline-sdr.ndz -r 0 # SDR image, full-disk root
omf load -t system:topo:failed -i my.ndz # retry only the ones that failed
Reference images to build on: baseline.ndz (current Ubuntu LTS) and baseline-sdr.ndz (adds UHD + GNU Radio). These are stable names — they always point at the current generation, so use them in scripts and tutorials rather than versioned image names.
omf loadleaves nodes powered OFF when it finishes. Follow it withomf tell on -t <topology>.
Verify you booted your image, not the PXE stage OS. A load can report success while a node is still in the in-memory staging system. After boot:
ssh root@<node> cat /.omf-image-name— it prints the.ndzyou loaded. If the file is missing (orroot/password-rootlogins work), power-cycle:omf tell offh -t <node>, wait ~20 s,omf tell on -t <node>.
omf save captures ONE node's disk into a new .ndz in the shared image store.
If anyone else will use this image, refresh the COSMOS packages first. A save freezes
whatever is installed, so a stale package becomes everyone's problem:
root@node1-1:~# apt-get update
root@node1-1:~# apt-get install --only-upgrade $(dpkg-query -W -f='${Package}\n' 'cosmos-*' | tr '\n' ' ')
prepare.sh reports how many other package upgrades are pending before it finishes, but it
deliberately does not apply them — that has to happen here, while you can still confirm the node
still works. On an image carrying out-of-tree drivers (USRP/NI-RIO, or a real-time kernel), hold
the kernel and driver packages before any wider upgrade, or a routine apt run can silently
break them.
Before saving, genericize the node — on the node, run:
root@node1-1:~# /root/prepare.sh
This removes host-specific state (udev rules, logs, machine identity) and shuts the node down. Skipping it produces an image that misbehaves when loaded onto any other node.
Then, from the console:
omf save -n node1-1.sb5.cosmos-lab.org # node must be the full FQDN
The result is written to the image store as <user>-<node-fqdn>-<epoch>.ndz — rename it to something meaningful. Load it later with omf load -i <yourimage>.ndz.
The image store is
console.<domain>.cosmos-lab.org:/mnt/images— the same volume from every console, so run the commands below on your sandbox console.
omf savewrites the file mode0640— owner and group only. Anyone whose primary group differs cannot load it, and the failure looks like a broken image rather than a permissions problem. If anyone else will use it, widen the mode and thentouchthe file — frisbee caches readability by path, so without thetouchit can keep reporting the old answer:chmod 0644 /mnt/images/<yourimage>.ndz && touch /mnt/images/<yourimage>.ndzKeep a project-private image at
0640and set the group instead — but notechgrpto a supplementary group fails over NFS, so usesg <group> -c "chgrp <group> /mnt/images/<img>.ndz".
Saving shrinks the node's root partition to its minimum. The saved
.ndzis fine — loading it with-r 0expands it again. But if you power the same node back on without re-imaging, it boots the shrunken, nearly-full partition. Re-image it (or resize the partition) before further use.
omf stat -t all --summary
omf load -t 1-1,1-2 -i baseline-sdr.ndz -r 0
omf tell on -t 1-1,1-2
# ... experiment: ssh root@node1-1 ...
omf save -n node1-1.sb5.cosmos-lab.org # optional: keep your setup
omf tell offs -t all
omf