美文网首页
Linux添加系统调用

Linux添加系统调用

作者: SilentDawn | 来源:发表于2018-06-29 15:34 被阅读0次

    0. 环境准备

    Ubuntu16.04 Desktop x86_64
    Linux Kernel 4.4.0(tar.xz)

    1. 解压缩内核包

    xz -d linux-4.4.0.tar.xz
    tar -xvf linux-4.4.0.tar
    

    2. 添加系统调用

    • 添加系统调用号
      编辑 linux-4.4.0/arch/x86/entry/syscalls/syscall_64.tbl
      在编号332添加新的系统调用号,格式如同332
      例如
    333 common  victim          sys_victim
    
    add syscall number.png
    • 添加系统调用函数声明
      编辑linux-4.4.0/include/linux/syscalls.h
      在syscalls.h文件最后添加新的函数声明,函数名同上一步添加的函数名,声明格式如同syscalls.h文件中的前几行
      例如
    asmlinkage long sys_victim(void);
    
    • 添加系统调用函数定义
      编辑linux-4.4.0/kernel/sys.c
      文件最后添加函数定义
      例如
    SYSCALL_DEFINE0(victim)
    {
        ......
    }
    

    3. 编译安装内核

    • 配置内核参数
      使用make menuconfig命令图形化配置内核参数,配置完成后选择Save,然后选择Exit
      PS.过程中可能报错缺失ncurses相关组件,可用如下命令安装
    sudo apt install libncurses5-dev
    
    • 编译内核
      使用make命令编译内核,可以声明 -jn(n为数字)选项,多线程编译
      例如
    make -j8
    

    PS.过程中可能报错确实libelf,可用如下命令安装

    sudo apt install libelf-dev
    
    • 安装内核模块
      使用命令make modules_install安装内核模块

    • 安装内核
      使用命令make install安装内核

    • 重启并选择新内核
      PS.重启前需要修改默认内核,见linux修改默认内核

    相关文章

      网友评论

          本文标题:Linux添加系统调用

          本文链接:https://www.haomeiwen.com/subject/uplayftx.html