Linux4.18.9添加系统调用传递参数示例
做过系统调用的朋友们应该都注意到了,在Linux4.15之后的版本因为KPTI(内核页表隔离)的出现,添加自己的系统调用传递参数时并不能像以前版本一样处理,这里我介绍下自己的解决方案(完整步骤)。
1.下载最新源码
在https://www.kernel.org/上下载最新内核源码
本文编辑时最新稳定版本为4.18.9,下载后拷贝到/usr/src目录下,解压linux-4.18.9.tar.xz
sudo xz -d linux-4.18.9.tar.xz
sudo tar -xvf linux-4.18.9.tar
2.安装开发工具
这里安装的软件可能不够全面,在下面操作中出现问题再具体处理
sudo apt-get install build-essential kernel-package libncurses5-dev libssl-dev bc
3.添加自定义的系统调用
打开64位系统的系统调用表,添加自定义的系统调用号
cd /usr/src/linux-4.18.9/
sudo vim arch/x86/entry/syscalls/syscall_64.tbl
test_one是我添加的系统调用
333 common io_pgetevents