pivirtd Overview
Learn about hypervisor daemon settings, QMP, and directory storage pools.
View pivirtd Guide
Provision PiVirt directly onto physical bare-metal Linux servers using the official package repository (dl.pilab.hu) or standalone binaries.
# Update system packagessudo apt-get update && sudo apt-get upgrade -y
# Install KVM, QEMU, and networking toolssudo apt-get install -y qemu-kvm bridge-utils openvswitch-switch
# Install iSCSI and storage toolssudo apt-get install -y open-iscsi multipath-tools ocfs2-tools
# Load and persist KVM kernel modulessudo modprobe kvm_intel # or kvm_amdsudo modprobe vhost_netecho 'kvm_intel' | sudo tee -a /etc/modules-load.d/kvm.confecho 'vhost_net' | sudo tee -a /etc/modules-load.d/kvm.conf# Update system packagessudo dnf update -y
# Install KVM, QEMU, and networking toolssudo dnf install -y qemu-kvm bridge-utils openvswitch
# Install iSCSI and storage toolssudo dnf install -y iscsi-initiator-utils device-mapper-multipath ocfs2-tools
# Load and persist KVM kernel modulessudo modprobe kvm_intel # or kvm_amdsudo modprobe vhost_netecho 'kvm_intel' | sudo tee -a /etc/modules-load.d/kvm.confecho 'vhost_net' | sudo tee -a /etc/modules-load.d/kvm.confpivirtd and its host management CLI pivirtctl are published to the PiLab Package Repository (dl.pilab.hu) via GoReleaser as native .deb and .rpm packages. The package automatically installs binaries in /usr/bin/, creates /etc/pivirtd and /var/lib/pivirt/daemon, installs OVMF firmware variables (/usr/share/pivirtd/assets/OVMF_VARS.fd), and sets up the pivirtd.service systemd unit.
# 1. Add PiLab GPG signing keysudo mkdir -p /etc/apt/keyringscurl -fsSL https://dl.pilab.hu/pivirt.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/pilab.gpg
# 2. Add PiLab APT repositoryecho "deb [signed-by=/etc/apt/keyrings/pilab.gpg] https://dl.pilab.hu/deb stable main" | sudo tee /etc/apt/sources.list.d/pilab.list
# 3. Install pivirtd package (includes pivirtd + pivirtctl)sudo apt-get updatesudo apt-get install -y pivirtd
# 4. Start and enable hypervisor daemonsudo systemctl enable --now pivirtdsudo systemctl status pivirtd# 1. Add PiLab YUM/DNF repositorysudo tee /etc/yum.repos.d/pilab.repo << 'EOF'[pilab]name=PiLab Packagesbaseurl=https://dl.pilab.hu/rpmenabled=1gpgcheck=1gpgkey=https://dl.pilab.hu/pivirt.gpgEOF
# 2. Install pivirtd packagesudo dnf install -y pivirtd
# 3. Start and enable hypervisor daemonsudo systemctl enable --now pivirtdsudo systemctl status pivirtd# Download latest pre-built binariescurl -L https://github.com/pilab-cloud/pivirtd/releases/latest/download/pivirtd-linux-amd64 -o /usr/bin/pivirtdcurl -L https://github.com/pilab-cloud/pivirtd/releases/latest/download/pivirtctl-linux-amd64 -o /usr/bin/pivirtctlchmod +x /usr/bin/pivirtd /usr/bin/pivirtctlpivirt-agent)The node agent provides ConnectRPC APIs, power schedule execution, and secure PiTrust mTLS service mesh communication:
# Download agent binarycurl -L https://github.com/pilab-dev/pivirt/releases/latest/download/pivirt-agent-linux-amd64 -o /usr/local/bin/pivirt-agentchmod +x /usr/local/bin/pivirt-agent
# Create agent configuration directorysudo mkdir -p /etc/pivirt-agent/tls
# Create configuration filesudo tee /etc/pivirt-agent/config.yaml > /dev/null << 'EOF'server: connectrpc: addr: "0.0.0.0:8443" tls: cert_file: "/etc/pivirt-agent/tls/server.crt" key_file: "/etc/pivirt-agent/tls/server.key" ca_file: "/etc/pivirt-agent/tls/ca.crt" client_ca_file: "/etc/pivirt-agent/tls/ca.crt"
grpc_internal: addr: "0.0.0.0:9000"
metrics: addr: "0.0.0.0:8444" path: "/metrics"
tls: enabled: true ca_file: "/etc/pivirt/certs/ca-chain.pem" cert_file: "/etc/pivirt/certs/agent-client.crt" key_file: "/etc/pivirt/certs/agent-client.key"
backends: pivirtd: endpoint: "unix:///var/lib/pivirt/daemon/pivirtd.sock" timeout: "30s"
logging: level: "info" format: "json" output: "stdout"EOF
# Create systemd servicesudo tee /etc/systemd/system/pivirt-agent.service > /dev/null << 'EOF'[Unit]Description=PiVirt Node AgentAfter=network.target pivirtd.serviceRequires=pivirtd.service
[Service]Type=notifyExecStart=/usr/local/bin/pivirt-agent --config /etc/pivirt-agent/config.yamlRestart=on-failureRestartSec=5
[Install]WantedBy=multi-user.targetEOF
# Enable and start agentsudo systemctl daemon-reloadsudo systemctl enable --now pivirt-agentsudo systemctl status pivirt-agent# Download pvclicurl -L https://github.com/pilab-dev/pivirt/releases/latest/download/pvcli-linux-amd64 -o /usr/local/bin/pvclichmod +x /usr/local/bin/pvcli
# Initialize user configpvcli config init
# Configure local contextpvcli context add local localhost 8443 --insecurepvcli context switch local# Install PiVirt Appliance package from dl.pilab.husudo apt-get install -y pivirt-appliance # or: sudo dnf install -y pivirt-appliance
# Start the DCUI on the direct host terminalsudo applianceVerify that the hypervisor daemon, agent, and storage layers are operational:
# 1. Verify daemon socket statuspivirtctl versionpivirtctl vm list
# 2. Pull base OS imagepvcli image pull ubuntu-24.04
# 3. Create and launch virtual machinepvcli vm create --name web-server --image ubuntu-24.04 --cpus 2 --memory 4G --disk 20Gpvcli vm start web-serverpvcli vm info web-serverpivirtd Overview
Learn about hypervisor daemon settings, QMP, and directory storage pools.
View pivirtd Guide
DCUI Operator Reference
Host console management, network setup, and hardware diagnostics.
View DCUI Reference
Talos Linux Kubernetes
Deploy Kubernetes clusters on PiVirt with zero-touch provisioning.
View Talos Guide
Troubleshooting Guide
Host diagnostic workflows, network debugging, and disk locks.
View Troubleshooting