Linux添加系统调用

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修改默认内核

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容