如下图所示: 当early-init这个触发条件产生时,依次执行下面的命令1、命令2、命令3、命令4 【改文件位于system/core/rootdir/init.rc】 源码实现思想: 当相应的事件发生后,系统就会对init.rc中的各个触发条件进行匹配,只要匹配成功就会把这个动作加到“命令执行队列的尾部”,等待执行。如果已经存在是不会再次添加的。
early-init:早期初始化时触发,早于所有其他初始化步骤。 init:在 init 进程启动后触发。 late-init:在所有其他初始化步骤完成后触发,但在启动第一个 Service 之前。 post-fs:在文件系统挂载后触发。 post-fs-data:在 /data 分区挂载后触发。 post-early-init:在早期初始化步骤之后但 init 进程启动之前触发。
这里要提到的是,我们要修改的init.rc文件在device/friendly-arm/nanopi3目录下,也就是厂商定制的版本,如果你使用的是别的开发板,可以去相应的目录找找。我们来看看init.rc中on和service两个典型的定义: on early-init # Set init and its forked children's oom_adj. write /proc/1/oom_score_adj -1000 #...
5) 在 Android 系统的 init.rc 文件: platform/system/core/rootdir/init.rc 中通过如下方式 来启动 ueventd 进程: on early-init # Set init and its forked children's oom_adj. write /proc/1/oom_adj -16 start ueventd if (!strcmp(basename(argv[0]), "ueventd")) return ueventd_main(argc, a...
signal_handler_init();//初始化子进程退出的信号处理过程 property_load_boot_defaults();//加载default.prop文件 start_property_service();//启动属性服务器(通过socket通信) init_parse_config_file("/init.rc");//解析init.rc文件 //执行rc文件中触发器为 on early-init的语句 ...
2.1】signal_handler_init();//加载default.prop文件property_load_boot_defaults();//启动属性服务器,此处会调用epoll_ctl设置property fd可读的回调函数【见小节5.2】start_property_service();//解析init.rc文件init_parse_config_file("/init.rc");//执行rc文件中触发器为on early-init的语句action_for_each...
启动顺序:on early-init -> init -> late-init -> boot Service(服务):是一个程序,他在初始化时启动,并在退出时重启(可选),由init进程启动,一般运行于另外一个init的子进程,所以启动service前需要判断对应的可执行文件是否存在。init生成的子进程,定义在rc文件,其中每一个service,在启动时会通过fork方式生成...
set_is_odm_etc_init_loaded(true); } // Turning this on and letting the INFO logging be discarded adds 0.2s to // Nexus 9 boot time, so it's disabled by default. if (false) parser.DumpState(); ActionManager& am = ActionManager::GetInstance(); am.QueueEventTrigger("early-init"); ...
以上脚本中,on early-init、on init就是 Action类型的语句,语法格式为: on <trigger> [&& <trigger>]* //设置触发器 //动作触发之后要执行的命令 Service(服务):服务是init进程启动的程序、当服务退出时init进程会视情况重启服务,语法格式为: service <name> <pathname...
on on early-init:在初始化早期阶段触发 on init:在初始化阶段触发 on late-init:在初始化晚期阶段触发 on boot/charger:当系统启动/充电时触发 on property:当属性值满足条件时触发 (二)、commands(命令) command是action的命令列表中的命令,或者是service中的选项 onrestart 的参数命令 命令将在所属事件发生时...