Linux增加系统调用并启用新内核


1.安装相关依赖

sudo apt-get install gcc make libncurses5-dev openssl libssl-dev 
sudo apt-get install build-essential 
sudo apt-get install pkg-config
sudo apt-get install libc6-dev
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install libelf-dev

2.下载Linux内核

在Linux官网下载Linux内核后解压。(建议下载版本为4的内核,兼容问题更少)
解压命令: tar -zxvf 压缩文件名.tar.gz
解压

3.增加系统调用

syscall_64.tbl内核文件内设置系统调用

333  64  kfc1 sys_kfc1

文件位置在:解压内核文件/arch/x86/entry/syscalls
增加系统调用

4.声明函数

syscalls.h内核文件内声明我们自己定义的函数

asmalinkage  long   sys_kfc1(void);

文件位置在:解压内核文件/include/linux
函数声明

5.函数编写

sys.c 的内核文件内,找一个空闲区域编写我们自己定义的函数

asmlinkage long sys_kfc1(void)
{
printk(“I’m xxx”);
return 1;
}

编写函数

6.内核编译,安装

使用命令如下

make menuconfig   //内核配置

正确进入文本选择界面
均保持默认配置,按exit退出配置界面
内核配置

make all –j4

内核编译,j后面为CPU核数,数字越大编译越快。
我使用j4编译完成需四五十分钟
编译成功

cp arch/x86_64/boot/bzImage /boot/vmlinuz-5.8.14
cp /usr/src/linux-5.8.14/System.map System.map-5.8.14
cp .config /boot/config-5.8.14

文件重定向

make modules_install

模块安装

7.系统重启并选择新内核

选择新内核使用uname -a,查看内核是否安装成功

查看内核版本

8.测试系统调用

编写使用我们自己加入系统调用的函数

#include <stdio.h>
#include <linux/kernel.h>
#include <sys/syscall.h>
#include <unistd.h>
int main()
{
long int a=syscall(332);
.......
printf(%ld\n%ld\n%ld”,a,b,c);
return 0;
}

编译所写函数

gcc a.c

编写函数

9.查看调用是否成功

使用命令:dmesg,查看是否调用成功
调用成功


总结

本文对Linux增加新系统调用并安装新内核过程进行了简单介绍。
有任何问题都可以在评论区和我交流~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值