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

编译含sched_ext的内核时自定义配置被自动删除的问题求助

解决sched_ext内核编译配置被自动删除的问题

问题原因

CONFIG_SCHED_CLASS_EXT的生效依赖三个前置配置:CONFIG_BPF_SYSCALL=y、CONFIG_BPF_JIT=y、CONFIG_DEBUG_INFO_BTF=y(且DEBUG_INFO_BTF还依赖CONFIG_DEBUG_INFO=y)。你之前仅手动添加了目标配置和部分依赖,未满足完整依赖条件,内核配置系统会自动移除不满足依赖的无效配置项,同时menuconfig也会隐藏未满足依赖的选项。

解决步骤

  1. 通过menuconfig完整开启依赖与目标配置
    执行make menuconfig进入图形配置界面:

    • 导航到General setup → BPF subsystem,将Enable the BPF system call(对应CONFIG_BPF_SYSCALL)设为y
    • 导航到Kernel hacking → BPF debugging,将Compile the kernel with BPF JIT support(对应CONFIG_BPF_JIT)设为y
    • 导航到Kernel hacking → Compile-time checks and compiler options,先开启Compile the kernel with debug info(对应CONFIG_DEBUG_INFO=y),再开启Generate BTF type information(对应CONFIG_DEBUG_INFO_BTF=y)
    • 此时回到Kernel Features → Preemption Model,就能找到Extended scheduler class support(对应CONFIG_SCHED_CLASS_EXT),将其设为y
  2. 手动编辑.config的正确方式
    如果偏好直接修改配置文件,需先完整添加所有依赖项,再添加目标配置:

    sudo vim .config
    

    在文件中添加/修改以下内容:

    CONFIG_BPF_SYSCALL=y
    CONFIG_BPF_JIT=y
    CONFIG_DEBUG_INFO=y
    CONFIG_DEBUG_INFO_BTF=y
    CONFIG_SCHED_CLASS_EXT=y
    

    保存后执行make oldconfig,此时配置不会被系统自动删除。

  3. 规避localmodconfig的局限性
    localmodconfig会基于当前系统加载的模块生成最小化配置,可能默认关闭BPF等未被当前系统使用的功能。建议先从基础配置开始:

    make defconfig
    

    再通过menuconfig或手动修改.config开启所需选项,减少依赖缺失的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:04:59