洪荒之初(其实不算是,kernel已经起来了)
从androidsrc/system/core/init.c开始
int main(){
......
init_parse_config_file("/init.rc");
/******************************************
*这里去打开文件系统根目录下的init.rc文件,这里可以去先看下init.rc文件内部的格式
*内部调用parse_config(fn, data);
*parse_config(fn, data);会把init.rc文件解析后传给parse_new_section(&state, kw, nargs, args);
void parse_new_section(struct parse_state *state, int kw,
int nargs, char **args)
{
printf("[ %s %s ]\n", args[0],
nargs > 1 ? args[1] : "");
switch(kw) {
case K_service:
state->context = parse_service(state, nargs, args);
if (state->context) {
state->parse_line = parse_line_service;
return;
}
break;
case K_on:
state->context = parse_action(state, nargs, args);
if (state->context) {

本文从androidsrc/system/core/init.c的main函数出发,详细解析Android系统的启动过程,包括读取init.rc配置文件,解析service和trigger,加载硬件相关脚本,并按照触发器顺序执行命令。在无限循环中,系统不断轮询并执行action队列,重启必要服务。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



