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

添加HelloWorld系统调用后Linux内核崩溃问题求助

解决自定义HelloWorld系统调用导致的Kernel Panic问题

核心问题分析

从崩溃表现来看,大概率是你添加的sys_helloworld函数没有被成功编译进内核,导致内核启动时无法解析该符号,触发panic。你只创建了helloworld目录和内部的Makefile,但没有将这个目录纳入内核的整体编译体系。

具体解决步骤

  1. 将helloworld目录加入内核编译流程
    打开内核根目录下的Makefile,找到core-y开头的行(通常在文件前半部分),在现有目录列表末尾添加helloworld/,示例:

    core-y += kernel/ mm/ fs/ ipc/ security/ crypto/ block/ helloworld/
    
  2. 检查并修正系统调用号
    打开arch/x86/entry/syscalls_64.tbl,确认你添加的499号是否已经被原有系统调用占用。5.15.94版本中该编号可能已有对应调用,建议更换为未使用的编号(比如从540开始),示例:

    540 common helloworld sys_helloworld
    
  3. 重新编译并安装内核

    • 清理旧编译产物:
      make clean && make mrproper
      
    • 导入旧内核配置(避免从头配置的麻烦):
      cp /boot/config-$(uname -r) .config
      
    • 重新执行密钥相关配置:
      scripts/config --disable SYSTEM_REVOCATION_KEYS
      scripts/config --disable SYSTEM_TRUSTED_KEYS
      
    • 确认CONFIG_X86_X32=n(可通过make menuconfig进入图形界面验证,或直接编辑.config)
    • 编译并安装:
      make -j$(nproc)
      sudo make module_install install
      sudo update-grub
      
  4. 验证编译过程
    重新编译时仔细查看输出,如果出现undefined reference to 'sys_helloworld'的错误,说明步骤1的Makefile修改未生效,需重新检查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 18:27:41