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

启用lockdep后Linux内核重编译失败问题求助

内核编译报错的解决办法

核心问题根源

你使用的/usr/src/linux-headers-5.15.0.72仅包含内核头文件,没有完整的内核源码(像arch/arm/tools/syscall.tbl这类编译必需的文件不在headers目录内),同时ARCH参数与虚拟机架构不匹配,导致编译失败。

具体解决步骤

  • 获取完整内核源码
    不要在headers目录下进行编译操作,先下载对应版本的完整内核源码:
    如果是Debian/Ubuntu系系统,执行:

    sudo apt install dpkg-dev
    apt source linux-image-$(uname -r)
    

    下载完成后会生成完整的内核源码目录,切换到该目录再进行后续操作。

  • 匹配虚拟机架构
    M1 Pro是arm64(aarch64)架构,UTM中的Linux虚拟机必然也是arm64架构,编译时必须指定ARCH=arm64,绝对不能用ARCH=arm(这是32位架构,与你的环境不兼容)。

  • 安装编译依赖
    缺失classmap.h大多是因为缺少编译依赖,执行以下命令安装:

    sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev
    
  • 重新配置并编译

    1. 清理之前的错误配置:
      make ARCH=arm64 distclean
      
    2. 复制当前运行内核的配置作为基础:
      cp /boot/config-$(uname -r) .config
      
    3. 重新启用lockdep:
      make ARCH=arm64 menuconfig
      
      在菜单中找到Kernel hacking -> Lock debugging (spinlocks, mutexes, etc.),勾选lockdep相关选项后保存退出。
    4. 开始编译:
      sudo make ARCH=arm64 -j$(nproc)
      
      用$(nproc)自动匹配CPU核心数,比固定-j4效率更高。
  • 验证虚拟机架构
    执行uname -m,如果输出为aarch64,说明是正确的arm64环境;如果不是,需要重新创建UTM的arm64架构虚拟机。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 09:32:39