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指令,否则可能文件夹会特别大

原文地址:https://www.cnblogs.com/aliflycoris/p/5371691.html