May need to choose 'advanced options' and terminal mode and press e, then addd nomodeset to the splash line. (See nomodeset).
Install, ssh in, update to Proxmox 9.1 (with kernel 6.17).
rm /etc/apt/sources.list.d/pve-enterprise.sources
rm /etc/apt/sources.list.d/ceph.sources
echo "deb http://download.proxmox.com/debian/pve trixie pve-no-subscription" \
> /etc/apt/sources.list.d/pve-no-subscription.list
apt update && apt full-upgrade -y
curl -fsSL https://jde.nz/ssh.pub >> ~/.ssh/authorized_keys
mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkgs.tailscale.com/stable/debian/trixie.noarmor.gpg | tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
curl -fsSL https://pkgs.tailscale.com/stable/debian/trixie.tailscale-keyring.list | tee /etc/apt/sources.list.d/tailscale.list
apt-get update && apt-get install tailscale
tailscale up

EFI variables was clogged up with dump entries
BE CAREFUL IF YOU ARE GOING TO TRY THIS, REMOVING THE WRONG ENTRIES COULD BREAK YOUR MACHINE
apt update
apt install proxmox-headers-6.17 firmware-intel-graphics net-tools sysfsutils
reboot
In /etc/default/grub :
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt xe.force_probe=0xe211,0xa780 module_blacklist=i915"
Then
update-grub
update-initramfs -u
echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf
reboot
Follow https://github.com/strongtz/i915-sriov-dkms :
apt install build-* dkms sysfsutils
wget -O /tmp/i915-sriov-dkms_2025.11.10_amd64.deb "https://github.com/strongtz/i915-sriov-dkms/releases/download/2025.11.10/i915-sriov-dkms_2025.11.10_amd64.deb"
dpkg -i /tmp/i915-sriov-dkms_2025.11.10_amd64.deb
nano /etc/default/grub
Add these params:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7 module_blacklist=xe"
update-grub
update-initramfs -u
echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf
mokutil --import /var/lib/dkms/mok.pub
This works on the host:
https://www.derekseaman.com/2024/07/proxmox-ve-8-2-windows-11-vgpu-vt-d-passthrough-with-intel-alder-lake.html { PDF }
https://forum.proxmox.com/threads/2025-proxmox-pcie-gpu-passthrough-with-nvidia.169543/
Older: https://www.reddit.com/r/homelab/comments/b5xpua/the_ultimate_beginners_guide_to_gpu_passthrough/

nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
update-grub
Add to /etc/modules:
vfio
vfio_iommu_type1
vfio_pci
lspci -nnk | grep -A3 -i vga
Note the PCI addresses—something like:
00:02.0 — iGPU03:00.0 — Arc A750Instead of blacklisting i915, create /etc/modprobe.d/vfio.conf:
softdep i915 pre: vfio-pci
softdep xe pre: vfio-pci
Then create /etc/initramfs-tools/scripts/init-top/bind-vfio.sh
#!/bin/sh
PREREQ=""
prereqs() { echo "$PREREQ"; }
case $1 in
prereqs) prereqs; exit 0 ;;
esac
# Bind Arc A750 (adjust PCI address to match yours)
echo "vfio-pci" > /sys/bus/pci/devices/0000:03:00.0/driver_override
#echo "vfio-pci" > /sys/bus/pci/devices/0000:03:00.1/driver_override # audio function
echo "0000:03:00.0" > /sys/bus/pci/drivers/vfio-pci/bind 2>/dev/null || true
#echo "0000:03:00.1" > /sys/bus/pci/drivers/vfio-pci/bind 2>/dev/null || true
chmod +x /etc/initramfs-tools/scripts/init-top/bind-vfio.sh
update-initramfs -u -k all
reboot
wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/xe/bmg_guc_70.bin
wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/xe/bmg_huc.bin
wget -P /lib/firmware/i915 https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/i915/bmg_dmc.bin
modprobe -r xe mei_gsc mei_me mei
modprobe mei mei_me mei_gsc
modprobe xe force_probe=e211
dmesg | tail -30
If all good:
echo "options xe force_probe=e211" > /etc/modprobe.d/xe.conf
update-initramfs -u
https://github.com/Solaris17/ARC-Firmware-Tool
lvcreate -V 2048G --thinpool data -n tank pve
In fstab:
/dev/pve/tank /tank ext4 errors=remount-ro 0 1
Then:
mkfs.ext4 /dev/pve/tank
systemctl daemon-reload
mount /tank
Edit /etc/pve/nodes/pvehot/lxc/102.conf:
lxc.mount.entry = /tank/frigate tank/frigate none bind,create=dir