美文网首页
在Ubuntu下添加系统调用

在Ubuntu下添加系统调用

作者: Rimson | 来源:发表于2019-03-17 12:37 被阅读0次

    一、准备内核

    下载并解压内核,并将其移动到/usr/src目录下;安装编译内核所需要的依赖,详情参考在Ubuntu 18.04 下编译Linux内核

    二、编写系统调用函数

    进入需要安装的内核目录:可用TAB补全目录
    cd /usr/src/linux-5.0.2/
    编写自己的系统调用函数:
    sudo vim kernel/sys.c

    在vim命令模式下,使用Ctrl + FCtrl + B可快速翻页

    在末尾插入以下代码:

    asmlinkage void sys_hello (void)
    {
          printk("Hello!This is Rimson's system call");
    }
    

    printf运行在用户态,而printk运行在内核态;后者打印的内容不一定显示在终端上,但一定会保存在内核缓冲区里,可以使用dmesg查看

    然后:wq退出

    添加系统调用函数

    三、声明系统调用函数

    编辑声明系统调用函数的头文件:(注意路径和文件名不要弄错,推荐使用自动补全)
    sudo vim arch/x86/include/asm/syscalls.h

    声明函数

    四、添加系统调用编号

    编辑文件:
    sudo vim arch/x86/entry/syscalls/syscall_64.tbl

    添加系统调用bina

    五、编译安装内核

    安装内核之后重启,详情参考在Ubuntu 18.04 下编译Linux内核

    六、编写程序验证

    创建C程序并执行系统调用:(通过syscall(xxx);来调用xxx号系统调用)
    sudo vim test.c

    test.c
    编译C程序:
    gcc -o test test.c
    执行:
    ./test
    查看结果:
    dmesg

    相关文章

      网友评论

          本文标题:在Ubuntu下添加系统调用

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