Linux内核源码总体介绍—1

本文介绍了Linux内核源码的总体结构,包括arch、drivers、fs、mm等关键目录的用途,并提供了源码阅读的裁剪建议。重点讲述了内核启动过程,从vmlinux.lds.S到head.s再到main.c,最后通过kernel_init启动init。建议使用SourceInsight软件进行源码查看,并给出了配置方法。
摘要由CSDN通过智能技术生成

1.源码总体介绍

学习linux内核最好的方式当然是阅读内核源码,内核源码下载:
https://www.kernel.org/
使用版本:linux-3.0.20

1.1源码目录介绍

在这里插入图片描述

文件夹简介
arch体系架构相关
block块设备管理
crypto算法相关
drivers驱动相关
firmware固件相关
fs文件系统
include公共的头文件
init内核启动的初始化代码
ipc进程通信
kernel内核最核心的模块,进程调度等
lib内核公用的库函数
mm内存管理模块
net网络子系统
samples内核参考示例代码
scripts脚本文件
security安全相关
sound音频处理相关
tools一些linux工具
usr内核启动相关的
virt虚拟机相关

linux内核主要包括:
文件系统、内存管理、进程调度、网络管理
驱动管理五大子系统。
驱动管理:管理系统的硬件接口,如iic spi pcie等驱动
进程调度:进程调度包括调度策略、进程切换等
网络管理:协议栈tcp/ip协议、arp协议等
内存管理:物理内存管理、虚拟内存管理、内存映射等内容
文件系统:vfs proc等文件系统
其他:中断、定时器、进程通信等

内核源码学习是一个漫长的过程,不要一下淹没在源码的海洋中,不知如何入手,用普通电脑的source insight软件进行加载源码可能需要几分钟,我们可以对其进行适当裁剪。
例如,我们主要研究基于arm的内核,那么我们可以对部分文件进行裁剪,源码多采用c语言的函数指针进行挂接,因此不影响阅读。
arch 目录,主要是处理器相关的,可以删除不需要的,留下arm arm64;
drivers目录,内核驱动相关的,此目录占据了源码的大部分,可以裁剪掉一部分暂时不需要的,留下iic spi gpio uart等常用的;

1.2 使用source insight软件查看内核源代码

使用软件:windows可使用source insight进行大型项目查看
source insight默认是不支持汇编代码的查看的,需要进行简单配置,
在Options->Document Options->File filter中增加.S .s .asm文件;
在Project->Add and Remove Project Files增加文件即可;
在这里插入图片描述

2.内核启动过程简介

内核源码主线: 个人建议学习应把握主线,逐渐细化,这也是每一个大型项目所共有的学习思路。
把握主线:即linux内核启动过程
逐渐细化:即深入学习进程调度、内存管理、驱动管理、文件系统、网络管理等模块
内核启动过程:内核作为uboot与应用程序的桥梁,uboot的宿命是启动内核,启动完之后uboot就结束了,启动内核后第一句指令为head.s的stext处,最终的出口则为加载init程序,从而启动应用程序。和uboot不同的是,内核为应用程序提供文件系统、驱动管理、进程调度等系统支撑,一直运行。


arch/arm/kernel/vmlinux.lds.S
arch/arm/kernel/head.s
kernel/init/main.c
从vmlinux.lds.S我们了解到内核入口为head.s的stext处,经过简短的汇编处理后最终会调用main.c的start_kernel,最终通过rest_init调用kernel_init启动init(嵌入式一般为busybox生成的linuxrc,最终调用etc中rcS脚本启动应用程序)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值