6

linux学习1,内核源代码的下载,配置和编译

 3 years ago
source link: https://blog.popkx.com/linux-learning-1-download-configuration-and-compilation-of-kernel-source-code/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

linux学习1,内核源代码的下载,配置和编译

发表于 2018-12-08 15:12:55   |   已被 访问: 830 次   |   分类于:   Linux笔记   |   暂无评论

上一节介绍了 linux 的历史,本节一起来看看它的源代码树,然后我们尝试配置和编译内核。

下载 linux 内核

下载 linux 内核有两种方式,一是利用 git 下载,一是通过 http 下载。我都试了下,发现我的网络使用 git 下载比较慢,因此就采用 http 下载方式了。linux 内核的官网地址是:

4aeb7fba8578ec86fb02e0cdc0e97590.png

可以看出 linux 内核的最新版本已经是 v4.19.4 了。关于 linux 内核的版本命名规则,这里再啰嗦两句吧:

f536e7400847fa3be37c63f350f96b23.png

在一个特定的系列下,Linus 会定期发布新内核,每个新内核都是一个新的修订版本。比如 2.6 内核系列的第一个版本是 2.6.0,第二个版本是 2.6.1。这些修订版包含 BUG 修复,新驱动等一些新特性。通常,修订版本号为偶数,便表示是一个相对稳定,已经发行的版本;若为奇数,则表示还在开发中,目前不太稳定,运行总可能会出现比较大的问题的版本。

我们在官网首页点击 HTTP 方式,依次选择 linux -> kernel,就可以看到很多版本的 linux 内核了。

5c44af76cbc056cf6a5bc8fcc58c8b5b.png

一般来说,版本越靠后,内核就越完善,相对的,代码就会越复杂。作为学习,我决定从简单的开始,因此决定下载 v2.6.0版本。

选择好自己想下载的版本后,点击之,得到下载链接,在 linux 主机中新建 kernel 目录,执行以下命令:

wget -c https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/linux-2.6.0.tar.gz

可以看出,内核被下载下来了。

a091f7c20392565d987a57313ac155e4.png

接着,执行解压缩命令,就可以把内核解压了。
tar xf linux-2.6.0.tar.gz

我们使用 tree 命令查看代码树:

tree -L 2
75c55aeb755c3763a5673d849b4443ee.png

可以看出,linux 内核的代码组织的很清晰。

配置和编译 linux 内核

因为 linux 有太多功能,也支持太多硬件,因而在编译 linux 内核之前,需要我们先配置这些信息。这些配置项要么是二选一,要么是三选一。二选一好理解,就是“要”还是“不要”这个功能。三选一其实就是在二选一的基础上多了个 module 选择项,如果选择了该项,则编译时,这部分的功能实现代码是以模块的形式生成。

内核提供了一些工具用于配置内核,例如

make config

该工具会逐一遍历所有配置项,使用者可以选择 yes no 或者 module,不过逐一遍历会很麻烦,所以还可以使用基于 ncurse 库的图形配置界面工具:

make menuconfig

实在不知道如何配置,可以执行下面的命令进行默认配置:

make defconfig

配置的目的,就是高速 linux 内核代码我们将使用何种架构的机器运行它,以及我们需要它提供哪些功能。

我们先进入 linux 内核源码目录,执行以下几条命令:

cd linux-2.6.0
make defconfig
make menuconfig

意思就是先按照默认配置 linux 内核,再用打开图形界面,看看都有哪些配置项。执行完最后一条命令后,应该可以看到如下界面:

60bd110d9f4b31a32dc57da179a5d9b6.png

我们进入 loadable module support,发现有如下配置项,可以根据自己的需要取消或者选中。
b463eed754710df1846b83eaa598c408.png

配置完毕,就可以执行 make 命令编译了

make bzImage -j4

-j4 的意思是使用 4 个作业数来编译 linux 内核。默认情况下,make 值衍生一个作业,因为 Makefiles 经常会出现不正确的依赖信息,对于这些依赖,多个作业反而容易出错。但是,linux 内核不会出现不正确的依赖信息,因此可以增加作业数来加快编译工作。

8cad64cebcb214ebb7f76646ec8a7f43.png

可以看出,编译工作正在进行,稍后片刻,就会发现 Kernel: arch/x86_64/boot/bzImage is ready。

138153a995fcf180ccabac8aefe1b478.png

阅读更多:   Linux笔记


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK