PVE 安装 Windows 11 虚拟机
本文最后更新于 2025年9月7日 中午
本文只是一个记录,直通核显部分并未成功
环境
PVE 9.0
内核版本 6.14.8-2-pve
CPU: AMD R9
下载 ISO
VirtIO 驱动程序是 kvm/Linux 的半虚拟化驱动程序,允许直接(半虚拟化)访问设备和外围设备,而不是速度较慢的模拟设备和外围设备。[1]
下载完成后上传到 PVE 的 ISO 库:local(pve)/ISO镜像
创建虚拟机
默认只有系统盘可以选,要选择其他硬盘得先在 PVE 中挂载,参考 PVE 挂载硬盘
CPU 选择 1 插槽,4 核心,因为 Win11 家庭版只支持 1
个插槽[2]
Ballooning 允许动态调整内存大小
安装 Windows 11
启动虚拟机,打开控制台,按照提示安装 Windows 11
进入系统后,安装 VirtIO 驱动(virtio-win-gt-x64)和 PVE Guest Tools(virtio-win-guest-tools)
关闭虚拟机,因为系统保存在 SSD
上,可以在选项中打开[3]
核显直通
1. BIOS 开启
- SVM(Secure Virtual Machine)
- IOMMU(Input-Output Memory Management Unit)
- Above 4G Decoding
2. 编辑 GRUB 配置
在 /etc/default/grub 的 GRUB_CMDLINE_LINUX_DEFAULT 中加:
1
iommu=pt # GRUB_CMDLINE_LINUX_DEFAULT="quiet iommu=pt"
1
update-grub
很多教程都加了 amd_iommu=on 但我加上后 warning 无法识别 on,似乎不再需要这项配置(此 warning 未尝试复现)。后来加上也并没有成功直通
3. 启用 VFIO
在 /etc/modules 中添加: 1
2
3
4vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
4. 找到核显 PCI 设备 ID
1 |
|
- D: 显示设备的 完整 PCI 域号
- nn: 显示厂商ID和设备ID
1 |
|
5. 开机时加载 VFIO 所需的核心内核模块
1 |
|
6. 禁用 amdgpu 驱动
1 |
|
可能需要禁用其他驱动,如 radeon,取决于显卡型号
7. 更新 initramfs
1 |
|
8. 重启 PVE
1 |
|
9. 验证 IOMMU 是否启用
1 |
|
10. 验证 PCI 设备是否被 vfio-pci 驱动
1 |
|
11. 添加直通设备
在虚拟机的硬件选项中添加 PCI 设备,选择刚才的核显 PCI 域号
先不要选主 GPU,否则可能无法远程桌面
也不要选 所有功能,因为 AMD 核显可能会把整个 IOMMU 组都绑走,导致无法使用 USB 设备和网络
PCI-Express 勾不勾选尚不明确
12. 安装 AMD 驱动
在 AMD 官网下载最新的 Windows 驱动,安装后重启虚拟机
未添加核显前,AMD 驱动安装程序可能无法安装,添加核显后,我这里可以安装,不清楚是不是代表直通成功了
13. 把显示改成无
把 硬件/显示 改成 无,这样理论上就可以通过远程桌面连接虚拟机了(但我没有成功)
其他尝试
添加 vBios
尝试跟着文章[4]添加 vBios,
提取 vBios 选择 2 Video Onboard -> X Extract
[5]的提取方法不一样,还没尝试
问题
下面是两个启动时遇到的问题 1
2
3
4error writing '1' to '/sys/bus/pci/devices/0000:0c:00.0/reset': Inappropriate ioctl for device
failed to reset PCI device '0000:0c:00.0', but trying to continue as not all devices need a reset
swtpm_setup: Not overwriting existing state file.
TASK OK
[6] 提出grub 配置增加 pcie_port_pm=off ,但我这没用
如果直通炸了
如果 AMD 的核显不小心把整个 IOMMU 组都绑走,可能会面临机器连不上网,USB 设备无法使用等问题,导致即无法使用 WebUI,也无法 SSH 连接,更无法通过控制台操作。
可以通过 Live CD 进入 PVE,如 Debian Live,挂载 PVE 的根目录,修改配置
1. 查看 PVE 根目录
1 |
|
2. 挂载根目录
1 |
|
3. 进入系统
1 |
|