历时两个月的比赛终于按下了暂停键,这段时间收获颇多,记录一下,避免后人像我一样走了许多弯路

我会尽可能的详细记载我遇到的各种问题以及开发流程(如果有时间的话)

我不会去写太多基础的文档那样过于耗时,我会直接把我当时参考的文章附上,主要是提供思路以及记录一些缺乏记载的东西

那么就先从Kernel开始

Kernel的源码在Windows上是无法使用的,可以使用WSL、虚拟机、Linux分区阅读器等总之办法有很多,但是我觉得最方便且高效的办法还是装一个双系统,在这里推荐Debian

关于Kernel的文档

什么是Linux内核

Linux_Kernel_Wiki(强推,这个真的很全面,感觉光看这一个都够用了)

源码

在开始之前你需要大量的基础知识,比如内核、操作系统等,这里推荐些前置科目,如果想从零打基础的话可以从零学习一下《计算机组成原理》、《操作系统》(最近在看《操作系统导论》这种厚重的书籍读起来好爽)、C语言、Linux、Kernel,虽然Kernel是Linux的一部分,但是这里把Linux和Kernel区分开是因为我觉得学习Linux和学习Kernel的学习路线完全不同,注意不要搞错了重点

这段没有什么好的文档推荐(绝对不是我懒)

重要的不是一个我给你推荐一个好的文章、好的教程,跟着一步步学就可以达成目的,拥有主动学习的能力才是最为重要的,所以需要自己去查找并加以理解

那么就假设读者已经具备了上述基础

理论学的再多不如上手实操,接下来就要试着去编译一下内核并且安装了(虽然说入门一般都是输出一个HelloWorld,但是步子迈小一点也没有什么坏处)

先是拉取内核源码,这里使用清华的镜像站

git clone https://mirrors.tuna.tsinghua.edu.cn/git/linux.git

拉取完成之后进入到源码目录,选择编译配置 如图

make menuconfig

menuconfig.png

忘记介绍了,make是一个自动化构建软件,文章如下:

C语言编译过程

构建工具 make 简介

只有理解了编译过程才能理解Make的用处,建议先自己手动编译一下试试,学计算机的学到什么了一定要先动手试试

那么到这里你已经明白了编译的过程,也明白了上面那句命令的用处,这里有一个小坑,menuconfig是打开一个图形化的界面方便你进行图形化的配置,但是如果你运行命令的终端有点小的话,会报错的,所以这里推荐全屏终端运行,第一次执行这个命令肯定会报错,因为编译内核源码的过程会缺少很多依赖,按照提示下载就好,我这里就不总结列举出来了

其实现在没有什么好选的配置,毕竟这是一个原版的内核源码,开始编译

make -j 32

-j 选项是启用多线程编译,32是线程数,这里建议线程数选择CPU核心数量的1-2倍

如果没有任何意外的话,你的终端会开始像一个“黑客”一样闪过去各种信息,这是漫长的一步,具体要编译多久取决于电脑的性能(但是漫长的只有这一步),可以当作参考时间,我的电脑是拯救者r9p 编译时间大概在30-40分钟左右,可以休息一会了

编译完成后如图
make.png

等编译完成之后就可以安装内核了

sudo make install            # 安装内核
sudo make modules_install    # 安装内核模块

这里有一些琐碎的注意事项

  • 编译-安装内核真的就只需要这么简单的几步就可以了

网络上关于内核安装的说法有很多种,我以前花费了大量的时间去尝试他们的那些方法,因为我觉得就这两行命令就能装完的话,未免也太简单了,但事实就是这么简单,内核的安装只需要两行或者说一行命令就可以

  • 更新grub

有很多文章在安装内核的部分会有更新grub这一步操作,但是就像我说的,只需要make install就可以,这个命令会自动更新grub的

  • 查看-切换内核版本

你可以通过uname -a来查看当前内核版本,比如你当前系统内核是6.10.1,你下载了一个6.10.2的内核源码,在你编译安装切换之后,你输入命令能查看到你换了新版本的内核

  • 卸载内核

查看已经安装的内核

sudo dpkg --list | grep linux-image

linux-image.png

删除制定内核

sudo apt purge linux-image-6.1.0-23-amd64

然后重启就好了

你可以通过uname -a来查看当前内核版本,比如你当前系统内核是6.10.1,你下载了一个6.10.2的内核源码,在你编译安装切换之后,你输入命令能查看到你换了新版本的内核

怎么切换内核呢,如果是双系统或者虚拟机的话,在你安装完Linux操作系统,开机之后,应该能看到多了一些东西,那个叫做 UEFI引导,如图

UEFI.jpg

Advanced options for Debian GUN/Linux这个里面就可以选择系统内核,如果你安装成功之后,在这里面就可以看到你安装的内核(无视我脏掉的屏幕)

也可以直接选择第一个选项Debian GUN/Linux,默认情况下会直接启动最新的内核(最后安装的内核)

你编译最终产生的内核文件存放位置再linux/arch/(你电脑的架构)/boot/bzImage,架构的查看命令:uname -a,至于为什么说这个,以后会考的

那么,恭喜你,你已经成功的编译并替换Kernel了

最后修改:2025 年 04 月 02 日
如果觉得我的文章对你有用,请随意赞赏