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

编译Arch Linux 5.18内核遇RWX权限段警告及BTF加载失败求助

解决编译Linux 5.18内核时的"LOAD segment with RWX permissions"警告及BTF加载失败问题

按照Arch Linux Wiki传统编译流程从Linus Torvalds仓库编译5.18内核时,出现多个LOAD segment with RWX permissions警告,最终在BTFIDS环节失败,错误信息如下:

MODINFO modules.builtin.modinfo
 GEN     modules.builtin
 LD      .tmp_vmlinux.btf
 ld: warning: .tmp_vmlinux.btf has a LOAD segment with RWX permissions
 BTF     .btf.vmlinux.bin.o
 LD      .tmp_vmlinux.kallsyms1
 ld: warning: .tmp_vmlinux.kallsyms1 has a LOAD segment with RWX permissions
 KSYMS   .tmp_vmlinux.kallsyms1.S
 AS      .tmp_vmlinux.kallsyms1.S
 LD      .tmp_vmlinux.kallsyms2
 ld: warning: .tmp_vmlinux.kallsyms2 has a LOAD segment with RWX permissions
 KSYMS   .tmp_vmlinux.kallsyms2.S
 AS      .tmp_vmlinux.kallsyms2.S
 LD      vmlinux
 ld: warning: vmlinux has a LOAD segment with RWX permissions
 BTFIDS  vmlinux
 FAILED: load BTF from vmlinux: Invalid argument
 make: *** [Makefile:1158: vmlinux] Error 255
 make: *** Deleting file 'vmlinux'

以下是经过验证的解决方案:

  • 禁用BTF调试信息
    进入内核配置界面(make menuconfig),找到CONFIG_DEBUG_INFO_BTF选项,将其设置为n(直接关闭BTF支持)。5.18内核的BTF处理对工具链版本要求较高,禁用后可绕过这个加载错误。如果确实需要BTF,确保pahole是最新版本(执行pacman -Syu pahole更新)。

  • 强制链接器移除RWX权限段
    编译前设置环境变量,给链接器传递参数消除RWX段:

    export LDFLAGS="-Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now"
    

    之后再正常执行make编译命令。

  • 更新binutils工具链
    旧版本的ld可能生成不符合内核要求的权限段,执行以下命令更新到最新版本:

    sudo pacman -Syu binutils
    

    更新后清理之前的编译文件(make clean)再重新编译。

  • 使用Arch官方内核配置作为基础
    复制当前系统的官方内核配置到编译目录:

    cp /usr/lib/modules/$(uname -r)/build/.config ./
    

    然后在此基础上用make menuconfig做自定义修改,避免默认配置中的兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:07:29