记录PVE8.2版本设置显卡NVIDIA 4090D直通
参考记录:
1、PVE入门-显卡直通
2、PVE8.0版本镜像下载
3、PVE新手安装
实战记录
一、系统下载和安装;
先把对应的PVE系统刻录到U盘,在接入到服务器&工作站设备上(工具很多,自行选择),本次用的是Rufus做系统盘,我的镜像版本是PVE 8.2;刻录完成接到设备上开机选择U盘启动;
安装完成之后可以看到对应的登录界面以及对应的IP,记得之前添加的ip地址,这个是用于登录web管理端口的;
例如我设置的192.168.0.114,在同网段内系统登录就可以通过此IP去访问到设备;
web端:https://192.168.0.114:8006 (8006是PVE的默认端口号)
用户名:root(默认),密码是设置的password密码;
二、直通显卡配置
1、配置开启IOMMU支持 vi /etc/default/grub(每个参考的都不一样,这个需要注意,)
#Intel处理器:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt initcall_blacklist=sysfb_init initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunction pci=nommconf video=efifb:off"
#AMD处理器:
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt initcall_blacklist=sysfb_init initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunction pci=nommconf video=efifb:off"
- intel_iommu 和 amd_iommu=on 为开启IOMMU
- video=vesafb:off video=efifb:off 不加载 vesafb 是 veas设备 的 fb ,efifb 是指 uefi设备 的 fb ,在 PVE 7.3 之后版本用(测试了关闭的情况下有可能报错)
- initcall_blacklist=sysfb_init 替代(来源于PVE 7.3 优化和显卡直通)
pcie_acs_override=downstream 是为了将 iommu groups拆分,方便直通一些板载的设备(来源于加强硬件直通的功能)
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt initcall_blacklist=sysfb_init initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunction pci=nommconf"
GRUB_CMDLINE_LINUX=""
##这个是个人本地的设置
2、更新 GRUB proxmox-boot-tool refresh 执行更新(不使用 update-grub 原因是,它提示的,个人觉得都可以使用,我用的是update-grub);
update-grub #重启内核服务
reboot #重启设备
3、验证iommu是否生效dmesg | grep -e IOMMU
root@tlzx:~# dmesg | grep -e IOMMU
[ 0.000000] Warning: PCIe ACS overrides enabled; This may allow non-IOMMU protected peer-to-peer DMA
[ 0.324109] DMAR: IOMMU enabled
[ 0.909875] DMAR-IR: IOAPIC id 12 under DRHD base 0xfbffc000 IOMMU 2
[ 0.909877] DMAR-IR: IOAPIC id 11 under DRHD base 0xb33fc000 IOMMU 1
[ 0.909879] DMAR-IR: IOAPIC id 10 under DRHD base 0x94bfc000 IOMMU 0
[ 0.909881] DMAR-IR: IOAPIC id 8 under DRHD base 0x947fc000 IOMMU 3
[ 0.909882] DMAR-IR: IOAPIC id 9 under DRHD base 0x947fc000 IOMMU 3
[ 1.665623] DMAR: IOMMU feature coherent inconsistent
[ 1.665624] DMAR: IOMMU feature coherent inconsistent
4、添加所需的系统模块(驱动)
##参照
echo "vfio" >> /etc/modules
echo "vfio_iommu_type1" >> /etc/modules
echo "vfio_pci" >> /etc/modules
echo "vfio_virqfd" >> /etc/modules
update-initramfs -u -k all ##更加内核
## 查看个人的
root@tlzx:~# cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
root@tlzx:~#
5、添加模块(驱动)黑名单 N卡(我的是4090 D)
echo "blacklist nvidia" >> /etc/modprobe.d/pve-blacklist.conf
echo "blacklist nvidiafb" >> /etc/modprobe.d/pve-blacklist.conf
echo "blacklist nouveau" >> /etc/modprobe.d/pve-blacklist.conf
echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf
6、查看显卡并把显卡添加到配置文件(有些不需要,但是为避免有问题也添加了)
root@tlzx:/etc/modprobe.d# lspci -nn | grep NV
17:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd NVMe SSD Controller PM9A1/PM9A3/980PRO [144d:a80a]
65:00.0 VGA compatible controller [0300]: NVIDIA Corporation AD102 [GeForce RTX 4090 D] [10de:2685] (rev a1)
65:00.1 Audio device [0403]: NVIDIA Corporation AD102 High Definition Audio Controller [10de:22ba] (rev a1)
b3:00.0 VGA compatible controller [0300]: NVIDIA Corporation AD102 [GeForce RTX 4090] [10de:2684] (rev a1)
b3:00.1 Audio device [0403]: NVIDIA Corporation AD102 High Definition Audio Controller [10de:22ba] (rev a1)
root@tlzx:/etc/modprobe.d# lspci -n -s 65:00.0 ##这个对应的是4090 D的
65:00.0 0300: 10de:2685 (rev a1)
root@tlzx:/etc/modprobe.d#
设置完成的目录文件cd /etc/modprobe.d目录下
root@tlzx:/etc/modprobe.d# ls ##查看当前目录文件
kvm.conf pve-blacklist.conf vfio.conf
root@tlzx:/etc/modprobe.d# cat kvm.conf
options kvm ignore_msrs=1
root@tlzx:/etc/modprobe.d# cat pve-blacklist.conf
# This file contains a list of modules which are not supported by Proxmox VE
# nvidiafb see bugreport https://bugzilla.proxmox.com/show_bug.cgi?id=701
blacklist nvidiafb
blacklist nvidia
blacklist nouveau
root@tlzx:/etc/modprobe.d# cat vfio.conf
options vfio-pci ids=10de:2685
options vfio-pci ids=10de:2684
root@tlzx:/etc/modprobe.d#
配置完成记得重启内核和设备:
update-initramfs -u
reboot
三、登录web端添加虚拟机
通过之前配置的IP登录到PVE的web管理,在web管理上登录之后可以看到以下界面;地址:https://ip:8006
1、创建虚拟机前先上传对应的虚拟机镜像;linux直接添加镜像,需要注意的!!!windows需要上传2个,1个是windows的镜像,另一个是驱动的镜像文件;
linux镜像下载:清华源的
清华源Ubuntu的镜像
阿里云的Ubuntu镜像
Windows的镜像:MSDN的(有其他的方便的可以共享下,谢谢)
本人百度云的,含Windows驱动
PVE官网的Windows 驱动
官网地址:https://pve.proxmox.com/wiki/Windows_VirtIO_Drivers
镜像上传界面:
2、虚拟机创建
虚拟机创建完成就开始安装系统了,省略。。。。。。。
四、问题汇总
1、pve换源:参考pve换源
实际应用:
root@tlzx:/etc/apt# ls
apt.conf.d auth.conf.d keyrings listchanges.conf listchanges.conf.d preferences.d sources.list sources.list.bak sources.list.d trusted.gpg.d
root@tlzx:/etc/apt# cat sources.list
deb http://mirrors.aliyun.com/debian bookworm main contrib
deb http://mirrors.aliyun.com/debian bookworm-updates main contrib
# security updates
deb http://mirrors.aliyun.com/debian-security bookworm-security main contrib
deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription
root@tlzx:/etc/apt# cat sources.list.
sources.list.bak sources.list.d/
root@tlzx:/etc/apt# cat sources.list.d/
ceph.list pve-enterprise.list pve-no-subscription.list
root@tlzx:/etc/apt# cat sources.list.d/pve-enterprise.list
#deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise
root@tlzx:/etc/apt# cat sources.list.d/pve-no-subscription.list
deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bullseye pve-no-subscription
root@tlzx:/etc/apt# cat sources.list.d/ceph.list
deb https://enterprise.proxmox.com/debian/ceph-reef bookworm enterprise
root@tlzx:/etc/apt#
2、网络NAT配置,参考文献Proxmox VE同时配置NAT共享IP和独立IP虚拟机
在网络中添加虚拟网口;
配置完成,记得应用生效!!然后查看宿主机配置文件。
然后在配置文件中通过映射把,vmbr1的流量通过vmbr0出去,配置如下:
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up bash /root/iptables.config.sh
post-up iptables -t nat -A POSTROUTING -s '192.168.1.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '192.168.1.0/24' -o vmbr0 -j MASQUERADE
配置完成,虚拟机需要手动添加IP地址才可以访问;
实际效果:
设备正常联网;