-
Go to OpenWRT release page, select the latest release stable release, then
targets
->x86
->64
. Right-clickgeneric-ext4-combined.img.gz
(not the "efi"!) and copy the link. -
On the Proxmox host, download the archive and unpack it:
wget *paste link here*
gunzip openwrt-*.img.gz
- Resize the image to be the size you want your VM's disk to be (example with 8 GiB):
qemu-img resize -f raw openwrt-*.img 8G
- Create a new VM in Proxmox. Make sure to use:
- No installation media
- SeaBIOS
- No drives
Do not start the VM yet.
- Import the resized OpenWRT image into the new VM (replace VMID and STORAGEID with yours):
qm importdisk VMID openwrt-*.img STORAGEID
-
Go to the VM -> Hardware, select the newly imported disk named "Unused Disk 0", press "Edit", set it to VirtIO with "Discard" and "IO Thread" enabled, then press OK.
-
Go to the VM -> Options -> Boot Order, make sure that
virtio0
is at the top and is the only one that is ticked. -
Add whatever networking or other devices you need.
-
You're done! Start the VM and enjoy all the routing.
Cool, glad I was of help. You mention needing Q35 + OVMF to pass through hardware. Just FYI - it works on i440fx + SeaBIOS as well, my OpenWrt has NICs passed through to it and they work just fine.
The major difference between them is that Q35 + OVMF virtualizes an actual PCIe stack, i440fx + SeaBIOS does PCI "overclocked" to PCIe speed. The only situation in which this matters that I know of is when passing through GPUs. Never seen it matter for network interfaces.