Enable VT-d(Intel Virtualization Technology for Directed I/O), for IOMMU(Input Output Memory Management Unit) services, and SR-IOV (Single Root IO Virtualization), a technology that allows a physical PCIe device to present itself multiple times through the PCIe bus, in motherboard BIOS in Chipset, e.g. ASRock Z790 Riptide WiFi & Mini PC with Intel Alder Lake-N i3-N305.
Enable SR-IOV for Mellonax network adapter e.g. Mellanox ConnectX-4 MCX455A-ECAT PCIe x16 3.0 100GBe VPI EDR IB in the same motherboard BIOS.
SR-IOV is default enabled for Intel 82599ES 10G optical ports network card.
root@pve:~# cat /etc/apt/sources.list deb http://deb.debian.org/debian bookworm main contrib deb http://deb.debian.org/debian bookworm-updates main contrib deb http://security.debian.org/debian-security bookworm-security main contrib
root@pve:~# apt install proxmox-headers-$(uname -r) Reading package lists... Done Building dependency tree... Done Reading state information... Done The following NEW packages will be installed: proxmox-headers-6.8.4-2-pve 0 upgraded, 1 newly installed, 0 to remove and 39 not upgraded. Need to get 13.7 MB of archives. After this operation, 97.0 MB of additional disk space will be used. Get:1 http://download.proxmox.com/debian/pve bookworm/pve-no-subscription amd64 proxmox-headers-6.8.4-2-pve amd64 6.8.4-2 [13.7 MB] Fetched 13.7 MB in 1s (23.8 MB/s) Selecting previously unselected package proxmox-headers-6.8.4-2-pve. (Reading database ... 70448 files and directories currently installed.) Preparing to unpack .../proxmox-headers-6.8.4-2-pve_6.8.4-2_amd64.deb ... Unpacking proxmox-headers-6.8.4-2-pve (6.8.4-2) ... Setting up proxmox-headers-6.8.4-2-pve (6.8.4-2) ...
Upgrade Linux Kernel i915 firmware to the latest version:
root@pve:~# dpkg -i /tmp/i915-sriov-dkms_2026.02.09_amd64.deb Selecting previously unselected package i915-sriov-dkms. (Reading database ... 97011 files and directories currently installed.) Preparing to unpack .../i915-sriov-dkms_2026.02.09_amd64.deb ... Unpacking i915-sriov-dkms (2026.02.09) ... Setting up i915-sriov-dkms (2026.02.09) ... Removing old i915-sriov-dkms/2026.02.09 DKMS files... Deleting module i915-sriov-dkms/2026.02.09 completely from the DKMS tree. Loading new i915-sriov-dkms/2026.02.09 DKMS files... Building for 6.17.9-1-pve
Building initial module i915-sriov-dkms/2026.02.09 for 6.17.9-1-pve Sign command: /lib/modules/6.17.9-1-pve/build/scripts/sign-file Signing key: /var/lib/dkms/mok.key Public certificate (MOK): /var/lib/dkms/mok.pub Certificate or key are missing, generating self signed certificate for MOK...
Building module(s)....................................................... done. Signing module /var/lib/dkms/i915-sriov-dkms/2026.02.09/build/compat/intel_sriov_compat.ko Signing module /var/lib/dkms/i915-sriov-dkms/2026.02.09/build/drivers/gpu/drm/i915/i915.ko Signing module /var/lib/dkms/i915-sriov-dkms/2026.02.09/build/drivers/gpu/drm/i915/kvmgt.ko Signing module /var/lib/dkms/i915-sriov-dkms/2026.02.09/build/drivers/gpu/drm/xe/xe.ko Installing /lib/modules/6.17.9-1-pve/updates/dkms/intel_sriov_compat.ko Found pre-existing /lib/modules/6.17.9-1-pve/kernel/drivers/gpu/drm/i915/i915.ko, archiving for uninstallation Installing /lib/modules/6.17.9-1-pve/updates/dkms/i915.ko Found pre-existing /lib/modules/6.17.9-1-pve/kernel/drivers/gpu/drm/i915/kvmgt.ko, archiving for uninstallation Installing /lib/modules/6.17.9-1-pve/updates/dkms/kvmgt.ko Found pre-existing /lib/modules/6.17.9-1-pve/kernel/drivers/gpu/drm/xe/xe.ko, archiving for uninstallation Installing /lib/modules/6.17.9-1-pve/updates/dkms/xe.ko Running depmod... done. update-initramfs: Generating /boot/initrd.img-6.17.9-1-pve Running hook script 'zz-proxmox-boot'.. Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace.. No /etc/kernel/proxmox-boot-uuids found, skipping ESP sync. update-initramfs: Generating /boot/initrd.img-6.17.2-1-pve Running hook script 'zz-proxmox-boot'.. Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace.. No /etc/kernel/proxmox-boot-uuids found, skipping ESP sync.
and enable i915-sriov-dkms module with upto maximum 7 VFS (Virtual File System) in Linux kernel:
Add a PCI device for Ubuntu VM, and choose one Virtual GPU; Enable Primary GPU and PCI Express in options; Choose none in Display and host in Processors options:
Setup remote desktop connection to Ubuntu:
1 2 3 4 5
root@nucleus:~# apt install ubuntu-desktop
root@nucleus:~# apt install xrdp
root@nucleus:~# systemctl enable xrdp
Fix Remote Desktop audio over HDMI issue with the script, enable the sound redirection:
1
terrence@nucleus:~$ ./xrdp-installer-1.5.1.sh -s
then reboot VM.
Now Audio device becomes xrdp input / output.
Windows Server 2022
Windows Server 2022 is similar to Windows 11 setup in Proxmox. A few issues like GPU:
just disable GPU then enable it, it will work correctly.
And no sound after installation, but can enable Windows Audio Service and choose Remote Audio:
then audio over HDMI to remote desktop can work.
In addition, can setup User Auto Logon after Windows Server 2022 startup. And check Windows license by running:
1
PS C:\Users\Administrator> slmgr -dlv
Now can remote desktop access Ubuntu, Windows 11 and Windows Server 2022 VMs both run in Proxmox: