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

编译Linux内核生成RPM包遇多类异常,寻求技术解答

解决Fedora内核RPM编译的三个问题

1. 内核RPM包体积超1G

这是因为make binpkg-rpm默认会把所有编译产物一股脑打包,包括占空间极大的调试符号、未压缩的模块和内核镜像。解决起来很直接:

  • 打开你的.config,把CONFIG_DEBUG_INFO_NONE设为y(彻底关闭调试符号,能砍掉几百MB体积)
  • 开启CONFIG_MODULE_COMPRESS=y,让内核模块自动压缩
  • 编译前先跑make clean,清理之前的编译残留,避免冗余文件混进包

2. 内核头文件包标记obsoletes kernel-headers

这个是原生打包脚本的坑,自定义头包默认会加Obsoletes: kernel-headers,但Fedora的kernel-headers是系统核心依赖,删它会带崩一堆软件。两种解决方式:

  • 直接改内核源码里的scripts/package/mkspec,找到写着Obsoletes: kernel-headers的行,删掉或者注释掉
  • 编译时加参数绕过:make binpkg-rpm RHEL_KERNEL_HEADERS_OBSOLETE= (等号后面留空,覆盖默认设置)

3. 未生成独立模块包(kernel-modules、kernel-modules-extra)

make binpkg-rpm是内核原生的打包目标,本来就不会生成Fedora风格的拆分模块包。要拿到拆分包得换方式:

  • 用Fedora官方的打包流程:去Fedora的内核git仓库拉对应版本的.spec文件和补丁,把自己的内核源码替换进去,用rpmbuild编译,官方脚本会自动拆分成内核、模块、额外模块这些包
  • 如果非要用原生目标,就得手动修改scripts/package/mkspec添加模块包的打包逻辑,但这个工作量大,不如直接用官方.spec来得省心

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:20:50