XEN
XEN Distributions
Xen Project (Since 2003, University of Cambridge
Citrix XenServer acquired XenSource in 2007.
XCP (Xen Cloud Platform), Citrix opensource (hypervisor + management) between 2010 and 2013.
XCP-ng in 2018, forked from XCP.
XEN is a kernel, booted by GRUB, which can then boot a Linux kernel as Dom0. The first operating system that can control the XEN kernel and boot other VM's as DomU. The command to control the DomU's can be xe, xm or xl depending on the Xen version. A VM is called a domain, which has a name and an id.
xl info
xl create /etc/xen/win.hvm
xl list
xl destroy 2
XEN can use Fully Emulated HVM from real devices (VIF-EMU), which can use the real drivers, but emulate the hardware, or PV paravirtualized devices (VIF) that use drivers to talk directly to the XEN backends (e.g. XENQEMU). The VIF number corresponds to the domain
Drivers are part of the Paravirtualized Tools for XEN
https://wiki.xenproject.org/wiki/Xen_Networking
https://xenbits.xen.org/docs/unstable/man/xl-network-configuration.5.html
https://xenproject.org/resources/downloads/
https://github.com/xcp-ng/win-pv-drivers/releases
Alpine Linux
Alpine Linux downloads come with a XEN ISO that can be used, but using a regulare version can also run XEN
https://wiki.alpinelinux.org/wiki/Xen_Dom0
setup-xen-dom0
apk add xen-hypervisor apk add bridge apk add seabios ovmf
echo "xen-netback" >> /etc/modules echo "xen-blkback" >> /etc/modules echo "tun" >> /etc/modules
rc-update add xenconsoled rc-update add xendomains rc-update add xenqemu rc-update add xenstored
Contents of /etc/default/grub
grub-mkconfig -o /boot/grub/grub.cfg grub-set-default "$(grep ^menuentry /boot/grub/grub.cfg | grep Xen | cut -d \' -f 2 | head -1)"
efibootmgr -c -d /dev/sda -p 1 -l /EFI/boot/xen.efi -L "XEN"
efibootmgr -o 2,0,4
https://wiki.xenproject.org/wiki/Xen_EFI
https://wiki.archlinux.org/title/xen
https://xcp-ng.org/docs/architecture.html#api
PCI passthrough was indeed necessary for the software I'm using to pick up all network traffic properly (not bridging through the virtual switch). Doing so requires enabling IOMMU and using the legacy linux bridge backend networking (instead of the default Open vSwitch backend networking).
xl network-list opnsense Idx BE Mac Addr. handle state evt-ch tx-/rx-ring-ref BE-path 0 0 00:16:3e:3f:4f:61 0 5 -1 -1/-1 /local/domain/0/backend/vif/11/0
https://xenbits.xen.org/docs/4.15-testing/man/xl-network-configuration.5.html
https://wiki.xenproject.org/wiki/Device_Model_Stub_Domains
type=ioemu vifspec model=e1000 rate=10Gb/s
vif = ['bridge=lan,model=e1000,rate=10Gb/s']
device_model_stubdomain_override