pixop-install
pixop-install
Install and manage a Pixop Prime KVM appliance on a customer Linux host (qualified on Ubuntu 24.04). The guest is the same Amazon Linux 2023 appliance used on AWS, booted under libvirt with GPU passthrough—not a separate product install.
This is a host-side tool in the delivered installer archive (scripts/pixop-install). It is not on the appliance PATH, does not self-elevate like guest CLIs, and requires sudo. AWS Marketplace operators use the AMI directly and do not run pixop-install.
Extract the archive on the KVM host, then run commands from the extract root (directory that contains scripts/):
cd /path/to/extracted-installer
sudo ./scripts/pixop-install --helpGeneral syntax: sudo ./scripts/pixop-install COMMAND [OPTIONS]
Invocation
pixop-install --help
pixop-install --version
pixop-install doctor
pixop-install install --image PATH --gpu BDF|all [install options]
pixop-install uninstall [--purge] [options]
pixop-install start|stop|restart|status
pixop-install autostart enable|disable|status
pixop-install license set FILE | license statusCommand reference
| Command | Purpose |
|---|---|
doctor | Read-only host checks (PASS / WARN / FAIL)—OS, KVM, IOMMU, QEMU/libvirt, disk, GPU inventory |
install | Convert source QCOW2 to managed storage (qemu-img convert), define libvirt domain, inject SSH seed |
start / stop / restart | VM lifecycle (stop --force → virsh destroy after timeout) |
status | Domain, GPU, network mode, forwards, SSH hints, license configured flag |
autostart | Libvirt boot persistence only—does not start or stop VM |
license set / status | Push or probe JWT on running guest via SSH |
uninstall | Undefine domain; --purge deletes managed state under /var/lib/pixop-kvm |
install options (selected)
install options (selected)| Option | Description |
|---|---|
--image PATH | Required source QCOW2 (never deleted by installer) |
--gpu BDF / --gpu all | Required VFIO-capable NVIDIA GPU(s); audio function included |
--name, --hostname | Default pixop-prime |
--memory, --vcpus | Default 16384 MiB, 4 vCPUs (installer defaults, not product minimums) |
--bridge NAME | Existing Linux bridge (production); no port forwards |
--ssh-host-port N, --forward SPEC, --expose-pixop | Userspace SLIRP only; bind 127.0.0.1—rejected with --bridge |
--license PATH | Install JWT into guest seed as /etc/pixop-live/license.jwt |
--ssh-key PATH | Operator public key; else installer generates key under managed dir |
--autostart | Enable libvirt autostart at define time (does not start VM) |
--install-packages | Apt-install missing virt packages—intended for Ubuntu 24.04 only; may run before install confirmation when packages are missing |
--dry-run, --yes | Plan only (no host changes) / skip confirmation |
license options
license options| Option | Applies to |
|---|---|
--identity PATH | Private SSH key when install used operator pubkey |
--guest-host ADDRESS | Bridge mode guest IP for SSH |
--restart-if-needed | license set only when no license file exists yet |
Updating an existing license overwrites in place—no VM, pixop-live, or container restart by design.
Delivery artifacts and disk
Before install, verify both the installer archive and QCOW2 with sha256sum -c against each delivered .sha256 file from the directory that holds the artifact (deployment guide).
install converts the source QCOW2 into a managed image under /var/lib/pixop-kvm/images/ (not a byte-for-byte copy). The --image source is never modified or deleted. Check df -h / and df -h /var/lib before install: you need capacity beyond the installer archive extract and beyond the source QCOW2 size for conversion and guest growth. The installer’s space gate on / uses source file bytes plus a margin—it does not replace your own capacity review.
Host packages (Ubuntu 24.04)
When doctor reports missing packages, these six names must be present (or installed via --install-packages on install after approval on Ubuntu 24.04):
qemu-system-x86, qemu-utils, libvirt-daemon-system, libvirt-clients, ovmf, xorriso
doctor never installs packages. With --install-packages, apt-get may run before the interactive install confirmation when packages are missing—use the flag only on Ubuntu 24.04 after change approval. install --dry-run does not apt-install or change libvirt.
IOMMU, bridges, and firmware are provisioned outside the installer.
What changes / what never changes
| Host changes | Never modified |
|---|---|
Managed QCOW2 under /var/lib/pixop-kvm/images/ (via qemu-img convert) | Source QCOW2 passed to --image |
| libvirt domain XML, seed ISO, optional udev/AppArmor snippets | Firmware, GRUB, IOMMU enablement |
| VFIO binding while VM runs | AWS-side resources |
Typical workflows
Qualify host:
cd /path/to/extracted-installer
sudo ./scripts/pixop-install doctorProduction plan (bridged)—dry run:
sudo ./scripts/pixop-install install \
--dry-run \
--image /path/to/pixop-prime-kvm.qcow2 \
--gpu all \
--vcpus 8 \
--memory 16G \
--bridge br0 \
--ssh-key ~/.ssh/id_ed25519.pub \
--license /path/to/license.jwtProduction install (same flags, omit --dry-run):
sudo ./scripts/pixop-install install \
--image /path/to/pixop-prime-kvm.qcow2 \
--gpu all \
--vcpus 8 \
--memory 16G \
--bridge br0 \
--ssh-key ~/.ssh/id_ed25519.pub \
--license /path/to/license.jwtUserspace SLIRP (local test only—not with --bridge):
sudo ./scripts/pixop-install install \
--image /path/to/pixop-prime-kvm.qcow2 \
--gpu all \
--ssh-key ~/.ssh/id_ed25519.pub \
--ssh-host-port 2222 \
--expose-pixopStart and check:
sudo ./scripts/pixop-install start
sudo ./scripts/pixop-install statusLicense from host (bridged):
GUEST_IP="203.0.113.10"
sudo ./scripts/pixop-install license status \
--identity ~/.ssh/id_ed25519 \
--guest-host "${GUEST_IP}"
sudo ./scripts/pixop-install license set /path/to/new-license.jwt \
--identity ~/.ssh/id_ed25519 \
--guest-host "${GUEST_IP}"Autostart after acceptance:
sudo ./scripts/pixop-install autostart enableRemove (keep disk):
sudo ./scripts/pixop-install uninstallOutput interpretation
doctor: anyFAILshould block install.installprints GPU plan and asks to type domain name unless--yes.statusshowsState,Autostart, forwarded services, and suggestedsshcommand.license statusreports hashes—not the JWT body.
Security
- Generated SSH private keys live under
/var/lib/pixop-kvm/ssh/mode0600. --forward/--expose-pixoplisten on 127.0.0.1 only in userspace mode.- License files are pushed over SSH with batch mode and
StrictHostKeyChecking=accept-new.
Common errors
| Error | Cause |
|---|---|
install requires --image / --gpu | Missing required flags |
--gpu selection failed | VFIO not viable or host display on GPU |
an installation is already active | Run uninstall first |
bridge does not exist | Create bridge externally |
port forwarding … bridged guest | Forwards incompatible with --bridge |
Pixop VM is stopped | license set needs running VM |
No license file … --restart-if-needed | First-time license needs guest service restart once |
Exit code 2 for unknown commands; doctor returns 1 when any check FAILs.
Guest CLI after install
Inside the VM, use appliance tools (pixopctl, tsduckctl, pixop-test-live, etc.). Capability follows the QCOW2 build—see pixop-version on the guest.
Related
- KVM quickstart
- KVM deployment guide
- pixop-license — guest-side license commands
- pixop-decode-jwt — raw JWT claim inspection (guest)
- Configuration
Updated about 9 hours ago
