欢迎来到天天文库
浏览记录
ID:37708750
大小:108.00 KB
页数:40页
时间:2019-05-29
《Android init 启动过程分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Androidinit启动过程分析分析android的启动过程,从内核之上,我们首先应该从文件系统的init开始,因为init是内核进入文件系统后第一个运行的程序,通常我们可以在linux的命令行中指定内核第一个调用谁,如果没指定那么内核将会到/sbin/,/bin/等目录下查找默认的init,如果没有找到那么就报告出错。下面是曾经用过的几种开发板的命令行参数:S3C2410启动参数:noinitrdroot=/dev/nfs nfsroot=192.168.2.56:/nfsroot/rootfs ip=192.168.
2、2.188:192.168.2.56:192.168.2.56:255.255.255.0::eth0:onconsole=ttySAC0S3C2440启动参数:setenvbootargsconsole=ttySAC0root=/dev/nfsnfsroot=192.168.2.56:/nfsroot/rootfsip=192.168.2.175:192.168.2.56:192.168.2.201:255.255.255.0::eth0:onmem=64Minit=/init marvell3
3、10启动参数:bootroot=/dev/nfsnfsroot=192.168.2.56:/nfsroot/rootfs,rsize=1024,wsize=1024ip=192.168.2.176:192.168.2.201:192.168.2.201:255.255.255.0::eth0:-Onconsole=ttyS2,115200mem=64Minit=/initinit的源代码在文件:./system/core/init/init.c中,init会一步步完成下面的任务:1.初始化log系统2.解析/init.rc和/init.%hardware%.rc文件
4、 3.执行early-initactioninthetwofilesparsedinstep2. 4.设备初始化,例如:在/dev下面创建所有设备节点,下载firmwares. 5.初始化属性服务器,Actuallythepropertysystemisworkingasasharememory.LogicallyitlookslikearegistryunderWindowssystem. 6.执行initactioninthetwofilesparsedinstep2.&nb
5、sp; 7.开启属性服务。8.执行early-bootandbootactionsinthetwofilesparsedinstep2. 9.执行Executepropertyactioninthetwofilesparsedinstep2. 10.进入一个无限循环towaitfordevice/propertyset/childprocessexitevents.例如,如果SD卡被插入,init会收到一个设备插入事件,它会为这个设备创建节点。系统中比较重要的进程都是由init来fork的,所以如果他们他谁崩溃了
6、,那么init将会收到一个SIGCHLD信号,把这个信号转化为子进程退出事件,所以在loop中,init会操作进程退出事件并且执行*.rc文件中定义的命令。例如,在init.rc中,因为有:servicezygote/system/bin/app_process-Xzygote/system/bin--zygote--start-system-server socketzygotestream666 onrestartwrite/sys/android_power/request_statewake
7、onrestartwrite/sys/power/stateon所以,如果zygote因为启动某些服务导致异常退出后,init将会重新去启动它。intmain(intargc,char**argv){ ... //需要在后面的程序中看打印信息的话,需要屏蔽open_devnull_stdio()函数 open_devnull_stdio(); ... //初始化log系统 log_init(); //解析/in
此文档下载收益归作者所有