美文网首页
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添加系统调用

    0. 环境准备 Ubuntu16.04 Desktop x86_64Linux Kernel 4.4.0(tar....

  • Linux添加系统调用

    简介 设计并实现一个新的内核函数 mycall( ),此函数通过一个引用参数的调用返回当前系统时间,功能上基本与 ...

  • 系统调用号

    linux系统调用号,32位 linux系统调用号,64位 macos系统调用

  • 更新/etc/resolv.conf,服务不生效问题

    背景 linux操作系统 cpp程序添加了dnscache 逻辑(调用getaddrinfo()),想更换loca...

  • Linux 内核系统调用

    《Linux 内核分析》 MOOC 课程实验 分析 Linux 系统调用过程 1.系统调用概述 现代操作系统为了保...

  • Linux内核编译及添加系统调用

    首先让我们脑补一下什么是系统调用,个人理解系统调用就是调用系统函数(内核状态下的函数)。在linux系统中,用户通...

  • 在linux内核中添加系统调用

    下载linux源码,我用的是4.6.3 解压源码 在arch/x86/entry/syscalls/syscall...

  • Linux内核编译及添加系统调用

    1 总体设计思路 系统调用的本质是调用内核函数,以内核态运行程序。为了在内核态下运行,本实验针对Linux的内核进...

  • Linux内核编译及添加系统调用

    1 总体设计思路 系统调用的本质是调用内核函数,以内核态运行程序。为了在内核态下运行,本实验针对Linux的内核进...

  • 文件I/O(一)

    本文转载自实验楼:文件I/O(一) Linux系统调用 Linux系统调用(system call)是指操作系统提...

网友评论

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

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