PVE安装
下载
安装
配置
安装完成后需要做一些配置
修改镜像源
修改中科大镜像源
首先
nano /etc/apt/sources.list
注释掉所有原来的官方源 复制进以下内容1
2
3
4deb https://mirrors.ustc.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian-security bookworm-security mainctrl+x 按Y 回车保存
然后
nano /etc/apt/sources.list.d/ceph.list
注释掉原来的 复制进以下内容
deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-quincy bookworm no-subscription
ctrl+x 按Y 回车保存然后
nano /etc/apt/sources.list.d/pve-enterprise.list
注释掉原来的 复制进以下内容
deb https://mirrors.ustc.edu.cn/proxmox/debian bookworm pve-no-subscription
ctrl+x 按Y 回车保存更新
apt update
然后解决公钥问题
wget https://mirrors.ustc.edu.cn/proxmox/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
开启硬件直通
硬盘直通
进入shell命令
执行命令ls /dev/disk/by-id | grep ata | grep -v part
获取自己磁盘对应的不带part的名字(这里会显示所有的磁盘,注意不要选错了)
直通到对应的虚拟机上qm set 102 -sata2 /dev/disk/by-id/ata-HGST_HUH728080ALE604_VKHPV1GX
其中102这里填写自己的虚拟机ID -sata? 这里填写自己要挂载到虚拟机的几号,比如我需要挂载一块新的至2号位置
挂载完成后硬件栏里面就多了一个磁盘了
非硬盘直通
开启IOMMU
- 第一步:确认自己的主板CPU是否支持Vt-d功能
不支持就搞不了直通。intel要b75以上芯片组才支持。也就是说intel4代酷睿处理器以上,都支持。amd不明。
VT-D是io虚拟化。不是VT-X,具体请参考文章
有很多新手,以为主板开启虚拟化功能,就能直通了,其实不是!要开启vt-d才能io虚拟化。AMD平台是iommu,某些OEM主板上叫SRIOV。请注意。
- 第二步:开启iommu
1 | #编辑grub,请不要盲目改。根据自己的环境,选择设置 |
修改完成之后,直接更新grub
update-grub
- 第三步 加载相应的内核模块
nano /etc/modules
1 | vfio |
使用update-initramfs -k all -u
命令更新内核参数
重启主机reboot
- 第四步 验证是否开启iommu
重启之后,在终端输入
dmesg | grep iommu
出现如下例子。则代表成功
1 | [ 1.341100] pci 0000:00:00.0: Adding to iommu group 0 |
此时输入命令find /sys/kernel/iommu_groups/ -type l
出现很多直通组,就代表成功了。如果没有任何东西,就是没有开启
IOMMU 强制分组
有的时候几个设备在一组里面,如多张网卡,但是多个网卡想单独分给不同的虚拟机,不进行强制分组则会导致全部直通给对应的虚拟机,若是PVE系统也在其中的话则会失联
因此需要强制分组到不同的组里
注意:即使不同的设备也可能分到同一组,如我的 PCIE网卡和主板自带的网卡,就分到了一组里面去了
如果你不存在一个组分到不同虚拟机里的话就不需要这个
查看Kernel内核
uname -a
我用的pve8.0.2,显示结果是6.2.16-3-pve,
Linux pve 6.2.16-3-pve #1 SMP PREEMPT_DYNAMIC PVE 6.2.16-3 (2023-06-17T05:58Z) x86_64 GNU/Linux
构件新内核…… 我构建失败了,搞不了,有兴趣的可以去看构件内核
我直接下载的别人的成品(某评论区,找不到来源了,抱歉了原著作者) (现在在自己的阿里云盘中,目前也拷贝不出来,记录一下吧)重命名为iso上传至PVE中,然后解压
1
2
3
4cp /var/lib/vz/template/iso/deb-6.5.11-4-pev.tar.gz.iso ./
mv deb-6.5.11-4-pev.tar.gz.iso deb-6.5.11-4-pev.tar.gz
tar xzvf deb-6.5.11-4-pev.tar.gz
cd deb-6.5.11-4-pev/执行内核刷新
解压,cd到文件夹中,执行dpkg -i *.deb
修改grub
nano /etc/default/grub
在原来GRUB_CMDLINE_LINUX_DEFAULT属性基础上加上pcie_acs_override=downstream,multifunction
即GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream video=vesafb:off video=efifb:off video=simplefb:off"
重启
reboot
查看是否直通成功
dmesg | grep iommu
网卡直通
直接添加PCIE设备即可,如果需要iommu强制分组,则需要看另外一个
显卡直通
理论上AMD RADEON 5xxx, 6xxx, 7xxx, Navi 5XXX(XT), NVIDIA GEFORCE 7, 8, GTX 4xx, 5xx, 6xx, 7xx, 9xx, 10xx and RTX 16xx/20xx/30xx都可以成功直通。
但是对于NVIDIA显卡,建议使用9代以上中端卡直通,且使用最新的驱动。
对于AMD的APU3/5系列核显/RX4XX/5XX/6XXX均无法完美直通。无法使用本文提供的教程直通,请注意,有其他的教程,但由于我没有卡,无法撰写教程
直接屏蔽显卡驱动
- 直通INTEL核显,请使用下面命令,注意!如果使用Gvt-G,请不要使用下面的命令
1
2
3echo "blacklist snd_hda_intel" >> /etc/modprobe.d/blacklist.conf
echo "blacklist snd_hda_codec_hdmi" >> /etc/modprobe.d/blacklist.conf
echo "blacklist i915" >> /etc/modprobe.d/blacklist.conf- 直通AMD显卡,请使用下面命令
1
2echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf
echo "blacklist amdgpu" >> /etc/modprobe.d/blacklist.conf- 直通NVIDIA显卡,请使用下面命令
1
2
3echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidiafb" >> /etc/modprobe.d/blacklist.conf把显卡绑定到vfio-pci
使用lspci
查看自己的显卡PCI地址,如02:001
200:00.0 Host bridge: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series Host Bridge (rev 0b)
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 500 (rev 0b)使用
lspci -n
查看显卡的did和vid。我这边是02:00,可以看到下面输出1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20root@pve1:~# lspci -n
00:00.0 0600: 8086:5af0 (rev 0b)
00:02.0 0300: 8086:5a85 (rev 0b)
00:14.0 0c03: 8086:a12f (rev 31)
00:17.0 0106: 8086:a102 (rev 31)
00:1c.0 0604: 8086:a114 (rev f1)
00:1d.0 0604: 8086:a118 (rev f1)
00:1d.2 0604: 8086:a11a (rev f1)
00:1d.3 0604: 8086:a11b (rev f1)
00:1f.0 0601: 8086:a148 (rev 31)
00:1f.2 0580: 8086:a121 (rev 31)
00:1f.3 0403: 8086:a170 (rev 31)
00:1f.4 0c05: 8086:a123 (rev 31)
00:1f.6 0200: 8086:15b8 (rev 31)
01:00.0 0200: 15b3:1003
02:00.0 0100: 10de:1381 (rev 03)
02:00.1 0100: 10de:0fbc (rev 03)
03:00.0 0108: 8086:f1a6 (rev 03)
04:00.0 0604: 1b21:1080 (rev 04)如果你的几个设备是在一个组里面,例如:02:00.0 02:00.1一个是GPU,一个是声卡,两者都要一起直通,所以通过命令,把2者都绑定到vfio-pci上。
echo "options vfio-pci ids=10de:1381,10de:0fbc" > /etc/modprobe.d/vfio.conf
上面这条命令,ids=后面跟直通组的所有设备。中间以英文逗号隔开。自己的设备自己替换。
上述操作完成之后,再检查一下,是否将例子内容替换成自己的。使用以下命令查看。我的是00:02.0是显卡且没有同一个分组的,则执行
echo "options vfio-pci ids=8086:5a85" > /etc/modprobe.d/vfio.conf
cat /etc/modprobe.d/blacklist.conf
cat /etc/modprobe.d/vfio.conf
更新内核
对于nvidia显卡,需要执行echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf
其余直接执行更新update-initramfs -k all -u
随后重启reboot
开始直通
新建的虚拟机,选择ovmf或者seabios,通常来说两者对独显直通没有影响,建议nvidia 9系以上选择OVMF,其他选择seabios。
如下图,添加PCIE设备,然后选择原始设备,设备中找到显卡选择,注意!!!不要勾选主GPU!。如果不能勾选PCIE,那么一定要把虚拟机改成Q35类型。
随后开机,如果能正常启动,nviia那么就安装NVIDIA最新驱动。
提示:由于某些消费级主板PCI的设计问题,你可能只能直通第一个PCIe x16槽的显卡。
这里还有一种方案,以后再看https://www.ainas.cc:88/?p=1527
注意:本文只测试了Intel核心显卡HD600是有效的