What is the list of all Android Init Language triggers?

In the /init.rc file and other “.rc” files for the Android Init Language, “action” sections may appear that run: “on” to execute a sequence of commands when an event occurs during the initialization process. What is the list of all “triggers”? It looks like there are some key keyword triggers, such as “boot”, “init”, “fs”, “early init” and “post-fs-data”. Is this a complete list? In code somewhere? (In addition to trigger keywords, there are some expression triggers, see below.)

Some of the keyword triggers I've seen would be nice to know when and why they are called:

boot early-init init fs post-fs-data charger nonencrypted 

In addition to keywords, examples of expressions include:

 property:ro.factory.tool=1 -- when a property is set to a value device-added-<path> -- Triggered when a node is added when the equipment device-removed-<path> -- When the device is removed to add nodes service-exited-<name> 
+7
android triggers init
source share
5 answers

You can also list it on a real phone using adb:

 adb shell dmesg | grep "processing action" [ 4.376074] init: processing action 0x35480 (init) [ 4.440537] init: processing action 0x38c58 (init) [ 4.450009] init: processing action 0x35708 (early-fs) [ 5.531812] init: processing action 0x39c38 (console_init) [ 5.575831] init: processing action 0x2de70 (fs) [ 5.597799] init: processing action 0x35890 (fs) [ 7.089157] init: processing action 0x2df58 (post-fs) [ 7.091550] init: processing action 0x38cb8 (post-fs) [ 7.091818] init: processing action 0x2e288 (post-fs-data) [ 7.100189] init: processing action 0x39c80 (property_service_init) [ 7.110080] init: processing action 0x39cc8 (signal_init) [ 7.110177] init: processing action 0x39d10 (check_startup) [ 7.110248] init: processing action 0x2ea18 (boot) [ 7.126205] init: processing action 0x397e0 (boot) [ 8.183090] init: processing action 0x39d58 (queue_property_triggers) [ 8.183232] init: processing action 0x2f8f8 (nonencrypted) [ 8.183810] init: processing action 0x2fd98 (property:ro.debuggable=1) [ 8.184463] init: processing action 0x328f8 (property:sys.usb.config=none) [ 14.438626] init: processing action 0x2ffd0 (property:sys.sensors=1) [ 28.192393] init: processing action 0x31860 (property:sys.boot_completed=1) 
+7
source share

Note: during recording, all links point to AOSP android-5.1.1_r18

Triggers can be defined by developers (supporting devices), so we cannot hope to find a complete list. But, assuming that you are most interested in those that are included in AOSP by default, here's the flow:

Actions processed in the platform / system / kernel / init / init.c via action_for_each_trigger() :

  • early-init
  • init
  • charger or late-init

If charger is the last trigger encountered, then this is the end of a specific AOSP list. Manufacturers can complement the following steps for charging offmode here.

If late-init is the last trigger encountered, then init.rc is launched by default, which is included in Android ( platform / system / core / rootdir / init.rc ) launch of the following triggers:

 # Mount filesystems and start core system services. on late-init trigger early-fs trigger fs trigger post-fs trigger post-fs-data # Load properties from /system/ + /factory after fs mount. Place # this in another action so that the load will be scheduled after the prior # issued fs triggers have completed. trigger load_all_props_action # Remove a file to wake up anything waiting for firmware. trigger firmware_mounts_complete trigger early-boot trigger boot 
+6
source share

