【硬核】手摸手教你修改编译安装linux内核

阅读须知:这一篇文章写于我当时联创夏令营时做的一个任务,大概就是需要我们修改linux内核的网络协议栈,然后达到发送特定的网络包可以知道这台电脑是否被后门(安装了我们修改的linux内核)或者在这台电脑上面执行shell命令等。之后为了避免答辩的时候卡壳,所以写了一份提纲,也就是这篇文章啦,同样,不打算做修改,毕竟该有的步骤都有了。

查看当前的内核版本

uname -r

在这里插入图片描述

然后到官网去找一个内核版本进行下载

传送门

我这是第二次安装,选了一个稍微低一点的版本,第一次选的高版本默认配置编译出来的东西19个G, SSD顶不住了

https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.15.3.tar.xz

下载的话,wget就可以了

在这里插入图片描述

解压的话一条命令就够了:

sudo tar -xvJf linux-xxxxx

源码还挺大,害怕

在这里插入图片描述

然后编译的时候你会遇到一系列的错误,但是概括而言其实错误有两类,一个是缺少必要的包或者工具,再一个是这个版本的内核打了patch,小心处理就好。记得换源,下载快一点。

然后就需要准备文本配置文件 .config

其实文本配置文件就是指定启用哪一些模块,以及哪些模块打入内核里面,哪些放在modules文件夹里面

启用的方法可以是直接复制你自己内核里面的配置,也可以用make defconfig默认配置,或者make menuconfig然后save,还有很多,不一一列举了。

我们用默认的就好

在这里插入图片描述

在这里插入图片描述

这个默认配置才四千多行,比5.x的一万多行小太多了,估计编译出来的也要小不少

然后make mrproper清除编译中产生的中间文件,当你编译失败然后解决问题重新编译后可以运行一下

在这里插入图片描述

啊,把配置文件也删了,太狠了

接下来很多命令要root权限,我们直接进入root模式吧

在这里插入图片描述

make开始编译

这里由于我给虚拟机分了两个cpu,所以我就make -j 2了,快一点

然后就开始编译了,耐心等待即可,可以去看一部电影或者喝一杯卡布奇诺

在这里插入图片描述

神奇,怎么4.x版本安装得这么快,十分钟吧就安装好了,而且,为什么这么小,不管了,先试试吧

在这里插入图片描述

编译完成后就make modules_install

这一步是安装内核模块,他会把这些模块安装到 /lib/modules这个目录里面

可以看到现在这个目录下面一开始只有我当前内核得模块得文件

在这里插入图片描述

然后咱们执行以下这个模块安装命令试试

这什么情况?怎么一秒就安装好了。。。

在这里插入图片描述

在这里插入图片描述

但是现在内核文件还没有生成

在这里插入图片描述

我们接下来生成内核文件

再然后就make install

这一步就是安装内核了,这一步具体干了什么事情呢?

安装了内核相关的模块,安装bzImage, 生成initramfs文件以及会修改grub的配置文件,但是你还得设置成开机选择内核版本, 编辑/etc/default/grub这个文件,不过不同版本的不太一样,我之前的5.x的是修改两个条目,其中一个改成menu,还有一个是等待时间,我改成了10

在这里插入图片描述

我傻了,怎么安装得这么快,算了,先试试吧

在这里插入图片描述

在这里插入图片描述

然后sudo update-grub

然后重启一下试试

在这里插入图片描述

可以启动,但是是一个最小的linux,图形界面都没有,我就说为啥编译这么快,我人傻了

在这里插入图片描述

然后查看一下版本,发现确实没毛病

在这里插入图片描述

暂且不管这个busybox是否支持网络功能,我先用它来做一下实验,看能否打印我的printk

这个是在init/main.c下面的start_kernel函数下面

在这里插入图片描述

然后重新make,增量编译很快就结束了

在这里插入图片描述

然后重复上述步骤后,发现真的出现了一个新的内核

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

然后我发现我添加的那里貌似不是一个好地方,我按照这个里面的字符串查找了一下,有了新发现

在这里插入图片描述

哈哈,就在这里添加了,fuck linux

对了,还要注意我们是x86的架构,所以要选对文件,所以是这个文件

在这里插入图片描述

在这里插入图片描述

编译成功了,开森!

在这里插入图片描述

哈哈,成功了,与内核达成了同步!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值