arch linux arm下载_Linux内核读书笔记(二) 从内核出发

本章主要介绍获取内核代码的途径,编译内核的步骤以及内核代码架构的简要说明。

获取内核源码


linux内核官网

https://www.kernel.org/

如下图所示,内核版本以及更新到5.9.11,由于我都本机linux内核版本为5.4.0,为了方便编译,这里都以该版本为例。

63097bce821373af27b0ace2d5edd421.png

git 仓库

git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

或下载压缩包

wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.tar.xz

国内镜像

由于网络的原因直接从官网下载代码会非常慢(实测4kbps),所以推荐使用国内镜像。国内的镜像有很多,本文使用五道口职业技术学校的镜像(https://mirrors.tuna.tsinghua.edu.cn/)

git仓库

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

或下载压缩包

wget https://mirrors.tuna.tsinghua.edu.cn/kernel/v5.x/linux-5.4.tar.xz

这下载速度超赞

7018947ccdb8e03d7c64be344734007a.png

解压

tar -Jxvf linux-5.4.tar.xz

内核编译对源码存放的位置没有要求,这里放在home目录下自建的~/linux文件,解压后的目录,

27fa17acb3b1ccc207b630674c9260a2.png

内核代码大概有900+M,56000+个文件,26000000+行代码。

内核源码树

目录简介如下:

目录内容
arch/

包含各体系结构特定的代码,如arm、x86、ia64、mips等,在每个体系结构目录下通常都有:

-boot 内核需要的特定平台代码

-kernel 体系结构特有的代码

-lib 通用函数在特定体系结构的实现

-math-emu 模拟FPU的代码,在ARM中,使用mach-xxx代替

-mm 特定体系结构的内存管理实现

-include 特定体系的头文件

block/存放块设备相关代码
crypto/存放加密、压缩、CRC校验等算法相关代码
Documentation/存放相关说明文档,很多实用文档,包括驱动编写等
drivers/存放Linux内核设备驱动程序源码。驱动源码在Linux内核源码中占了很大比例,常见外设几乎都有可参考源码,对驱动开发而言,该目录非常重要。该目录包含众多驱动,目录按照设备类别进行分类,如char、block、input、i2c、spi、pci、usb等
firmware/存放处理器相关的一些特殊固件
fs/存放所有文件系统代码,如fat、ext2、ext3、ext4、ubifs、nfs、sysfs等
include/存放内核所需、与平台无关的头文件,与平台相关的头文件已经被移动到arch平台的include目录,如ARM的头文件目录
init/包含内核初始化代码
ipc/存放进程间通信代码
kernel/包含Linux内核管理代码
lib/库文件代码实现
mm/存放内存管理代码
net/存放网络相关代码
samples/存放提供的一些内核编程范例,如kfifo;后者相关用户态编程范例,如hidraw
srcipts/存放一些脚本文件,如menuconfig脚本
security/存放系统安全性相关代码
sound存放声音、声卡相关驱动
tools/编译过程中一些主机必要工具

usr

cpio相关实现
virt/内核虚拟机KVM

内核编译

配置选项

linux内核采用模块化设计,可以有选择的配置哪些功能模块或驱动被编译到内核,所以在编译内核前首先要进行内核配置。系统提供了多种配置方式,在源码根目录下输入命令启动:

make config

这是最原始的配置方式,通过字符串页面对功能逐一配置,费时费力。

make menuconfig或make gconfig

这两种都是通过图形页面进行配置,效率明显提高。下图为menuconfig页面

4ffd80042ef88fc361bd468ebe00aa50.png

执行完之后会在根目录下生成.config文件,表示配置成功。

验证更新配置

make oldconfig

编译

make

大功告成。

交作业交作业

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值