Skip to content

Install PhyOS on QEMU/KVM

This guide walks you through running PhyOS 5 as a virtual machine from the PhyOS QCOW2 image. QCOW2 is QEMU’s own disk format, so there is no installer to run and no conversion step - you attach the disk to a new virtual machine and power it on.

The guide covers four platforms: plain QEMU, libvirt, Proxmox VE, and OpenShift Virtualization.

  • One of: QEMU 6.2 or later with KVM, libvirt with virt-install, Proxmox VE 7 or later, or OpenShift Virtualization
  • OVMF UEFI firmware installed on the host
  • Host capacity for 4 vCPU, 4 GB RAM, and a 64 GB disk
  • About 10 GB of free disk space for the download and the extracted image
  • A network that provides DHCP and outbound internet access
  • Internet connection
  • Access to the PhyStack console

Download the image once, then follow the section for your platform.

Download and extract the PhyOS QCOW2 image

Section titled “Download and extract the PhyOS QCOW2 image”
  1. Download the latest PhyOS QCOW2 image
  2. Extract the archive:
    Terminal window
    tar -xzf phyos.qcow2.tar.gz
  3. Rename the extracted file to phyos.qcow2 so the commands below can be copied as they are

The extracted image has a 64 GB virtual size and grows as it is used.

  1. Make sure OVMF firmware is installed on the host
  2. Start the virtual machine:
    Terminal window
    qemu-system-x86_64 -machine q35,accel=kvm -m 4096 -smp 4 -bios /usr/share/OVMF/OVMF.fd -drive file=phyos.qcow2,format=qcow2,if=virtio -netdev user,id=n0 -device virtio-net-pci,netdev=n0
  3. PhyOS boots to the connection screen in the QEMU window
  1. Copy the image into your libvirt images directory:
    Terminal window
    mv phyos.qcow2 /var/lib/libvirt/images/
  2. Create the virtual machine:
    Terminal window
    virt-install --name phyos --memory 4096 --vcpus 4 --osinfo generic --boot uefi,firmware.feature0.name=secure-boot,firmware.feature0.enabled=no --disk path=/var/lib/libvirt/images/phyos.qcow2,format=qcow2,bus=virtio --network network=default,model=virtio --graphics vnc --import --noautoconsole
  3. Connect to the console with virt-viewer or Virtual Machine Manager

--boot uefi on its own usually selects a Secure Boot firmware build, so keep the firmware feature flags shown above.

  1. Find a storage ID:
    Terminal window
    pvesm status
  2. Create the virtual machine:
    Terminal window
    qm create VMID --machine q35 --bios ovmf --ostype l26 --memory 4096 --cores 4 --net0 virtio,bridge=vmbr0
  3. Add an EFI disk:
    Terminal window
    qm set VMID --efidisk0 STORAGE:1,efitype=4m,pre-enrolled-keys=0
  4. Import the image as the boot disk:
    Terminal window
    qm set VMID --scsihw virtio-scsi-single --scsi0 STORAGE:0,import-from=/root/phyos.qcow2
  5. Set the boot order:
    Terminal window
    qm set VMID --boot order=scsi0
  6. Start the virtual machine from the Proxmox web interface

Replace VMID with your virtual machine’s ID and STORAGE with the storage name from step 1.

Create a virtual machine on OpenShift Virtualization

Section titled “Create a virtual machine on OpenShift Virtualization”
  1. Upload the image as a DataVolume:
    Terminal window
    virtctl image-upload dv phyos-disk --size=64Gi --image-path=phyos.qcow2
  2. Create a VirtualMachine that uses the resulting DataVolume as its disk
  3. Set Boot mode to UEFI
  4. Or set it in the virtual machine spec:
    Terminal window
    spec:
    template:
    spec:
    domain:
    firmware:
    bootloader:
    efi:
    secureBoot: false
  5. Start the virtual machine and open its console

After PhyOS boots:

  1. You should see the PhyOS splash screen
  2. The device will display a connection screen
  3. Note the Serial Number displayed in the top-left corner of the screen
  4. In the PhyStack portal, navigate to the device connection section
  5. Enter the Serial Number in the Device Serial field
  6. Click the Connect device button
  7. The device will appear under Installations → Devices

The virtual machine shows a Secure Boot verification message

Section titled “The virtual machine shows a Secure Boot verification message”
  • The firmware build in use has Secure Boot enabled
  • Recreate the virtual machine with Secure Boot turned off, as shown in the section for your platform

The virtual machine drops to a UEFI shell or reports no bootable device

Section titled “The virtual machine drops to a UEFI shell or reports no bootable device”
  • The virtual machine is running BIOS firmware
  • Use -bios with an OVMF image on QEMU, or --boot uefi with libvirt, or set BIOS to OVMF (UEFI) on Proxmox
  • The firmware path varies by distribution
  • See the note in the QEMU section for common locations
  • The image was imported into LVM-thin storage, which stores raw volumes only
  • Import into file-based storage instead to keep the disk sparse
  • A bare efi: {} enables Secure Boot, which also requires the SMM feature
  • Set secureBoot: false in the virtual machine spec
  • The storage class uses the WaitForFirstConsumer binding mode
  • Add --force-bind to the upload command
  • Attach the virtual machine to a network that provides DHCP and outbound internet access

4 virtual processors, 4096 MB of memory, the QCOW2 image as a virtio or virtio-scsi disk, and a virtio network adapter.

UEFI with OVMF firmware and Secure Boot turned off, on every platform in this guide.

The image has a 64 GB virtual size and stays sparse on file-based storage.

Use your platform’s console: the QEMU window, virt-viewer, the Proxmox noVNC console, or the OpenShift virtual machine console.

  • Boot the image with UEFI firmware and Secure Boot turned off
  • Attach the virtual machine to a network that provides DHCP and outbound internet access
  • On Proxmox, import into file-based storage to keep the disk sparse
  • Keep the extracted .qcow2 if you plan to create more devices