本文可能会用到编译内核的相关知识,具体请看Ubuntu 编译内核
第一步:选定要编写的内核,解压
具体请看Ubuntu 编译内核
第二步:编写系统调用函数
进入安装的目录
cd /usr/src/linux-4.20.15/
sudo vim kernel/sys.c
在vim下 Ctrl+F Ctrl+B 快速翻页
在末尾加入自定义代码
asmlinkage void sys_hello(void)
{
printk("hello");
}
printk 运行在内核态 之后用dmesg查看输出内容
按esc :wq!退出
第三步:声明调用函数
sudo vim arch/x86/include/asm/syscalls.h
第四步:增加系统调用号
sudo vim arch/x86/entry/syscalls/syscall_64.tbl
(如图中的335)
第四步: 编译内核
具体请看Ubuntu 编译内核
第五步:验证
编写C程序
int main()
{
syscall(335);
return 0;
}
- gcc -o test test.c
- ./test
- dmesg