环境
系统:Proxmox Virtual Environment 8.1.3
Linux内核:Linux version 6.5.13-6-pve (build@proxmox) (gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC PMX 6.5.13-6 (2024-07-26T12:34Z)
CPU:Intel N100 (4) @ 3.400GHz
GPU:Intel Alder Lake-N [UHD Graphics]
n100固件:/usr/share/kvm/n100.rom (放入指定位置)
固件包下载位置:https://github.com/Lenoud/pve8_n100_hdmi
效果
pve下部署了一台openwrt软路由,sa6400群晖,一台Windows10(直通),两个面板,一台docker服务器,启动时自动开启route和Windows10,gmk-g3的无线网卡和其它usb接口全部直通给Windows,可正常当物理机使用,办公、看电视、轻度游戏
直通脚本(自己编写-未测试)
#!/bin/bash
#Kernel: Linux 6.5.13-6-pve
#pve8.1.3echo "英特尔cpu直通设置"
echo "请先创建111编号的windows虚拟机"# 检查GRUB_CMDLINE_LINUX_DEFAULT是否已包含 intel_iommu=on
if ! grep -q 'intel_iommu=on' /etc/default/grub; thenecho "更新GRUB配置"# 更新GRUB_CMDLINE_LINUX_DEFAULT行sed -i 's/^GRUB_CMDLINE_LINUX_DEFAULT="[^"]*/GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on/' /etc/default/grubecho "刷新update-grub"update-grub
elseecho "GRUB_CMDLINE_LINUX_DEFAULT已包含intel_iommu=on,无需修改"
fi# 检查黑名单文件是否已包含所需内容
if ! grep -q 'blacklist amdgpu' /etc/modprobe.d/pve-blacklist.conf; thenecho "设置黑名单"cat >> /etc/modprobe.d/pve-blacklist.conf << EOF
blacklist amdgpu
blacklist i915
blacklist snd_hda_intel
options vfio_iommu_type1 allow_unsafe_interrupts=1
EOFecho "刷新update-initramfs"update-initramfs -u -k all
elseecho "黑名单配置已存在,无需修改"
fi# 检查文件是否存在
if [ -e /etc/pve/qemu-server/111.conf ]; then# 文件存在,追加内容cat >> /etc/pve/qemu-server/111.conf << EOF
args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=0x2 -set device.hostpci0.x-igd->
hostpci0: 0000:00:02.0,legacy-igd=1,romfile=n100.rom
hostpci1: 0000:00:14.0
hostpci2: 0000:00:1f.3
hostpci3: 0000:01:00.0
vga: none
EOF
else# 文件不存在,打印错误消息echo "文件 /etc/pve/qemu-server/111.conf 不存在"
fi