从零开始的内核学习生活(二):自己制作一个简易版Linux系统

一、介绍

为了更好的学习内核,我想先从如何搭建一个简单的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: 没有那个文件或目录

后来查询才知道是缺少了相关的库文件,安装即可

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值