You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Debian 9 5.10.0-rc1-sev-es+内核安装头文件缺失build目录问题

问题原因

核心问题是内核版本字符串末尾的+后缀不匹配:

  • 当前运行内核uname -r输出为5.10.0-rc1-sev-es+,末尾的+是内核编译时自动追加的标记,一般代表编译时源码目录存在未提交的改动、或者开启了CONFIG_LOCALVERSION_AUTO配置自动生成本地版本后缀。
  • 软件源中提供的linux-headers-5.10.0-rc1-sev-es包对应不带+后缀的版本,和你当前运行内核的版本标识不匹配,因此apt无法自动识别安装,也不会自动生成/lib/modules/5.10.0-rc1-sev-es+/build软链接。
解决方法

按需选择以下两种方案即可:

方案1:快速适配

适合确认源里头文件和当前内核代码完全一致的场景,操作最快

  • 先确认头文件目录已存在,执行以下命令能看到对应目录即为正常:
ls /usr/src/ | grep linux-headers-5.10.0-rc1-sev-es
  • 给当前内核模块目录创建build软链接:
sudo ln -s /usr/src/linux-headers-5.10.0-rc1-sev-es /lib/modules/$(uname -r)/build
  • 修改头文件内的版本标记,避免编译模块时触发版本不匹配报错:
sudo sed -i 's/5.10.0-rc1-sev-es/5.10.0-rc1-sev-es+/g' /usr/src/linux-headers-5.10.0-rc1-sev-es/include/generated/utsrelease.h

操作完成后即可正常编译内核模块。

方案2:重编译适配

适合快速方案报错、或不确定头文件匹配度的场景,版本100%匹配

  • 准备对应版本的内核源码(即你当前运行的5.10.0-rc1带sev-es补丁的内核源码),解压到/usr/src/目录下。
  • 进入源码目录,导入当前运行内核的配置文件:
# 如果系统启用了/proc/config.gz,优先用这个命令
zcat /proc/config.gz > .config
# 如果上面的命令报错,就从/boot目录拷贝对应配置
cp /boot/config-$(uname -r) .config
  • 同步配置并生成编译模块所需的预处理文件:
make olddefconfig
make modules_prepare
  • 安装匹配版本的头文件:
sudo make headers_install INSTALL_HDR_PATH=/usr/src/linux-headers-$(uname -r)
  • 创建build软链接:
sudo ln -s /usr/src/linux-headers-$(uname -r) /lib/modules/$(uname -r)/build
注意事项
  • 不要直接强制安装不匹配版本的头文件后跳过版本校验编译模块,版本不匹配会直接导致模块加载失败,报invalid module format错误,严重时可能触发内核崩溃。
  • 如果后续不需要保留自定义内核,也可以直接安装源内不带+后缀的linux-image-5.10.0-rc1-sev-es内核包,重启后选择对应内核启动,头文件会自动匹配,不需要手动修改配置。

内容的提问来源于stack exchange,提问作者cryptobeginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 13:39:16