操原上机(一) 在LINUX中增加新的系统调用
要求
在LINUX中增加新的系统调用
1、编写新的系统调用函数(指函数实现部分)
2、注册新的系统调用(声明系统调用函数和编号)
3、编译新LINUX内核
4、编译和安装模块
5、启动新的LINUX内核
6、编写应用程序测试新的系统调用
建议环境
UBANTU/Fedora
开源内核2.6.38或其它
下面讲如何实现在Ubuntu18.04如何中增加新的系统调用
前提
Ubuntu系统中有不止一个内核,如果没有,可以参考我前面的文章,编译一个新的内核。
添加自定义的系统调用
输入以下命令:
cd /usr/src/linux-5.0.2/
sudo gedit arch/x86/entry/syscalls/syscall_64.tbl
在打开的文件中添加自定义的系统调用号
如下图所示,335,336,337是我自己添加的系统调用的调用号输入命令:
sudo gedit include/linux/syscalls.h
在打开的文件的末尾添加函数声明,如图所示输入命令:
sudo gedit kernel/sys.c
在打开的文件末尾添加函数的定义,如图所示## 编译内核
依次输入以下命令:
sudo make mrproper
sudo make clean
sudo make menuconfig
sudo make -j4
sudo make modules_install //安装内核模块
sudo make install //安装内核
如何编译内核,具体参考我前面的文章
验证添加的系统调用
编译完内核之后,重新启动系统,在Ubuntu高级选项中选择刚刚编译的新内核启动系统
编写一个C语言程序验证添加的系统调用
输入命令:
sudo gedit test.c
创建一个文本文档,写一个调用系统函数的程序,保存退出
然后输入命令:
sudo gcc -o test test.c
sudo ./test
运行该程序
再输入命令sudo dmesg
查看系统进程,可以看到系统调用的输出
如图所示: