参考自proxmox折腾 篇一:解决j3455直通iommu分组问题,PVE内核编译教程_服务软件_什么值得买 (smzdm.com)
0.前言
目前pve最新内核为6.2.11-1,并且j3455的iommu分组有问题,想自己编译内核解决一下。
1.环境
debian 11
虚拟机,CPU2核,内存4G,硬盘150G,编译完实际使用空间为32G。准备一个非root
的账户。
2.步骤
2.1配置软件源
更换成清华软件源
|
|
|
|
添加pve软件源,因为debian的源里面不包含libpve-common-perl
|
|
更新软件
|
|
此时会报错
GPG error: The following signatures couldn't be verified because the public key is not available
解决方法
|
|
把xxx
替换为刚刚报错中的一串随机数
|
|
同样,把xxx
替换为刚刚报错中的一串随机数
再次更新
|
|
2.2安装编译依赖
|
|
2.3下载pve内核源码
|
|
2.4(可选)为j3455出现的IOMMU分组不正确打补丁
参考自proxmox折腾 篇一:解决j3455直通iommu分组问题,PVE内核编译教程_服务软件_什么值得买 (smzdm.com)
|
|
在vim命令界面下输入
/+194
把
@@ -194,6 +194,106 @@ static int __init pci_apply_final_quirks(void)
改成
@@ -194,6 +194,105 @@ static int __init pci_apply_final_quirks(void)
即把106
改成105
,然后在vim命令界面下输入
pci_is_pcie
把
+ if (!pci_is_pcie(dev) ||
+ pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ACS))
改为
+ if (!pci_is_pcie(dev))
记得删除第二行的时候,在第一行的最后加一个右括号
2.5开始编译
|
|
时间
3.编译完成后
得到以下文件
- linux-tools-6.2_6.2.11-1_amd64.deb
- linux-tools-6.2-dbgsym_6.2.11-1_amd64.deb
- pve-headers-6.2.11-1-pve_6.2.11-1_amd64.deb
- pve-kernel-6.2.11-1-pve_6.2.11-1_amd64.deb
- pve-kernel-libc-dev_6.2.11-1_amd64.deb
复制到pve中,安装后重启。
4.切换内核
4.1查看目前内核
|
|
出现了已安装的内核,但还用的是旧的内核
Manually selected kernels: --->手动加入的内核,通常是自己编译的内核
None.
Automatically selected kernels: --->自动读取到的内核
5.15.107-1-pve
5.15.39-3-pve
6.2.11-1-pve
Pinned kernel: --->当前设置默认启动的内核
5.15.39-3-pve
4.2切换内核
|
|
如果只是想临时启动,可以添加一个参数--next-boot ,这样将在下一次启动的时候启动这个内核,但是之后还是默认的启动内核。
|
|
4.3验证切换结果
|
|
Manually selected kernels:
None.
Automatically selected kernels:
5.15.107-1-pve
6.2.11-1-pve
Pinned kernel:
6.2.11-1-pve --->已切换为新的内核
IOMMU分组正常。
5.补充
卸载内核命令
|
|
卸载并清除内核命令
|
|