虚拟机ubuntu16.04内核编译-18.04内核编译

首先需要下载新内核文件
这里提供一个版本5.4.14:
https://download.csdn.net/download/qq_43734581/12459308
下面是内核编译具体要求:
(1)下载更新软件包
(2)下载并解压内核
(3)通过make menuconfig进行内核功能配置
(4)添加系统调用号、添加声明、添加自定义函数
(5)编译内核
(6)安装内核及内核模块,并查看内核版本
(7)编写c语言函数,用于测试系统调用
(8)运行测试程序,并使用dmseg查看系统调用是否成功

uname -r	//查看当前内核版本号

在这里插入图片描述
进入正题,首先用16.04完成操作,后因安装新内核空间不足尝试虚拟机扩容没有成功,换18.04配置50G内存完成。18.04和16.04操作本质上没有区别,下面以18.04为例。

更新软件包,如果遇到问题,可以参考我的这篇博客来看看是不是同样的问题 PS:16.04下面没问题,18.04下踩坑多多。

sudo apt-get install build-essential 
sudo apt-get install kernel-package  //太慢可以换源试试
sudo apt-get install libncurses5-dev
sudo apt-get install flex 
sudo apt-get install bison	

内核文件下载完成后,内核文件移动到/usr/src,解压。
在这里插入图片描述
这里解释一下,/usr不是user的缩写,其实usr是Unix Software Resource的缩写, 也就是Unix操作系统软件资源所放置的目录,而不是用户的数据;所有系统默认的软件都会放置到/usr, 系统安装完时,这个目录会占用最多的硬盘容量。
在这里插入图片描述
解压后ls查看/usr/src目录,cd命令进入。

cd /usr/src/linux-5.4.14/kernel  //可能会有同学这个目录下没有内容,百度知

在这里插入图片描述
下面进入到内核文件下的kernel文件下,完成系统调用函数的编写(没有使用vim,行数太多gedit更方便),为自定义的系统调用函数添加系统调用号和系统调用声明。
sys.c文件
这里再来解释一下内核sys.c文件:包含了绝大部分系统调用函数的实现,如果系统调用在该内核版本中没实现,就直接返回ENOSYS。
在这里插入图片描述
在syscalls.h添加系统调用声明。
在这里插入图片描述
在这里插入图片描述
在syscall_64.tbl中添加系统调用号,32位的小伙伴请在32位syscall_32.tbl中添加。
在这里插入图片描述
在这里插入图片描述
下面进行编译,meke menuconfig时要注意全屏。
在这里插入图片描述
make menuconfig后全屏,下面直接save->exit,再回到这个页面直接exit。
在这里插入图片描述
不全屏的后果:
在这里插入图片描述
编译完成,执行安装。

sudo make modules_install 
sudo make install

Reboot重启进入新内核,编辑测试文件test.c
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
PS:附一张make menuconfig过程分析示意图
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值