Linux内核源码总体介绍—1
文章目录
- 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相关推荐
- linux内核源码系统调用有多少个,Linux内核源码目录介绍
Linux的内核源代码可以从很多途径得到,我一般常常去kernel.org看看.一般来讲,在安装的linux系统下,usr/src/linux目录下的东西就是内核源代码.源码的版本号有一个非常简单的编 ...
- Linux内核源码目录介绍
Linux内核目录如下: arch: 不同平台体系结构的相关代码 block:设备驱动 certs:与认证和签名相关代码 crypto:内核常用压缩算法.常用加密算法等等源代码 document:描述 ...
- Linux内核源码分析方法
说明:这是一个刚接触内核三个月的同学,通过对一个内核特性的分析,总结出一套分析内核的方法. 一.内核源码之我见 Linux内核代码的庞大令不少人"望而生畏",也正因为如此,使得人们 ...
- linux内核开发基础(linux内核源码、树莓派源码编译、SD卡挂载)
首先下载树莓派linux内核源码: 下载网址:https://github.com/raspberrypi/linux 在树莓派使用指令:uname -r查看当前树莓派的版本号,然后选择对应的linu ...
- Linux内核源码分析--内核启动之(4)Image内核启动(setup_arch函数)(Linux-3.0 ARMv7)【转】...
原文地址:Linux内核源码分析--内核启动之(4)Image内核启动(setup_arch函数)(Linux-3.0 ARMv7) 作者:tekkamanninja 转自:http://blog.c ...
- 【华为云技术分享】Linux内核源码结构(1)
在上一期中,我们介绍了Linux内核发展的历史,也介绍了与其相关的UNIX和GNU的相关知识.从这一期开始,我们将介绍Linux内核的源码结构.我们将先根据Linux源码的目录结构进行分析,到本文章发 ...
- linux的进程/线程/协程系列3:查看linux内核源码——vim+ctags/find+grep
linux的进程/线程/协程系列3:查看linux内核源码--vim+ctags/find+grep 前言 摘要: 1. 下载linux内核源码 2. 打标签方法:vim+ctags 2.1 安装vi ...
- Linux内核源码分析—从用户空间复制数据到内核空间
Linux内核源码分析-从用户空间复制数据到内核空间 本文主要参考<深入理解Linux内核>,结合2.6.11.1版的内核代码,分析从用户空间复制数据到内核空间函数. 1.不描述内核同步. ...
- 【linux内核-源码编译之centos7】
linux内核-源码编译之centos7 一. 为什么要编译内核 二.疑难杂症 三.演示环境 四.下载源码 4.1.两者源码区别 4.2.将获取到的源码放在/usr/src/kernels/ 下 五. ...
- linux内核代码研读与实战,Linux内核源码研读与实战演练
Linux内核源码研读与实战演练 网盘下载链接: http://pan.baidu.com/s/1fIYf0 密码: 341f 要是网盘失效了,请加我QQ: 3113533060 课程内容: 第1部分 ...
最新文章
- python控件词语_python文件中的词
- Struts 2创始人Patrick Lightbody看《精通Struts 2:Web 2.0开发实战 》
- 网站推广怎样实现网站设计吸引用户注意完成网站推广指标?
- python流程控制-Python流程控制
- 5.5.2 最小的N个和
- 108. 将有序数组转换为二叉搜索树(二分+搜索)
- 训练日志 2019.3.20
- element ui分页怎么做_vue+element-ui的分页完整版
- 基础编程题目集 6-1 简单输出整数 (10 分)
- 从有限状态机(FSM)到行为树(Behavior Tree)(1)
- spss分析方法-回归分析
- 模拟电路与数字电路基础知识点总结
- 股票涨跌的心理学原理: 过度自信理论
- 事后诸葛亮(葫芦娃队)
- java基础第四课(封装,继承,接口)
- WINPE WIN10 测试i9-9900k+2080TI\i9-9980XE+P5000\i7-8086k+titanX\E5-2678+128G跑分
- 怎么查电脑服务器的基本信息,怎么查电脑服务器的地址
- 基于KITTI数据集的无人驾驶感知与传感器融合实现—(0)—照猫画虎
- 为什么我的microsip在线却播不了电话?
- Mac安装鸿蒙系统,搭建MAC系统下的Wi-Fi loT Hi3861鸿蒙开发环境
热门文章
- python中如何下载安装库
- 【学员作品】我的电商类App 3.2.1居然被拒了,怎么破?(酷课堂iOS交流群问答整理201812期)
- Ubuntu/Linux 下切换 python 版本
- 无线充电原理与QI协议详解
- java jdk 安装教程_JDK下载安装配置教程(详细)
- jenkins连接Linux
- ModelSim 仿真教程
- 多变量遗传算法python代码_遗传算法介绍并附上Python代码
- 计算机显示的网络,如何设置在电脑右下角显示网络连接图标
- 计算机专业代码qian,专业分类号及学科代码对照表.doc