在分析Kitkat加密功能的时候,在一些资料上看到一句话“对于加密后的系统,重启后,进入到输入密码界面,此时并没有完全加载Android系统,仅仅加载必要的服务”
那么这个必要的服务又是指的是那些服务呢?
在解答这个问题前我们先区分一下class core ,class main, class late_start。
这三个“class”,只是标识这个服务的类型是哪一个,然后通过调用class_start, class_reset, class_stop等命令的时候,来统一操作同一类的服务。
举个例子,从system/core/rootdir/init.rc文件中搜索“class main”可以搜到许多,例如有netd, ril-deamon服务被标识为class main,那么当我们调用class_start main命令时,所有标识为main的服务都会被启动,这里的netd ril-deamon就会被启动。对于core, late_start类的服务也是这样的。
这里以源代码中三星的manta为例进行演示:
class core 的服务如下:
序号 | service名称 | 所属文件 | 命令bin文件位置 |
1 | watchdogd | init.manta.rc | /sbin/watchdogd |
2 | watchdogd | init.recovery.manta.rc | /sbin/watchdogd |
3 | setup_fs | init.smdk5250.rc | /system/bin/setup_fs |
4 | ueventd | init.rc | /sbin/ueventd |
5 | logd | init.rc | /system/bin/logd |
6 |