PVE8.1内核编译拆分IOMMU

本文讲述了作者在PVE环境中为增加速度而尝试将Win10虚拟机的硬盘直通至物理机的PCIeX1接口,过程中遇到IOMMU问题,需重新编译内核。作者详细记录了安装DEBIAN12、配置v2ray、安装依赖并解决libpve-common-perl安装问题,以及编译PVE8.0内核以支持I/O/MMU拆分的过程。
摘要由CSDN通过智能技术生成

        前段时间在PVE上增加了一个WIN10虚拟机,没有硬盘接口,就虚拟了100G的硬盘,测试速度300+M,虽然只用来看片,但心理总是觉得不爽,还是直通一块硬盘比较好。物理机上一共三条PCIE插槽,两条X16已经用上了,只剩下一条X1,远远够不着NVME的速度,SATA是够的,勉强用一下吧。

        买了一块PCIE X1转SATA的转接卡,接上硬盘,直通开机,死机了。重启PVE,查看PCIE设备,发现安装PVE的硬盘和新买这块硬盘都在IOMMU的第6组里。IOMMU分组是打开的,在网上找办法,好像只有重新编译内核了。第一次编译内核,还是遇到了些问题。

        在网上找教程,建虚拟机,安装UBUNTU22.04,安装依赖时出错,又安装20.04,还是不行。想到PVE8是基于DEBIAN12,于是再安装DEBIAN12,这次行了。

        下面记录一下过程。

1、安装DEBIAN12,开SSH

        这个很简单,没什么说的。

2、安装v2raya

        git下载速度白天只有三四十K,如果可以等的话半夜下载速度也挺快的。我是急性子,必须安装。教程参见2024最新 v2rayA 安装与配置教程。不过我是先把v2ray-core和v2raya下载下来,再传到debian后安装的。

        v2ray-core下载下来是zip文件,先解压,再安装:

        unzip /tmp/v2ray-linux-64.zip -d /usr/local/v2ray-core

        cd /usr/local/share/

        mkdir v2ray

        cp /usr/local/v2ray-core/*dat /usr/local/share/v2ray/

        v2raya是deb文件,直接安装:

        apt install installer_debin_x64_2.2.5.1.deb

        修改配置:

        nano /etc/default/v2raya

        下面两处地方:

        V2RAYA_V2RAY_BIN=/usr/local/v2ray-core/v2ray

        V2RAYA_V2RAY_CONFDIR=/usr/local/v2ray-core

        再启动:

        systemctl enable --now v2raya

        systemctl status v2raya

        然后花几块钱订阅一个月的机场,git下载速度能够达到近百M,比晚上下载还快点:)。订阅后需要做一些设置才能加速,上面文章都有写。

下面几步根据这篇文章操作:PVE8.0 编译内核支持IOMMU拆分

3、安装依赖        

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

        还有个包libpve-common-perl在安装的时候总是出错,找了下原因,原来需要密钥,这个我在UBUNTU里面的时候费了不少时间,各种问题,最后两个版本都没有成功。下面是密钥安装方式(注意PVE8和debian12都是bookworm,其他版本不是这个,别搞错了):

        wget http://mirrors.ustc.edu.cn/proxmox/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg

        echo "deb http://mirrors.ustc.edu.cn/proxmox/debian/pve bookworm pve-no-subscription" >/etc/apt/sources.list.d/pve-no-subscription.list

        apt update

        apt dist-upgrade -y

        上面步骤没有出错的话就可以安装libpve-common-perl了。

        apt install libpve-common-perl

4、下载PVE源码

        cd /root

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

         --recursive参数建议添加,把子模块一起下载下来。

        如果需要切换别的分支的话用下面命令:

        git checkout bookworm-6.5

        切换到bookworm-6.5,这是PVE8的内核版本,我编译的master 6.8.4。

        也可以直接下载分支:

        git clone -b bookworm-6.5 https://git.proxmox.com/git/pve-kernel.git

5、修改补丁文件

        cd /root/pve-kernel

        nano patches/kernel/0004-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch

        删除pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ACS)判断,保存。

        修改前:

        修改后:

6、编译

        make

        还是出错了:gcc fatal error killed signal terminated program cc1。

        再百度,发现是系统资源不足,把内存从2G加到6G,CPU4核加到8核后,再次编译,用了差不多一个半小时,总算成功了。

7、安装切换内核,重启,再看分组

        安装内核 :

        dpkg -i *.deb

        查看安装的所有内核 :

        dpkg --get-selections |grep kernel

        切换内核 :

        proxmox-boot-tool kernel pin 6.8.4-2-pve
        proxmox-boot-tool refresh
        reboot

        内核从6.5.13切换成6.8.4。

        两块硬盘已经从第6组变成了13和14,成功拆分。

        内核链接,有需要朋友请自行下载:

        https://pan.baidu.com/s/1uhRBYZ1p3gS_WmPoOSZj1w 
        提取码:icb2 

  • 36
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值