PVE81内核编译拆分IOMMU

2020-01-05

PVE8.1内核编译拆分IOMMU

本文详细记录了在PVE(Proxmox Virtual Environment)8.1环境中,为了解决IOMMU分组问题而进行的内核编译过程。通过重新编译内核,实现了将Win10虚拟机的硬盘直通至物理机的PCIe X1接口,并成功拆分了IOMMU分组。

背景

在PVE上增加了一个Win10虚拟机,但由于没有硬盘接口,虚拟了100G的硬盘,测试速度仅为300+M。为了提升性能,决定将物理机上的PCIe X1接口硬盘直通给虚拟机。然而,在直通过程中遇到了IOMMU分组问题,导致系统无法正常启动。

解决方案

为了解决IOMMU分组问题,需要重新编译PVE8.1的内核,以支持IOMMU拆分。以下是详细的编译步骤:

1. 安装Debian 12

首先,在虚拟机中安装Debian 12操作系统,并开启SSH服务以便远程操作。

2. 配置v2ray

由于国内网络环境限制,下载速度较慢,因此配置了v2ray以加速下载。具体步骤包括下载v2ray-core和v2raya,并进行相应的配置。

3. 安装依赖

在编译内核之前,需要安装一系列依赖包。这些包包括开发工具、编译工具链、以及内核编译所需的库文件。

4. 下载PVE源码

从Proxmox的官方仓库中下载PVE8.1的内核源码,并确保下载了所有子模块。

5. 修改补丁文件

为了支持IOMMU拆分,需要对内核源码中的补丁文件进行修改。具体来说,需要删除PCI_EXT_CAP_ID_ACS的判断条件。

6. 编译内核

在完成所有准备工作后,开始编译内核。编译过程可能需要较长时间,具体取决于系统的硬件配置。

7. 安装并切换内核

编译完成后,安装新生成的内核包,并使用proxmox-boot-tool工具切换到新内核。重启系统后,检查IOMMU分组情况,确认问题已解决。

总结

通过上述步骤,成功解决了PVE8.1环境中的IOMMU分组问题,实现了硬盘直通并提升了虚拟机的性能。希望本文能为遇到类似问题的用户提供参考和帮助。

下载链接

PVE8.1内核编译拆分IOMMU