PVE8.0 编译内核支持IOMMU拆分

2023-07-02 17:15:52 2点赞 27收藏 12评论

PVE直通SATA控制器给群晖的时候,发现网卡、USB、SATA控制器都在一个IOMMU上。

PVE8.0 编译内核支持IOMMU拆分

直通完了,PVE直接失联了。这肯定不行。百度了一下说是要编译内核把IOMMU拆开。下面记录一下编译内核的过程。

准备编译环境

我直接用pve物理机编译,怕破坏环境的话,可以在pve上建个Ubuntu、Debian虚拟机编译。

首先换国内源,加速依赖安装效率,这个网上教程很多,就不在这里写了。

安装编译需要的依赖:

apt install devscripts asciidoc-base automake bc bison cpio dh-python bison flex git kmod libdw-dev libelf-dev libiberty-dev libnuma-dev libpve-common-perl libslang2-dev libssl-devlibtool lintian lz4 perl-modules rsync sphinx-common xmlto zlib1g-dev dwarves net-tools htop vnstat

上面的依赖不一定全,如果编译的时候遇到找不到模块,再install一下缺的模块就行。

下载PVE内核源码

pve-kernel

建议全程挂梯子,不然下载很慢,整个仓库拖下来大概是5个G左右。

找到自己要构建的版本的分支或者commitid。

git clone --recursive https://git.proxmox.com/git/pve-kernel.git
# 切换到对应的分支
git checkout <commit-id>

修改补丁文件

进入patches/kernel/0004-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch,不同版本名字可能不一样,找ACS-capabilities字样的就可以了。

使用文本编辑工具,或者VIM 打开修改内容。

找到这三行:

+ if (!pci_is_pcie(dev) ||
+ pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ACS))
+ return -ENOTTY;

替换成这三行

+ if (!pci_is_pcie(dev))
+ return -ENOTTY;
+

替换过程行数不要变。变了的话需要修改git patch文件前面的替换行数信息。

PVE8.0 编译内核支持IOMMU拆分

开始编译

cd到pve-kernel文件夹下,执行make命令就行了。

编译时间看机器性能,我的R5 5600g构建一次需要1个小时的样子。

编译完了就会在当前目录生成几个deb包,使用dpkg -i *.deb就可以安装内核了,安装完重启就行了。

如果是内核降级,还需要去更新GRUB引导配置,这个网上有很多教程。

重启后IOMMU分组已经OK了。

PVE8.0 编译内核支持IOMMU拆分

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
12评论

  • 精彩
  • 最新
  • 正在读取软件包列表... 完成
    正在分析软件包的依赖关系树... 完成
    正在读取状态信息... 完成
    注意,选中 'perl-modules-5.34' 而非 'perl-modules'
    E: 无法定位软件包 libpve-common-perl
    E: 无法定位软件包 libssl-devlibtool

    校验提示文案

    提交
    你有解决这个无法定位软件包的啊?

    校验提示文案

    提交
    收起所有回复
  • 只差这一个了,
    E: 无法定位软件包 libssl-devlibtool

    校验提示文案

    提交
    你有解决吗?我也找不到这个

    校验提示文案

    提交
    这是两个包,中间少了一个空格

    校验提示文案

    提交
    收起所有回复
  • 大佬能否分享一下编译后的内核文件?感谢,目前是8.0.4的pve,内核6.2.12。

    校验提示文案

    提交
  • 谢谢分享

    校验提示文案

    提交
  • 很实用,有详细的图片就好了

    校验提示文案

    提交
  • 我的倍控n5105,四个网口,默认iommu不同组的。还是没法分给两个虚拟机

    校验提示文案

    提交
  • 你物理机安装的什么版本的pve编译的?

    校验提示文案

    提交
  • 大佬可以分享一个编译好的吗

    校验提示文案

    提交
  • ubuntu和PVE下编译都出现这个错误,pve是8.0的中科大源,UBUNTU是22.04清华源,是源的问题吗

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章

值友2738097220

Ta还没有介绍自己

关注 打赏
最新文章 热门文章
27
扫一下,分享更方便,购买更轻松