一、介绍
为了更好的学习内核,我想先从如何搭建一个简单的Linux系统开始,那么现在我首先想做的就是,编译内核,手搓自己的Linux发行版。毕竟前面介绍了它的文件系统,那么我们接下来就可以基于之前的只是手动搭建一个发行版的Linux系统!
那么我们首先考虑,如果要手搓一个Linux发行版,他的最主要的三个部件是什么?
- 引导分区
- 内核镜像
- 交互界面
有了这三个部分,那我们就已经拥有了一个基本的Linux操作系统了。接下来将详细介绍一下如何去实现一个Linux发行版的操作系统。
二、前提准备
2.1 硬件准备
一台能运行的主机
我这里运行的是20.04的虚拟机

2.2 内核准备
源代码下载:可以从https://kernel.org上下载相应的内核代码

我们从该网站上下载tarball版本到我们的虚拟机上。也可以使用wget 的方式下载相应的代码到主机当中
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.13.6.tar.xz
2.3 交互界面准备
交互界面我们使用busybox作为我们的交互界面:可以访问BusyBox下载
或者通过wget进行源码下载
wget https://www.busybox.net/downloads/busybox-1.37.0.tar.bz2
这是busybox的介绍:usybox是一个开源的、轻量级的软件工具集合,旨在提供一个精简的Unix工具集,适用于嵌入式系统和资源受限的环境。它将许多常用的Unix工具(如ls、cp、cat、mv、grep、find、telnet等)合并为一个可执行文件,从而减少了系统的存储空间和资源占用。
2.4 整理代码
为了更好地管理我们的代码,我们将上述的所有代码都整理到一个文件夹下
cd ~
mkdir linux

到此为止,最基本的源码准备已经完成。
三、具体操作
前提准备好了,那我们开始编译我们的源码吧!
3.1 编译内核源码
首先将我们的Linux打开
tar -xf linux-6.13.5.tar.xz
效果如下

随后进入linux源码包,并进行编译(这里使用默认配置):
make defconfig
如果你不懂make defconfig可以参考这篇文章Linux内核指令make defconfig做了什么事情-优快云博客
简言之,这行命令就是在编译的时候将一些参数设置为默认的参数,方便编译。如果有自己想要修改的参数,可以自己在CMakeLists.txt文件中增加。
编译结果如下:

随后进行编译
make -j8
如果编译期间遇到错误的话,可以将错误的原因自己复制到百度上进行查询(自己动手丰衣足食!)。像我在这里出现了fatal error: gelf.h: 没有那个文件或目录
后来查询才知道是缺少了相关的库文件,安装即可

最低0.47元/天 解锁文章
1227






