• service之class core和class main


    class core 和class main有何不同

    在分析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 healthd init.rc /sbin/healthd
    7 console init.rc /system/bin/sh
    8 adbd init.rc /sbin/adbd
    9 servicemanager init.rc /system/bin/servicemanager
    10 vold init.rc /system/bin/vold

    可以看到,core服务都是系统最基本的服务,只要core服务全部启动,手机此时是可以运行的,但是却看不到东西,原因是framework没有启动。此时启动的都是C,C++的进程。此时是不能打电话的,因为ril-deamon没有启动

    class main的服务如下:

    序号 service名称 所属文件 命令bin文件位置
    1 p2p_supplicant init.manata.rc /system/bin/wpa_supplicant
    2 wpa_supplicant init.manata.rc /system/bin/wpa_supplicant
    3 dhcpcd_wlan0 init.manata.rc /system/bin/dhcpcd
    4 dhcpcd_p2p init.manata.rc /system/bin/dhcpcd
    5 dhcpcd_eth0 init.manata.rc /system/bin/dhcpcd
    6 dhcpcd_bt-pan init.manata.rc /system/bin/dhcpcd
    7 dhcpcd_bt-pan init.manata.rc /system/bin/dhcpcd
    8 iprenew_p2p init.manata.rc /system/bin/dhcpcd
    9 iprenew_eth0 init.manata.rc /system/bin/dhcpcd
    10 iprenew_bt-pan init.manata.rc /system/bin/dhcpcd
    11 gpsd init.manata.rc /system/vendor/bin/gpsd
    12 mobicore init.manata.rc /system/bin/mcDriverDaemon
    13 bugreport init.manata.rc /system/bin/dumpstate
    14 netd init.rc /system/bin/netd
    15 debuggerd init.rc /system/bin/debuggerd
    16 debuggerd64 init.rc /system/bin/debuggerd64
    17 ril-daemon init.rc /system/bin/rild
    18 surfaceflinger init.rc /system/bin/surfaceflinger
    19 drm init.rc /system/bin/drmserver
    20 media init.rc /system/bin/mediaserver
    21 bootanim init.rc /system/bin/bootanimation
    22 installd init.rc /system/bin/installd
    23 flash_recovery init.rc /system/etc/install-recovery.sh
    24 racoon init.rc /system/bin/racoon
    25 mtpd init.rc /system/bin/mtpd
    26 keystore init.rc /system/bin/keystore
    27 dumpstate init.rc /system/bin/dumpstate
    28 sshd init.rc /system/bin/start-ssh
    29 mdnsd init.rc /system/bin/mdnsd
    30 zygote init.zygote32_64.rc /system/bin/app_process
    31 zygote init.zygote32.rc /system/bin/app_process
    32 zygote init.zygote64.rc /system/bin/app_process64

    可以看到main的服务相对多一些,看到zygote了吧,由此可见main服务大部分是建立在java层或者与java层息息相关的系统服务。

    class late_start 的服务如下:

    序号 service名称 所属文件 命令bin文件位置
    1 sdcard init.manta.rc /system/bin/sdcard
    2 sdcard init.msmdk5250.rc /system/bin/sdcard

    在看Android手机加密的资料的时候,看到late_start服务,以为有很多呢.,但是一搜索才知道,坑爹啊,只有一个。

    由以上的简单分析,再来分析Kitkat手机加密功能的流程,和加密后的启动过程,就更加清晰了。

    其实手机加密完毕后,重启手机,进入输入密码界面,此时系统的core,main服务都已经启动,只有late_start服务没有启动,可以直接无视late_start。这样说来,此时手机的系统服务和正常状态下是一样的。我们想利用系统服务做什么都行啊。^_^

    原文链接:https://blog.csdn.net/longyc2010/article/details/39616979

  • 相关阅读:
    管道
    linux基本网络配置
    201671010130 201620172 《Java程序设计》第三周学习小结
    201671010130 201620172 《Java程序设计》第二周学习小结
    201671010130 201620172 《Java程序设计》第五周学习小结
    201671010130 201620172 《Java程序设计》首次与Java打交道
    朵的面向对象程序设计课程学习进度条
    201671010130 201620172 《Java程序设计》第六七周学习小结
    201671010130 201620172 《Java程序设计》第四周学习小结
    Note of Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14
  • 原文地址:https://www.cnblogs.com/SaraMoring/p/14393223.html
Copyright © 2020-2023  润新知