- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android60启动过程详细解析
Android 6.0启动过程详细解析
从代码角度仔细学习Android系统的启动过程,同时,学习Android启动过程中的初始化脚本语言,即init.rc中的语言语法。在这里,不在详细介绍Linux内核的启动过程,主要学习从Linux内核启动之后,init初始化是如何工作的,他是如何启动Android系统的第一个进程–Zygote进程。并且还会继续了解后面其他的进程是如何通过Zygote进程启动的。话不多说,我们现在就来气Android系统启动之路。
## Android系统启动流程图
我们都知道,Android系统内核是基于Linux内核,所以在Android系统启动过程中,首先启动Linux内核,Bootloader加载并启动Linux内核,内核启动完成之后,内核开始启动Android系统的init进程,然后init进程通过init.rc启动脚本语言的执行,来启动Zygote进程,作为Android其他进程的父进程,Zygote进程做完初始化工作之后,启动SystemServer来启动其他系统服务。
下面我们从init进程的启动开始学习。
int main(int argc, char** argv) {
if (!strcmp(basename(argv[0]), ueventd)) {
return ueventd_main(argc, argv);
}
if (!strcmp(basename(argv[0]), watchdogd)) {
return watchdogd_main(argc, argv);
}
// Clear the umask.
umask(0);
add_environment(PATH, _PATH_DEFPATH);
bool is_first_stage = (argc == 1) || (strcmp(argv[1], --second-stage) != 0);
// Get the basic filesystem setup we need put together in the initramdisk
// on / and then well let the rc file figure out the rest.
if (is_first_stage) {
mount(tmpfs, /dev, tmpfs, MS_NOSUID, mode=0755);
mkdir(/dev/pts, 0755);
mkdir(/dev/socket, 0755);
mount(devpts, /dev/pts, devpts, 0, NULL);
mount(proc, /proc, proc, 0, NULL);
mount(sysfs, /sys, sysfs, 0, NULL);
}
// We must have some place other than / to create the device nodes for
// kmsg and null, otherwise we wont be able to remount / read-only
// later on. Now that tmpfs is mounted on /dev, we can actually talk
// to the outside world.
open_devnull_stdio();
klog_init();
klog_set_level(KLOG_NOTICE_LEVEL);
NOTICE(init%s started!\n, is_first_stage ? : second stage);
if (!is_first_stage) {
// Indicate that booting is in progress to background fw loaders, etc.
close(open(/dev/.booting, O_WRONLY
您可能关注的文档
- 37六个国家日本印度俄罗斯澳大利亚美国巴西.doc
- 3DMAX教您制作精美高贵的高跟鞋模型.doc
- 3第一章任务三.终端安装与测试常用硬件检测工具.docx
- 3号机组脱硫系统2号氧化风机检修作业指导书.doc
- 4-3-3使用表格进行页面布局.doc
- 3流量计.doc
- 4-名词性从句.doc
- 3胶囊填充岗位标准操作规程.doc
- 4.1第4章 三维实体设计应用.doc
- 40吨锅炉脱硫技术方案(氧化镁法)塔外氧化循环-1.docx
- 2023年江苏省镇江市润州区中考生物二模试卷+答案解析.pdf
- 2023年江苏省徐州市邳州市运河中学中考生物二模试卷+答案解析.pdf
- 2023年江苏省苏州市吴中区中考冲刺数学模拟预测卷+答案解析.pdf
- 2023年江苏省南通市崇川区田家炳中学中考数学四模试卷+答案解析.pdf
- 2023年江西省吉安市中考物理模拟试卷(一)+答案解析.pdf
- 2023年江苏省泰州市海陵区九年级(下)中考三模数学试卷+答案解析.pdf
- 2023年江苏省苏州市高新二中中考数学二模试卷+答案解析.pdf
- 2023年江苏省南通市九年级数学中考复习模拟卷+答案解析.pdf
- 2023年江苏省南通市海安市九年级数学模拟卷+答案解析.pdf
- 2023年江苏省泰州市靖江外国语学校中考数学一调试卷+答案解析.pdf
文档评论(0)