仅作记录,小白萌新,大佬勿喷
1.修改系统调用表文件
系统调用表在内核目录 /arch/x86/entry/syscalls/syscall_64.tbl
对不同版本位置可能不一样
添加自己的系统调用号
2.声明系统调用服务例程
编辑 内核目录/include/linux/syscalls.h
添加函数声明
3.实现函数
编辑内核目录/kernel/下的sys.c文件,实现函数
需要添加一个头文件
要求学号是偶数返回后六位,奇数返回后五位
4.编译和安装内核sudo make mrproper
sudo make clean
sudo make menuconfig
sudo make -j8
sudo makemodules_install
sudo make install
5.使用新内核启动,进行测试
测试代码
运行结果
符合实验要求
6.出现的错误及解决方案
6.1
编译内核时出现错误
修改menuconfig中的设置
选择kernel hacking
选择compile-time checks and compiler options
在 warn for stack frame larger than 将1024修改为4096
6.2
这个要注意函数声明,系统调用号,函数实现相关的内容要一一对应
6.3
如果重新编译需要执行sudo make mrproper
sudo make clean
清除之前编译的文件,不然编译可能会报错
7.参考资料