| bin | ||
| lib/sysadm | ||
| libexec/sysadm | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
sysadm — A Unix-native Systems Fabric
"From storage to virtual machines to backup — one consistent control plane for NetBSD."
🧭 Vision
sysadm is a lightweight, modular framework for managing system resources, machines, and services on Unix-like systems — with a special focus on NetBSD, Xen, and the classical BSD system philosophy.
The goal is to provide a unified, transparent, and script-friendly environment where every aspect of the system lifecycle can be orchestrated consistently — from creating a VM, configuring its network, to performing full system backups.
⚙️ Core Idea
“Tools, not daemons. Files, not databases. Logic, not layers.”
sysadm follows the traditional UNIX philosophy:
- small, composable tools
- clear, text-based interfaces
- no hidden magic or background daemons
Configurations are simple directory trees (registry-like, but file-based).
Every subsystem communicates through plain files, devices, and processes.
🧩 Architecture Overview
sysadm consists of a main command and several subsystem modules, each handling one domain of system management:
/usr/local/sbin/sysadm
│
├── sysadm-storage → manage devices and filesystems
├── sysadm-vm → initialize and configure virtual machines
├── sysadm-backup → perform and restore system backups
├── sysadm-config → manage registry-style configuration
├── sysadm-net → configure bridges, IPs, and routing
└── sysadm-status → display overall system status
Each subsystem follows the same CLI pattern:
sysadm <subsystem> <command> [args]
Examples:
sysadm storage format ccd0a 10G
sysadm vm build /etc/vmconfigs/vm1
sysadm backup run vm1
sysadm net bridge list
sysadm config set vm1/ip 192.168.2.101
🧱 Components
1. Registry
Configuration is stored in directory trees, e.g.:
/etc/vmconfigs/vm1/
├── device -> /dev/ccd0a
├── hostname -> vm1
├── ip -> 192.168.2.101
├── gateway -> 192.168.2.1
├── vif/mac -> 00:16:3e:ab:cd:ef
├── memory -> 512
├── vcpus -> 1
└── kernel -> /sysadm/dist/netbsd/10.0/netbsd-INSTALL_XEN3_DOMU
→ No XML, no YAML, no JSON.
→ All tools interact directly with this structure.
2. Storage Management
Modules for creating, formatting, and managing storage devices.
sysadm storage format ccd0a 10G
Creates a new FFS filesystem and marks it for VM usage.
3. VM Lifecycle (vminit)
The sysadm-vm subsystem can automatically:
- install a root filesystem,
- extract NetBSD distribution sets,
- configure users, SSH, and networking,
- set up
pkginand generate Xen configuration.
sysadm vm build /etc/vmconfigs/vm1
Result:
/dev/ccd0awith a bootable system image/usr/pkg/etc/xen/vm1.cfgcreated- ready to launch via
xl create vm1.cfg
4. Backup Framework (vmbackup)
Integrated via:
sysadm backup run vm1
Performs filesystem dumps over SSH using FSS snapshots,
handles labels, hashes, and rotation — no daemons, only standard tools.
5. Network Management
Subsystem for managing bridges, interfaces, and routing.
Integrates with Xen bridges and host networking.
6. Config Layer
Manages registry-style configuration trees:
sysadm config list
sysadm config get vm1/ip
sysadm config set vm2/memory 1024
This file-based registry acts as the system’s unified configuration backend.
📦 Installation
By default, sysadm installs into /usr/local:
make install
Resulting layout:
/usr/local/sbin/sysadm
/usr/local/sbin/sysadm-*
/usr/local/libexec/sysadm/
/usr/local/etc/sysadm.conf
/usr/local/share/doc/sysadm/
Uninstall:
make uninstall
🧭 Design Principles
| Principle | Description |
|---|---|
| Clarity over complexity | simple shell, no frameworks |
| Files are the interface | no JSON/YAML, only directories |
| Transparency | no hidden daemons or state |
| Composability | every tool can run standalone or in combination |
| NetBSD first | optimized for BSD utilities and Xen environments |
🧰 Dependencies
- Standard NetBSD Base Utilities (
sh,awk,sed,tar,newfs,mount,chroot,pkg_add) - Xen (for VM operations)
- Optional:
pkgin,ssh,uuidgen
🚧 Project Status
sysadm is in active early development.
Current module state:
- ✅
vminit— VM creation & configuration - ✅
vmbackup— filesystem backup framework - 🚧
storage— device and filesystem management - 🚧
config— registry-based configuration manager - 🚧
net— bridge and network control
🌐 Outlook
The long-term goal is a fully self-describing system framework that:
- manages storage, network, machines, and configuration consistently,
- can rebuild itself from its own registry,
- and operates entirely in the Unix tradition — without dependencies, only tools.
📜 License
Released under a simple BSD license —
because sysadm isn’t a framework, it’s a toolkit.
👤 Author
Project initiated and maintained by
Matthias Petermann
NetBSD / Xen enthusiast, automation purist.
💬 Motto
“A system should describe itself in files,
and be built again from them, by its own tools.”