专栏首页Linux内核及编程语言底层相关技术研究有了这张图,看谁还能阻拦我研究linux内核源码!

有了这张图,看谁还能阻拦我研究linux内核源码!

叮铃铃,其实并不是这张。


额,还是不太适应这种标题。

最近在写一个 linux内核启动流程分析 的系列文章,主要是想从源码角度,非常细致的给大家讲下linux内核是如何启动的。

目前已经写了几篇了,而且为了能让大家更好的理解,我还配了很多图,但这种方式还是有个问题,就是这些图都是从局部上讲解一个问题,到目前为止还没有一个内核的bzImage的全景图。

所以,今天花了些时间,好好的画了一张这样的图。

画这张图着实花了我不少时间,我已经尽量把细节画得丰富一些,但还是有一些没画上,这个后面如果用到会再补上。

这张图主要是配合 linux内核启动流程分析 这个系列文章来看的,不过在这里我还是简单说下这张图里描述的内容。

首先,当打包后的内核文件bzImage以efi application形式被uefi硬件启动时,uefi会根据pe格式来解析并加载内核代码。

pe的所有格式数据基本都在boot sector里,也就是第一个512字节。

当uefi启动bzImage时,会先根据SizeOfImage的大小为内核分配内存空间,然后根据section table的数据加载各个section的内容到指定内存。

从上图可以看到,各个section加载到内存的位置及大小基本上和其在bzImage文件的位置和大小一致,除了最后一个.text区,也就是我们的compressed kernel。

bzImage被加载到内存后,按顺序各个区块分别为boot sector, .setup, .reloc, .compat, .text,其中.text除了包括bzImage中的对应内容外,还有一大块空闲区域,用来后续解压内核。

当bzImage的数据被解析并加载完毕后,uefi会根据optional header里的AddressOfEntryPoint的值,即efi_pe_entry,来开始执行内核代码,后续的流程就是我们在内核启动分析系列文章里讲的了,有兴趣的可以去看看。

好,就这些,画图不易,可以的话,帮忙转发下或给个在看,谢谢。

本文分享自微信公众号 - Linux内核及JVM底层相关技术研究(ytcode),作者:wangyuntao

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-10-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 三个好用的并发工具类

    以前的文章中,我们介绍了太多的底层原理技术以及新概念,本篇我们轻松点,了解下 Java 并发包下、基于这些底层原理的三个框架工具类。

    Single
  • 如何高效的学习 Linux

    幸好大学学过操作系统,顺利过关入职了。当时还纳闷,我做开发,掌握语言不就好了,为什么还要掌握操作系统。

    iMike
  • 扎心的程序员,你不会修电脑一定懂操作系统吧!

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xmt1139057136/article/detai...

    业余草
  • 明尼苏达大学华人教授故意向Linux提交漏洞代码来做研究!整所大学被Linux列入黑名单......

    Linux内核是现代历史上最大的软件项目之一,已经拥有超过2800万行代码,来自世界各地和不同领域的贡献者每天都会向Linux内核维护者提交大量补丁,以便他们在...

    AI科技评论
  • 别怕,手把手带你撕、拉、扯下SpringMVC的外衣

    这是一个最经典的SpringMVC执行流程图,相信做Java开发的都看过,其中有三个核心的地方,分别是HandlerMapping、HandlerAdapter...

    Java知音
  • To be or Not to be - Linux社区禁止一所美国大学提交代码事件

    Greg Kroah-Hartman 是一名 Linux 内核主线分支的维护者,2021 年 4 月 22 日发布了一个申明,禁止一所美国大学试图以研究名义故意...

    开源社
  • 陈莉君: 中国台湾開源人年会之Linux内核之旅(附演讲PPT及讲解)

    今年是第一次参加COSCUP 开源人年会,到底与大家分享些什么,与社区大牛BOB沟通后,他建议我就分享自己这20年来的Linux内核之旅。

    Linux阅码场
  • Python3 与 C# 并发编程之~ 线程篇2

    其实以前的 Linux中是没有线程这个概念的, Windows程序员经常使用线程,这一看~方便啊,然后可能是当时程序员偷懒了,就把进程模块改了改(这就是为什么之...

    逸鹏
  • 震惊!亚马逊竟然做出这种事,让快递员可以随便进入你的家!

    镁客网
  • 基于角色的访问控制(RBAC)

    很多时候,需要对一些事物进行控制,如一个房间,为了不让人随便进,通常会装一把锁,如果要想进入,你必须得有一把钥匙,且还得和这个锁匹配才行。 基于此做一个抽象...

    腾讯NEXT学位
  • Envoy——Service Mesh体系中的私人订制,把你安排得明明白白!

    最近因工作原因开始了解Service Mesh与Envoy,为系统性梳理所学内容,因此沉淀了此文档,但由于所知有限,如文档中有描述不当之处,希望不吝赐教。

    heidsoft
  • React-native踩坑小记

    React-native踩坑小记 最近开始研究ReactNative咯,大概一两周了吧已经,略略说一下遇到的一些坑爹问题 问题一般都...

    贾顺名
  • Arch Summit全球架构师峰会在深举办 腾讯安全披露广告黑灰产对抗思路

    “我知道在广告上的投资有一半是无用的,但问题是我不知道是哪一半。” 这句20年前的“名言”至今仍然是数字广告业的核心挑战。但一个差别是,20年前广告主担心广告...

    腾讯云安全
  • 史上最强Android保活思路:深入剖析腾讯TIM的进程永生技术

    随着Android系统的不断升级,即时通讯网技术群和社区里的IM和推送开发的程序员们,对于进程保活这件事是越来越悲观,必竟系统对各种保活黑科技的限制越来越多了,...

    JackJiang
  • 回味:那些年折腾过的Linux操作系统

    大一之前一直用的XP,那时刚开始学C,用的turbo C 2.0,蓝色屏幕,界面老式古典。

    我的小碗汤
  • 基因编辑的创世引擎:有什么东西能让我们长生不老?

    镁客网
  • 再聊服务化基石:也有IO的事儿

    用户1682855
  • 腾讯研发效率领先的秘密:高效率的工具

    腾讯技术工程官方号
  • 云安全之虚拟机安全监控

    自云计算诞生以来,虚拟机监控一直是一个炙手可热的话题。从云服务商的角度,他们要尽可能地获取更多的关于VM(Virtual Machine)运行状态的信息,从而保...

    凌洛云

扫码关注云+社区

领取腾讯云代金券