Linux内核学习之路_1_编译Linux内核
Posted 17岁boy想当攻城狮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux内核学习之路_1_编译Linux内核相关的知识,希望对你有一定的参考价值。
1.1 学习环境
本系列教程使用的环境如下:
操作系统版本:
Linux ubuntu 18.04
Linux内核版本:
cat /proc/version
Linux version 4.15.0-20-generic (buildd@lgw01-amd64-039)\\
(gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018
学习的Linux内核版本:
linux-4.10.15
1.2 下载Linux内核源码
首先我们需要下载Linux-4.10.15内核,我们可以直接使用wget下载:
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.10.15.tar.xz
下载完成之后就会看到一个名为 “linux-4.10.15.tar.xz”的文件,可以看到后缀格式是.tar.xz,双重压缩格式
1.3 解压Linux内核
双重压缩格式,我们依次解压先用“xz”命令解压:
xz -d linux-4.10.15.tar.xz
-d是代表解压的意思
解压完成后就会在当前目录看到一个名为“linux-4.10.15.tar”,解压完xz后还有一重tar,在使用tar命令解压一次就可以得到原内核文件,这里建议解压到/usr/src目录下,这里没有别的意思,是Linux内核开发者们给我的建议,这个在行业里是一个开发标准,一般Linux源代码都是放在这个目录下,你可以在任何发行版里的这个目录下看到他们所使用的Linux内核源码
sudo tar -xf linux-4.10.15.tar -C /usr/src/.
之后我们就可以在/usr/src目录下看到我们的linux源码了,同时还有发行版的
随后我们进入到这个目录下,查看一下这个目录的文件体系
cd linux-4.10.15
1.4 目录结构介绍
/arch
不同CPU架构下的核心代码。其中的每一个子目录都代表Linux支持的CPU架构
/block
块设备通用函数
/crypto
常见的加密算法的C语言实现代码,譬如crc32、md5、sha1等
/Documentation
说明文档,对每个目录的具体作用进行说明
/drivers
内核中所有设备的驱动程序,其中的每一个子目录对应一种设备驱动
/firmware
固件代码
/fs
Linux支持的文件系统代码,及各种类型的文件的操作代码。每个子目录都代表Linux支持的一种文件系统类型
/include
内核编译通用的头文件
/init
内核初始化的核心代码
/ipc
内核中进程间的通信代码
/kernel
内核的核心代码,此目录下实现了大多数Linux系统的内核函数。与处理器架构相关的内核代码在/kernel/
A
R
C
H
/
k
e
r
n
e
l
/
l
i
b
内
核
共
用
的
函
数
库
,
与
处
理
器
架
构
相
关
的
库
在
/
k
e
r
n
e
l
/
ARCH/kernel /lib 内核共用的函数库,与处理器架构相关的库在/kernel/
ARCH/kernel/lib内核共用的函数库,与处理器架构相关的库在/kernel/ARCH/lib
/mm
内存管理代码,譬如页式存储管理内存的分配和释放等。与具体处理器架构相关的内存管理代码位于/arch/$ARCH/mm目录下
/net
网络通信相关代码
/samples
示例代码
/scripts
用于内核配置的脚本文件,用于实现内核配置的图形界面
/security
安全性相关的代码
/tools
Linux中的常用工具
/usr
内核启动相关的代码
/virt
内核虚拟机相关的代码
1.2.2 Linux内核配置
在我们进入到Linux内核目录后使用‘“sudo make x86_64”
以上是关于Linux内核学习之路_1_编译Linux内核的主要内容,如果未能解决你的问题,请参考以下文章