数码电器

proxmox折腾 篇一:解决j3455直通iommu分组问题,PVE内核编译教程

字号+ 作者:时尚买手 来源:未知 2020-09-20 我要评论


小编注:此篇文章来自#原创新人#活动,成功参与活动将获得额外100金币奖励。详细活动规则,请猛戳此链接! 创作立场声明: 刚开始玩proxmox虚拟机的时候,有部分教程是从特爱买这里看到的,所以也写一篇回馈各位值友 本文教程内容是解决华擎J3455主板在PVE下开启IOMMU

更新:
2020.02.22更新内核pve-kernel-5.3.18-2,常规更新,今后不会一有新版本就更新了,估计大版本更新再编译新内核了,每一次都挺折腾的,而且编译出的内核有bug恢复起来挺麻烦链接 提取码: 6cfx 12.13更新内核pve-kernel-5.3.13.1,常规更新。链接 提取码: wc6n 12月6日更新内核pve-kernel-5.3.10.1 基于5.3版本内核的promox-ve6.1-2已经release了,5.3版本内核可以摆脱5.0版本内核独立使用了。链接 提取码: 7ngi 11月14日更新 内核5.3.7-1,一不小心跟着官方源码跑到比正式版前面很多了,而5.0版本的Ubuntu源码被我删了,懒得再下,所以干脆编译了这个版本,大家可以先行尝试,或者等待官方更新到5.3内核版本后再使用链接 提取码: nn91 9月4日更新pve内核 5.0.21-2链接 提取码: zcyv

本文教程内容是解决华擎J3455主板在PVE下开启IOMMU不能分组的问题,解决办法是编译PVE内核,打上特制的ACS_override补丁并安装。
提醒:安装内核有宿主系统崩溃的风险,请务必先进行备份。

详情我将写一篇LVM下安装的PVE利用snapshot创建快照实现宿主机备份与还原的帖子教程。

首先是常规的pve操作内容,请用root用户,包括编译部分也要用root用户编译,老外的建议,不清楚为什么。

1.开启IOMMU分组功能。

编辑 /etc/default/grub,将以下部分修改如下:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on pcie_acs_override=downstream"

amd的cpu请将intel_iommu=on 改为 amd_iommu=on
然后是修改/etc/modules文件, 添加如下内容:

vfio

vfio_iommu_type1

vfio_pci

vfio_virqfd

然后执行

update-initramfs -u -k all

再执行

dmesg | grep -e DMAR -e IOMMU -e AMD-Vi

查看是否开启了IOMMU,如果有 IOMMU, Directed I/O or Interrupt Remapping is enabled之类的字样那么说明IOMMU开启了,这部分网上教程很多,我就不赘述了。

2.编译内核

当然由于编译过程较漫长,如有必要我可以提供pve6.0的5.0.18-1版本的已修改内核。废话不多说,开始进入教程:

1).首先需要编译环境,建议宿主机就老老实实宿主机,不要在pve系统里直接编译,用其他机器或者开个虚拟机。Ubuntu和Debian都行,我用的是Debian buster。至少需要100G的空间,用以存放编译PVE内核的源码和编译过程文件。

2) .安装编译所需软件,由于摸索过程中安装的软件太多了,下面列的不一定全,请尝试的小伙伴如果在编译过程报错,请回帖反馈给我,我来查查看是什么软件忘记写上来了

apt install git nano screen patch fakeroot build-essential devscripts libncurses5 libncurses5-dev libssl-dev bc flex bison libelf-dev libaudit-dev libgtk2.0-dev libperl-dev libperl-dev asciidoc xmlto gnupg gnupg2 rsync lintian debhelper libdw-dev libnuma-dev libiberty-dev libslang2-dev debhelper git-core lintian build-essential automake autoconf libtool sphinx-common dh-python

3) .获取pve-kernel源码,因为我本人网络不好,我花了几天时间从pve的git站拖到了国内的gitee,如果同志们的网络好的话,可用尝试用pve自己的源码git

git clone git://git.proxmox.com/git/pve-kernel.git

或者用下面的我转到gitee的(国内的代码托管网站,不过可能有bug,我自己pull内核源码有时候拉不下来)

git clone git://gitee.com/hahach/pve-kernel.git

