文章目录

  • 1.源码总体介绍
    • 1.1源码目录介绍
    • 1.2 使用source insight软件查看内核源代码
  • 2.内核启动过程简介

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脚本启动应用程序)。

Linux内核源码总体介绍—1相关推荐

  1. linux内核源码系统调用有多少个,Linux内核源码目录介绍

    Linux的内核源代码可以从很多途径得到,我一般常常去kernel.org看看.一般来讲,在安装的linux系统下,usr/src/linux目录下的东西就是内核源代码.源码的版本号有一个非常简单的编 ...

  2. Linux内核源码目录介绍

    Linux内核目录如下: arch: 不同平台体系结构的相关代码 block:设备驱动 certs:与认证和签名相关代码 crypto:内核常用压缩算法.常用加密算法等等源代码 document:描述 ...

  3. Linux内核源码分析方法

    说明:这是一个刚接触内核三个月的同学,通过对一个内核特性的分析,总结出一套分析内核的方法. 一.内核源码之我见 Linux内核代码的庞大令不少人"望而生畏",也正因为如此,使得人们 ...

  4. linux内核开发基础(linux内核源码、树莓派源码编译、SD卡挂载)

    首先下载树莓派linux内核源码: 下载网址:https://github.com/raspberrypi/linux 在树莓派使用指令:uname -r查看当前树莓派的版本号,然后选择对应的linu ...

  5. Linux内核源码分析--内核启动之(4)Image内核启动(setup_arch函数)(Linux-3.0 ARMv7)【转】...

    原文地址:Linux内核源码分析--内核启动之(4)Image内核启动(setup_arch函数)(Linux-3.0 ARMv7) 作者:tekkamanninja 转自:http://blog.c ...

  6. 【华为云技术分享】Linux内核源码结构(1)

    在上一期中,我们介绍了Linux内核发展的历史,也介绍了与其相关的UNIX和GNU的相关知识.从这一期开始,我们将介绍Linux内核的源码结构.我们将先根据Linux源码的目录结构进行分析,到本文章发 ...

  7. linux的进程/线程/协程系列3:查看linux内核源码——vim+ctags/find+grep

    linux的进程/线程/协程系列3:查看linux内核源码--vim+ctags/find+grep 前言 摘要: 1. 下载linux内核源码 2. 打标签方法:vim+ctags 2.1 安装vi ...

  8. Linux内核源码分析—从用户空间复制数据到内核空间

    Linux内核源码分析-从用户空间复制数据到内核空间 本文主要参考<深入理解Linux内核>,结合2.6.11.1版的内核代码,分析从用户空间复制数据到内核空间函数. 1.不描述内核同步. ...

  9. 【linux内核-源码编译之centos7】

    linux内核-源码编译之centos7 一. 为什么要编译内核 二.疑难杂症 三.演示环境 四.下载源码 4.1.两者源码区别 4.2.将获取到的源码放在/usr/src/kernels/ 下 五. ...

  10. linux内核代码研读与实战,Linux内核源码研读与实战演练

    Linux内核源码研读与实战演练 网盘下载链接: http://pan.baidu.com/s/1fIYf0 密码: 341f 要是网盘失效了,请加我QQ: 3113533060 课程内容: 第1部分 ...

最新文章

  1. python控件词语_python文件中的词
  2. Struts 2创始人Patrick Lightbody看《精通Struts 2:Web 2.0开发实战 》
  3. 网站推广怎样实现网站设计吸引用户注意完成网站推广指标?
  4. python流程控制-Python流程控制
  5. 5.5.2 最小的N个和
  6. 108. 将有序数组转换为二叉搜索树(二分+搜索)
  7. 训练日志 2019.3.20
  8. element ui分页怎么做_vue+element-ui的分页完整版
  9. 基础编程题目集 6-1 简单输出整数 (10 分)
  10. 从有限状态机(FSM)到行为树(Behavior Tree)(1)
  11. spss分析方法-回归分析
  12. 模拟电路与数字电路基础知识点总结
  13. 股票涨跌的心理学原理: 过度自信理论
  14. 事后诸葛亮(葫芦娃队)
  15. java基础第四课(封装,继承,接口)
  16. WINPE WIN10 测试i9-9900k+2080TI\i9-9980XE+P5000\i7-8086k+titanX\E5-2678+128G跑分
  17. 怎么查电脑服务器的基本信息,怎么查电脑服务器的地址
  18. 基于KITTI数据集的无人驾驶感知与传感器融合实现—(0)—照猫画虎
  19. 为什么我的microsip在线却播不了电话?
  20. Mac安装鸿蒙系统,搭建MAC系统下的Wi-Fi loT Hi3861鸿蒙开发环境

热门文章

  1. python中如何下载安装库
  2. 【学员作品】我的电商类App 3.2.1居然被拒了,怎么破?(酷课堂iOS交流群问答整理201812期)
  3. Ubuntu/Linux 下切换 python 版本
  4. 无线充电原理与QI协议详解
  5. java jdk 安装教程_JDK下载安装配置教程(详细)
  6. jenkins连接Linux
  7. ModelSim 仿真教程
  8. 多变量遗传算法python代码_遗传算法介绍并附上Python代码
  9. 计算机显示的网络,如何设置在电脑右下角显示网络连接图标
  10. 计算机专业代码qian,专业分类号及学科代码对照表.doc