android系统启动过程(三) init.rc

在init进程中    parser.ParseConfig("/init.rc");

init.rc  AOSP/system/core/rootdir/init.rc   

    android初始化语言

//部分代码截取
...
import /init.${ro.hardware}.rc
import /vendor/etc/init/hw/init.${ro.hardware}.rc
import /init.usb.configfs.rc
import /init.${ro.zygote}.rc

on early-init
    # Set init and its forked children's oom_adj.
    write /proc/1/oom_score_adj -1000
...

主要包含5中类型语句    Action、Command、Service、Option、Import

[Import]  Import:导入脚本


[Action]  on:  on early-init、on early-boot、on boot、on init、on trigger 

on    [&& ]*  //设置触发器

     

                       //触发后执行的命令
on property:sys.boot_from_charger_mode=1
    class_stop charger
    trigger late-init

 


[Service]  Service:创建service      

service      []*    //service名字  执行程序路径  传递参数

  
//这里以 init.zygote64.rc  为例

service zygote /system/bin/app_process64 -Xzygote /system/bin --zygote --start-system-server
    class main
    priority -20
    user root                                         
    group root readproc                                
    socket zygote stream 660 root system
    onrestart write /sys/android_power/request_state wake
    onrestart write /sys/power/state on
    ...

[setprop]  

setprop net.tcp.default_init_rwnd 60
generic_x86_64:/ # get prop
/system/bin/sh: get: not found
127|generic_x86_64:/ # get proc                                                
/system/bin/sh: get: not found
127|generic_x86_64:/ # getproc                                                 
/system/bin/sh: getproc: not found
127|generic_x86_64:/ # getprop                                                 
[dalvik.vm.appimageformat]: [lz4]
[dalvik.vm.dex2oat-Xms]: [64m]
[dalvik.vm.dex2oat-Xmx]: [512m]
[dalvik.vm.dexopt.secondary]: [true]
[dalvik.vm.heapsize]: [192m]
[dalvik.vm.image-dex2oat-Xms]: [64m]
[dalvik.vm.image-dex2oat-Xmx]: [64m]
generic_x86_64:/ # getprop | grep "sys.sysctl.extra_free_kbytes"               
[sys.sysctl.extra_free_kbytes]: [4500]

值得注意的是Android8.0  中对init.rc做了拆分每一个服务对应一个rc文件,例如Zygote启动脚本在  init.zygoteXX.rc中定义

init.zygote64.rc    AOSP/system/core/rootdir/init.rc

service zygote /system/bin/app_process64 -Xzygote /system/bin --zygote --start-system-server
    class main
    priority -20
    user root
    group root readproc
    socket zygote stream 660 root system
    onrestart write /sys/android_power/request_state wake
    onrestart write /sys/power/state on
    onrestart restart audioserver
    onrestart restart cameraserver
    onrestart restart media
    onrestart restart netd
    onrestart restart wificond
    writepid /dev/cpuset/foreground/tasks

代码分析

通知init进程创建zygote进程 

进程执行程序的路径为  /system/bin/app_process64  

后面传递进去的参数  -Xzygote /system/bin --zygote --start-system-server

class name:  指的是zygote进程的classname为main

你可能感兴趣的:(java,android)