zoukankan      html  css  js  c++  java
  • Linux增加系统调用

    使用Ubuntu14.04,内核从3.19.0替换成3.19.2,成功添加系统调用

    一、www.kernel.org上下载内核,我下载的版本是3.19.2,并解压到/usr/src/目录

    超级管理员权限

    将内核源码拷贝到 /usr/src 目录,mv是移动指令,cp是拷贝指令

    将内核文件解压缩

    tar -xvf file.tar 解压tar.gz

    tar -xzvf file.tar.gz解压tar.gz

    unrar e file.rar 解压rar

    tar -xZvf file.tar.Z 解压tar.Z

    tar -xjvf file.tar.bz2 解压tar.bz2

    unzip file.zip 解压zip

    二、在下载的内核中增加自己的系统调用。

    在头文件中,申明我们的系统调用函数

     

    实现我们的系统调用函数

     

    创建Kconfig.mycall文件

    打开makefile文件,将mycall.o加入obj-y中,这样编译的时候就能找到我们增加的mycall.c文件

    另外我们可以直接在sys.c中实现我们的函数,就不需要创建文件以及在obj-y中添加编译项,但不能有两个函数体,不然编译报错

    打开源码路径下的makefile文件,将extraversion后面加载.syscall,这就是之后我们的内核名字

    生成配置文件

    三、编译内核

    make指令,这个要很长时间

    安装模块

    安装内核

     安装之后,在/boot/路径下我们可以看到多出了几个文件

     按住shift,选择高级选项

    选择我们刚才安装的内核

    重启查看内核已经更换

    我们新增加的函数,以及增加

    四、编译运行

    在桌面创建一个.c文件,利用syscall调用我们添加的系统调用,第一个参数是调用号,我们自己定义的323,第二个参数是自己随意输入的数字100的参数

    编译运行,新增加的系统调用函数执行成功

     

    再看看内核中的调试输出,dmesg 为检测和内核缓冲区,-c为打印后清除

    注意:编译内核的时候不要重复执行make指令,否则可能文件夹会特别大

  • 相关阅读:
    第02组 Beta冲刺(4/5)
    第02组 Beta冲刺(3/5)
    第02组 Beta冲刺(2/5)
    第02组 Beta冲刺(1/5)
    第02组 Alpha事后诸葛亮
    第02组 Alpha冲刺(6/6)
    第02组 Alpha冲刺(5/6)
    第02组 Alpha冲刺(4/6)
    第02组 Alpha冲刺(3/6)
    2020系统综合实践1 微服务与Docker 基本入门
  • 原文地址:https://www.cnblogs.com/aliflycoris/p/5371691.html
Copyright © 2011-2022 走看看