近期捡漏了一块华擎的J3455ITX,机器支持硬件直通,但是硬件直通的时候发现一直通pcie网卡机器就会失联,经过多方了解PCIE分组都是同一个分组,一直通网卡就将所有网卡都直通过去造成失联,要解决这个问题最好是编译内核
以下是编译的操作方法 目前PVE最新的版本是8.4.1,内核是6.8,编译内核最新的版本是6.14 # 准备工作:一台debian12或者pve8.4.1的系统机器# 创建pve用户并创建pve-kernel文件夹并添加权限useradd pve -d /home/pve/pve-kernelchown -R pve /home/pve/pve-kernel# 下载源码, 记得挂梯子git clone --recursive https://git.proxmox.com/git/pve-kernel.git# 修改补丁vim /home/pve/pve-kernel/patches/kernel//0004-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch## 搜索pci_is_pcie找到+ pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ACS))并删除, 由于删除了一行, 你需要加多一行, 另外注意括号## 原代码,第二行删除,第三行添加+ if (!pci_is_pcie(dev) ||+ pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ACS))+ return -ENOTTY; ## 修改后,注意行数是三行带+号+ if (!pci_is_pcie(dev))+ return -ENOTTY;+# 更新软件包列表并安装编译工具(本次编译工具以及依赖包都是在debian12或者pve8.4系统下运行,)apt updateapt-get install -y wgetwget http://download.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpgchmod +r /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpgecho "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" >>/etc/apt/sources.listapt-get updateapt-get install -y 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 asciidoc xmlto gnupg gnupg2 rsync lintian debhelper libdw-dev libnuma-dev libslang2-dev sphinx-common asciidoc-base automake cpio dh-python file gcc kmod libiberty-dev libtool python3-minimal sed tar zlib1g-dev liblz4-tool idn zstd libpve-common-perl systemtap-sdt-dev libcap-dev libzstd-dev libbabeltrace-dev libunwind-dev python3-dev binutils-dev libtraceevent-dev dwarves python3-setuptools libpfm4-dev openjdk-17-jdk gawk# 编译前确认好存储空间是否足够df -h# 准备工作完成就对源码进行编译su - pve -c "make -C /home/pve/pve-kernel"# 编译完成创建文件夹并将编译好的deb文件复制到指定路径存放mkdir /home/pve/pve-kernelkernelcp *deb /home/pve/pve-kernel/kernel/# 此时可以将编译好的程序复制到需要拆分的系统上安装# 进入文件夹安装内核cd /home/pve/pve-kernel/kerneldpkg -i *.deb# 安装完成重启机器reboot# 重启完成查看内核版本uname -a 此时进去PVE直通硬件就可以发现IOMMU分组已经发生改变,不再是同一个分组了 以上是本次编译的操作内容,编译过程中大概耗时6小时,硬件使用j3455、16G内存、128G-SSD,使用上目前没发现什么问题 以下是编译好的内核下载地址(一个月有效,有需要的赶紧收藏):
|