以上两个2选1 clone即可

4).这一步最关键 进入pve-kernel目录,进入patches/kernel目录,修改“0003-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch”这个patch文件,未来其他版本的可能不是这个名字,但是一定会包含ACS 这个关键词
将以下部分进行修改

--- a/drivers/pci/quirks.c

+++ b/drivers/pci/quirks.c

@@ -194,6 +194,106 @@ static int __init pci_apply_final_quirks(void)

改为

--- a/drivers/pci/quirks.c

+++ b/drivers/pci/quirks.c

@@ -194,6 +194,105 @@ static int __init pci_apply_final_quirks(void)

如果熟悉patch格式的应该看得明白,我可以解释下,这里是把106改为105了,因为下面具体的补丁内容会删减一行
接下来是关键的部分,作如下修改:

+ if (!pci_is_pcie(dev) ||

+ pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ACS))

改为

+ if (!pci_is_pcie(dev))

注意别漏了加上的小括号
5).可以开始编译了

cd pev-kernel

make

这里需要下载linux内核源码,大约2g,需要很长时间,请耐心等待,另外编译过程很智能,不需要make命令加线程,过程中会自动多线程。我j3455主板,debian虚拟机给了3核,下载加编译用了6小时,仅供参考。
6).如果顺利那么会在pve-kernel目录得到4个deb文件

root@debian:~/pve-kernel# ll *.deb

-rw-r--r-- 1 root root 1286948 8月 2 22:31 linux-tools-5.0_5.0.18-1_amd64.deb

-rw-r--r-- 1 root root 4907164 8月 2 22:31 linux-tools-5.0-dbgsym_5.0.18-1_amd64.deb

-rw-r--r-- 1 root root 9576432 8月 2 22:31 pve-headers-5.0.18-1-pve_5.0.18-1_amd64.deb

-rw-r--r-- 1 root root 54006332 8月 2 22:34 pve-kernel-5.0.18-1-pve_5.0.18-1_amd64.deb

将以上4个deb文件一同传到pve的root目录下。

7).以防万一,做好系统备份或者快照,zfs文件系统我不会,请自行查询资料,我会写一篇lvm文件系统下的pve系统备份攻略,详见我的另外一个帖子,因为等级低没法发帖子链接,凑合看吧:PVE在LVM文件系统下利用snapshot进行备份与还原

8).弄完系统备份后可以开始安装型内核了。
运行

dpkg -i *.deb

安装内核,等待安装结束,重启即可。

重启后即可发现如下图,IOMMU分组全都打断了,每一个硬件一个分组,不过直通的时候有个问题需要注意
每一个PCIE id 只能一同直通,不能分别直通。例如我的82576网卡是 04:00.01和04:00.02,都是04:00,只能一起直通
解决j3455直通iommu分组问题,PVE内核编译教程


12.13更新内核pve-kernel-5.3.13.1,常规更新。链接,提取码: wc6n

12月6日更新内核pve-kernel-5.3.10.1 基于5.3版本内核的promox-ve6.1-2已经release了,5.3版本内核可以摆脱5.0版本内核独立使用了。链接,提取码: 7ngi

11月14日更新 内核5.3.7-1,一不小心跟着官方源码跑到比正式版前面很多了,而5.0版本的Ubuntu源码被我删了,懒得再下,所以干脆编译了这个版本,大家可以先行尝试,或者等待官方更新到5.3内核版本后再使用链接, 提取码: nn91

9月4日更新pve内核 5.0.21-2链接,提取码: zcyv

如有需要可以在下方搜索框中搜索关键字购买:



1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 玩点新花样的标签机

    玩点新花样的标签机

  • 【晒桌面】耗时半年,折腾不止的处女座电脑桌面2.0!

    【晒桌面】耗时半年,折腾不止的处女座电脑桌面2.0!

  • 折腾群晖笔记:使用群晖自带的 web 功能 一分钟安装自己的导航页

    折腾群晖笔记:使用群晖自带的 web 功能 一分钟安装自己的导航页

  • 折腾群晖笔记:使用群晖Docker功能 三分钟安装漂亮的音乐播放器musicplayer

    折腾群晖笔记:使用群晖Docker功能 三分钟安装漂亮的音乐播放器music

网友点评