There are a few keywords that everyone knows, but if you want to see a list of settable properties (and others that are by default), try this adb command:

 $ adb shell getprop [alsa.mixer.capture.headset]: [Capture] [alsa.mixer.capture.master]: [Capture] [alsa.mixer.playback.headset]: [Headphone] [alsa.mixer.playback.master]: [Playback] [alsa.mixer.playback.speaker]: [Playback] [back_camera_name]: [ov5640_mipi] [back_camera_orient]: [0] [camera.disable_zsl_mode]: [1] [dalvik.vm.dexopt-flags]: [m=y] [dalvik.vm.heapgrowthlimit]: [64m] [dalvik.vm.heapmaxfree]: [8m] [dalvik.vm.heapminfree]: [512k] [dalvik.vm.heapsize]: [384m] [dalvik.vm.heapstartsize]: [8m] [dalvik.vm.heaptargetutilization]: [0.75] [dalvik.vm.jniopts]: [warnonly] [dalvik.vm.stack-trace-file]: [/data/anr/traces.txt] [debug.egl.hw]: [1] [debug.force_rtl]: [0] [debug.sf.enable_hgl]: [1] [debug.sf.showfps]: [0] [dev.bootcomplete]: [1] [dhcp.eth0.result]: [failed] [front_camera_name]: [ov5642_camera,ov5640_camera] [front_camera_orient]: [0] [gsm.current.phone-type]: [1] [gsm.network.type]: [Unknown] [gsm.operator.alpha]: [] [gsm.operator.iso-country]: [] [gsm.operator.isroaming]: [false] [gsm.operator.numeric]: [] [gsm.ril.delay]: [15] [gsm.sim.state]: [NOT_READY] [hwc.enable_dither]: [1] [hwc.stretch.filter]: [1] [init.svc.adbd]: [running] [init.svc.bootanim]: [stopped] [init.svc.console]: [running] [init.svc.debuggerd]: [running] [init.svc.dhcpcd_eth0]: [stopped] [init.svc.drm]: [running] [init.svc.fuse_extsd]: [running] [init.svc.healthd]: [running] [init.svc.installd]: [running] [init.svc.keystore]: [running] [init.svc.media]: [running] [init.svc.netd]: [running] [init.svc.sdcard]: [running] [init.svc.servicemanager]: [running] [init.svc.surfaceflinger]: [running] [init.svc.ueventd]: [running] [init.svc.uim]: [stopped] [init.svc.vold]: [running] [init.svc.wifi_mac]: [stopped] [init.svc.zygote]: [running] [media.omxgm.enable-player]: [1] [media.omxgm.enable-record]: [1] [media.omxgm.enable-scan]: [1] [net.bt.name]: [Android] [net.change]: [net.qtaguid_enabled] [net.hostname]: [android-c49d34ff0fbd9f6] [net.qtaguid_enabled]: [1] [net.tcp.buffersize.default]: [4096,87380,110208,4096,16384,110208] [net.tcp.buffersize.edge]: [4093,26280,35040,4096,16384,35040] [net.tcp.buffersize.ethernet]: [524288,2097152,4194304,524288,2097152,4194304] [net.tcp.buffersize.evdo]: [4094,87380,262144,4096,16384,262144] [net.tcp.buffersize.gprs]: [4092,8760,11680,4096,8760,11680] [net.tcp.buffersize.hsdpa]: [4094,87380,262144,4096,16384,262144] [net.tcp.buffersize.hspa]: [4094,87380,262144,4096,16384,262144] [net.tcp.buffersize.hspap]: [4094,87380,1220608,4096,16384,1220608] [net.tcp.buffersize.hsupa]: [4094,87380,262144,4096,16384,262144] [net.tcp.buffersize.lte]: [524288,1048576,2097152,262144,524288,1048576] [net.tcp.buffersize.umts]: [4094,87380,110208,4096,16384,110208] [net.tcp.buffersize.wifi]: [524288,1048576,2097152,262144,524288,1048576] [persist.service.bdroid.bdaddr]: [22:22:12:0c:fb:0d] [persist.sys.dalvik.vm.lib]: [libdvm.so] [persist.sys.profiler_ms]: [0] [persist.sys.usb.config]: [mtp,adb] [qemu.hw.mainkeys]: [1] [ro.FSL_AAC_PARSER]: [1] [ro.FSL_ASF_PARSER]: [0] [ro.FSL_AVI_PARSER]: [1] [ro.FSL_FLAC_PARSER]: [1] [ro.FSL_FLV_PARSER]: [1] [ro.FSL_MKV_PARSER]: [1] [ro.FSL_MPG2_PARSER]: [1] [ro.FSL_REAL_PARSER]: [0] [ro.adb.secure]: [1] [ro.allow.mock.location]: [1] [ro.baseband]: [unknown] [ro.board.platform]: [imx6] [ro.boot.bootdev]: [mmcblk3] [ro.boot.hardware]: [freescale] [ro.boot.serialno]: [19b80271c6] [ro.bootloader]: [unknown] [ro.bootmode]: [unknown] [ro.build.characteristics]: [tablet] [ro.build.date.utc]: [1484264053] [ro.build.date]: [Thu Jan 12 17:34:13 CST 2017] [ro.build.description]: [nitrogen6x-eng 4.4.3 2.0.1-ga 20160816 dev-keys] [ro.build.display.id]: [nitrogen6x-eng 4.4.3 2.0.1-ga 20160816 dev-keys] [ro.build.fingerprint]: [boundary/nitrogen6x/nitrogen6x:4.4.3/2.0.1-ga/20160816:eng/dev-keys] [ro.build.host]: [fbd-HP-ZBook-15] [ro.build.id]: [2.0.1-ga] [ro.build.product]: [nitrogen6x] [ro.build.tags]: [dev-keys] [ro.build.type]: [eng] [ro.build.user]: [fbd] [ro.build.version.codename]: [REL] [ro.build.version.incremental]: [20160816] [ro.build.version.release]: [4.4.3] [ro.build.version.sdk]: [19] [ro.carrier]: [unknown] [ro.config.alarm_alert]: [Alarm_Classic.ogg] [ro.config.notification_sound]: [OnTheHunt.ogg] [ro.crypto.state]: [unencrypted] [ro.debuggable]: [1] [ro.factorytest]: [0] [ro.hardware]: [freescale] [ro.kernel.android.checkjni]: [1] [ro.opengles.version]: [196608] [ro.product.board]: [] [ro.product.brand]: [boundary] [ro.product.cpu.abi2]: [armeabi] [ro.product.cpu.abi]: [armeabi-v7a] [ro.product.device]: [nitrogen6x] [ro.product.locale.language]: [en] [ro.product.locale.region]: [US] [ro.product.manufacturer]: [boundary] [ro.product.model]: [NITROGEN6X] [ro.product.name]: [nitrogen6x] [ro.revision]: [405522] [ro.ril.wake_lock_timeout]: [300] [ro.runtime.firstboot]: [582594834] [ro.secure]: [0] [ro.serialno]: [19b80271c6] [ro.sf.hwrotation]: [0] [ro.sf.lcd_density]: [160] [ro.tether.denied]: [false] [ro.wifi.channels]: [] [ro.zygote.disable_gl_preload]: [true] [rw.VIDEO_RENDER_NAME]: [video_render.surface] [service.bootanim.exit]: [1] [sys.boot_completed]: [1] [sys.emulated.battery]: [1] [sys.interactive]: [active] [sys.sysctl.extra_free_kbytes]: [12000] [sys.usb.config]: [mtp,adb] [sys.usb.state]: [mtp,adb] [system_init.startsurfaceflinger]: [0] [vold.post_fs_data_done]: [1] [wifi.ap.interface]: [wlan0] [wifi.interface]: [wlan0] [wlan.interface]: [wlan0] 

I am running Android 4.4.2 on a Sabrelite Boundary Devices board. See the link for the getprop adb command here . For more information, see the blog .

0
source share

I know this is late, but if someone is still facing a problem, I decided to answer it. At the beginning of Init - Install init and its forked children oom_adj Set the security context for the entire init process. during initialization - configure the global environment Create attachment points on fs - mount mtd partitions on post-fs - change the resolution of system directories on post-fs data - change the resolution / data folders and subfolders at boot - basic network init, start service servicemanager memory management system manager to manage all native services such as location, audio, general settings, etc. zygote service - run zygote as app_process

The source of the above information is http://www.onsandroid.com/2014/10/in-depth-android-boot-sequence-process.html

0
source share

The most efficient way to find all of these standard triggers is to run grep on the word “trigger” in all *.rc files in system/core/rootdir .

 grep trigger rootdir/* 
0
source share

All Articles