apt-cache search linux-source
apt-get install linux-source-5.19.0
下载好的源码会在/usr/src目录下,进入/usr/src/linux-source-5.19.0解压源码
tar -xvjf linux-source-5.19.0
进入目录 /usr/src/linux-source-5.19.0/linux-source-5.19.0/kernel ,找到sys.c文件进入编辑添加系统调用
cd /usr/src/linux-source-5.19.0/linux-source-5.19.0/kernel
vim sys.c
printk是一个用于在LInux内核中输入消息的函数。
SYSCALL_DEFINE是一个在LInux内核源代码中使用的宏,用于定义系统调用函数。它简化了系统调用函数的定义过程,并提供了正确的函数名和参数类型。
SYSCALL_DEFINEx(x代表参数个数)
asmlinkage用于指示函数采用与内核调用约定相匹配的参数传递方式。它在函数声明中使用,确保函数的参数传递方式与内核要求一致。
SYSCALL_DEFINE和asmlinkage配合使用,可以确保系统调用函数按住奥内核要求采用正确的参数传递方式。
asmlinkage long sys_my_syscall(int arg1, unsigned long arg2)
{
// 系统调用的实现
// ...
return 0;
}
SYSCALL_DEFINE2(my_syscall, int, arg1, unsigned long, arg2)
{
return sys_my_syscall(arg1, arg2);
}
cd /usr/src/linux-source-5.19.0/linux-source-5.19.0/arch/entry/x86/entry/syscalls
vim syscall_64.tbl
syscall_64.tbl用于x86架构上64位系统调用编号和对应的函数
第一列式系统调用的编号,第二列是标志,第三列是系统调用的名称,第四列是对应的函数名
cd /usr/src/linux-source-5.19.0/linux-source-5.19.0/include/linux
vim syscalls.h
需要下载库
sudo apt-get install libncurses-dev
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install libelf-dev
sudo apt-get install libssl-dev
j4表示同时执行的并发任务量,可以加快构建速度
如果遇到
No rule to make target ‘debian/canonical-certs.pem’, needed by ‘certs/x509_certificate_list’
这个错误
vim .config
进入文件找到CONFIG_SYSTEM_TRUSTED修改信息为空
make modules
make modules_install
make install
update-grub2
reboot
vim test.c
OK!完成!
uname -r
https://www.kernel.org/
注:vim使用教程
vim a.c //进入a.c文件
进入之后按 i 开始编辑
下方有“插入”提示
输入完毕后 按“ESC
然后按“:wq”保存退出
按下“/”可以查找内容