系统启动原理
文章平均质量分 56
系统启动原理
Cheson_chen
专注 探索 勤奋
展开
-
Android启动流程和原理分析一
本篇介绍Android开机流程的第一个环节,从bootloader到kernel的启动。源码版本为Android11。1. 在bootloader中这一长串代码都是在做操作系统引导启动的初始化,包括cpu、中断、定时器等。4. 至此,kernel开始做自己的初始化了。在这里的最后会去启动init进程。3. 调用到kernel_init函数中。2. 开始调用引导内核启动的函数。原创 2023-08-17 17:48:44 · 217 阅读 · 1 评论 -
Android启动流程和原理分析二
第二个阶段的初始化主要做的事情也比较单纯:包括一些初始化动作,然后是解析initrc文件中的Action并执行,最后就进入死循环等待一些指令到来之后的处理。2. 检查初始化需要使用的一些分区挂载情况,初始化printf等标准输入输出的重定向,初始化kernel log,AVB等,就会转入selinux的初始化流程。从kernel启动init进程,走到init的main函数,未传入参数的情况下,会走FirstStageMain的流程。那么init是如何解析和执行initrc中的指令的?原创 2023-08-17 17:52:45 · 257 阅读 · 1 评论 -
Android启动流程和原理分析三
定义了32位的zygote和64位的zygote,两者的区别:1、两者都用app_process,但是带了不同的后缀;2、64位app_process启动时多了一个—start-system-server的参数,可见是它启动了SystemServer,而32位的仅是—socket-name不同,用作了32位进程的孵化。在init第二阶段的初始化最后,只触发了early-init,init,charger或者late-init,那么是如何启动后续的一些daemon进程以及最重要的zygote呢?原创 2023-08-17 18:00:14 · 230 阅读 · 1 评论 -
Android启动流程和原理分析四
接上一篇的流程,在Zygote初始化过程中,如果传入了startSystemServer参数,那么会调用forkSystemServer来创建SystemServer进程。接下来流程就进入到SystemServer进程的main函数中,也就是开始走这个Framework核心进程的初始化。1. 在一个运行的系统中能够看到SystemServer的进程号永远都是1000,原来是在这里被硬编码了。这一篇介绍从Zygote启动到SystemServer的流程,分析的源码版本为Android11。原创 2023-08-17 18:02:39 · 114 阅读 · 1 评论