如何在Linux中添加系统调用

如何在Linux中添加系统调用

下载内核源代码
      可以在github或https://www.kernel.org/上进行下载。我下载的是linux-4.4.4.tar.xz
下载链接:https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.4.tar.xz

解压
      我已经解压完成,所以不演示解压过程:
在这里插入图片描述      本人将文件解压于:
在这里插入图片描述添加系统调用号
      进入解压的Linux-4.4.4文件夹:(vim ./arch/x86/entry/syscalls/syscall_64.tbl(32位系统是syscall_32.tbl) )如图,在末尾添加:
在这里插入图片描述声明系统调用函数原型
      (vim include/linux/syscalls.h )如图:
在这里插入图片描述添加系统调用函数的定义
      (vim kernel/sys.c)
在这里插入图片描述以上步骤基本完成准备步骤了

编译:(以下是重点也是成功与否的关键)
1.sudo make menuconfig 直接选择save,然后退出即可,生成.config
2. sudo make 编译开始,我四核核四线程,运行于虚拟机环境,性能大大打折扣,运行了近40分钟
3. sudo make modules_install 安装模块
4. sudo make install 安装内核

sudo make menuconfig弹出如图:键盘操作移动光标至save选项,生成.config,光标移动至Exit,选择退出即可。
在这里插入图片描述编译: sudo make
在这里插入图片描述由于作者个人电脑CPU和固态太普通,运行的ubuntu最终在1个小时后才能完成。如图:
在这里插入图片描述安装内核
    sudo make install
在这里插入图片描述编写测试程序
在这里插入图片描述在这里插入图片描述至此,测试程序编写完毕。

重启ubuntu(作者使用发行版ubuntu 16.04),系统进入开机时点击键盘上的delete按钮,选择高级选项,选择我们编译好的内核,等待开机.

使用命令
     uname -r 查看当前内核版本:成功选择内核
在这里插入图片描述测试程序
     编译运行测试程序:返回 1
在这里插入图片描述
    输入:dmesg
在这里插入图片描述测试成功。

版权声明

1.以上实验经本人测试真实有效,但不保证所有人可行,对他人造成损失.损害将与本人无关。
2.上述内容均由个人提供,未经得允许不得进行任何营利性使用,仅供学习使用。

猜你喜欢

转载自blog.csdn.net/qq_38937025/article/details/91476033