阅读须知:这一篇文章写于我当时联创冬令营时做的一个任务查看linux内核版本,大概就是须要我们更改linux内核的网路合同栈,然后达到发送特定的网路包可以晓得这台笔记本是否被侧门(安装了我们更改的linux内核)或者在这台笔记本里面执行shell命令等。之后为了防止答辩的时侯卡壳,所以写了一份提纲,也就是这篇文章啦,同样linux操作系统版本,不准备做更改,毕竟该有的步骤都有了。
查看当前的内核版本
uname -r
然后到官网去找一个内核版本进行下载
传送门
我这是第二次安装,选了一个稍为低一点的版本,第一次选的高版本默认配置编译下来的东西19个G, SSD顶不住了
下载的话,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了,快一点
然后就开始编译了雨林木风linux,耐心等待即可,可以去看一部影片或则喝一杯拿铁
神奇,怎么4.x版本安装得这么快,十分钟吧就安装好了,而且,为什么如此小,不管了查看linux内核版本,先试试吧
编译完成后就make modules_install
这一步是安装内核模块,他会把这种模块安装到 /lib/modules这个目录上面
可以看见如今这个目录下边一开始只有我当前内核得模块得文件
然后俺们执行以下这个模块安装命令试试
这哪些情况?怎么1秒就安装好了。。。
但是如今内核文件还没有生成
我们接下来生成内核文件
再之后就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的构架,所以要选对文件,所以是这个文件
编译成功了,开森!
哈哈,成功了,与内核达成了同步!