Linux内核编译与添加系统调用

一、准备工作

Linux系统版本:Ubuntu16.04
阿里云轻量应用服务器 1核-2GB内存-系统盘 40GB
预安装内核linux-4.16.1**清华源镜像下载**

二、上传压缩包并解压

利用WinSCP工具将内核传到/usr/src 文件夹中(需要进入root模式)
在这里插入图片描述
解压缩

sudo -i
cd /usr/src
tar -xvf linux-4.16.1.tar.xz

三、进入root模式

sudo -i

以下所有命令都需要在root模式下

四、加入系统调用号

vim /usr/src/linux-4.16.1/arch/x86/entry/syscalls/syscall_64.tbl

在这里插入图片描述
这里要注意,不能加到整个文件的末尾,要在中间的“序号断层”处加入。原因就是上图的蓝色英文解释。

五、加入系统调用函数声明

vim /usr/src/linux-4.16.1/include/linux/syscalls.h

(shift+g快速跳到最后一行)在这里插入图片描述

六、添加系统调用函数

vim /usr/src/linux-4.16.1/kernel/sys.c

(shift+g快速跳到最后一行)
在这里插入图片描述

SYSCALL_DEFINE后的数字代表参数个数,这里0个参数(void)

七、安装必要的文件

以下所有make命令都在 /usr/src/linux-4.16.1/这个目录和root模式下进行。

cd /usr/src/linux-4.16.1/
apt update
apt install libncurses5-dev
apt install build-essential
apt install libssl-dev
apt install libelf-dev
apt install bison
apt-get install bison -y
apt install flex
make mrproper
make clean
make menuconfig

出现选择界面后,直接save然后exit

八、编译内核

make -j4

如果报错

“Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please
install libelf-dev, libelf-devel or elfutils-libelf-devel”. Stop.

则输入

apt install libelf-dev
apt install libssl-dev

然后再make -j4
不报错后就会正常编译,我的服务器编译了三小时。

九、编译模块

make modules

十、安装模块、内核

make modules_install
make install

十一、配置配置 grub 引导程序

update-grub2

十二、重启

reboot -n

十三、查看内核版本

uname -a或者uname -r

在这里插入图片描述

十四、写一个test.c文件来测试

在任何目录下都行
在这里插入图片描述

十五、编译运行

gcc test.c -o test
./test

十六、查看信息

dmesg

在这里插入图片描述

结束!

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值