temporaryなめも帳

だらだらと備忘録とか。誰かの為になることをねがって。

init.rcのon bootとかの呼び出し順

気になったので調べました。(このブログの成分は8割これな気がする。

on early-init
on init
on early-fs
on fs
on post-fs
on post-fs-data
on early-boot
on boot

※確認は4.4.3で行なってます。

以下コードから判断しました。 action_for_each_trigger関数がon hogeを読み出してるところ。

tree/system/core/init/init.c

int main(int argc, char **argv)
{
    // ...省略
    action_for_each_trigger("early-init", action_add_queue_tail);

    queue_builtin_action(wait_for_coldboot_done_action, "wait_for_coldboot_done");
    queue_builtin_action(mix_hwrng_into_linux_rng_action, "mix_hwrng_into_linux_rng");
    queue_builtin_action(keychord_init_action, "keychord_init");
    queue_builtin_action(console_init_action, "console_init");

    /* execute all the boot actions to get us started */
    action_for_each_trigger("init", action_add_queue_tail);

    /* skip mounting filesystems in special mode */
    if (!is_special) {
        action_for_each_trigger("early-fs", action_add_queue_tail);
        action_for_each_trigger("fs", action_add_queue_tail);
        action_for_each_trigger("post-fs", action_add_queue_tail);
        action_for_each_trigger("post-fs-data", action_add_queue_tail);
    }

    /* Repeat mix_hwrng_into_linux_rng in case /dev/hw_random or /dev/random
     * wasn't ready immediately after wait_for_coldboot_done
     */
    queue_builtin_action(mix_hwrng_into_linux_rng_action, "mix_hwrng_into_linux_rng");

    queue_builtin_action(property_service_init_action, "property_service_init");
    queue_builtin_action(signal_init_action, "signal_init");
    queue_builtin_action(check_startup_action, "check_startup");

    if (is_special) {
        action_for_each_trigger(bootmode, action_add_queue_tail);
    } else {
        action_for_each_trigger("early-boot", action_add_queue_tail);
        action_for_each_trigger("boot", action_add_queue_tail);
    }

        /* run all property triggers based on current state of the properties */
    queue_builtin_action(queue_property_triggers_action, "queue_property_triggers");

    /* run all device triggers based on current state of device nodes in /dev */
    queue_builtin_action(queue_device_triggers_action, "queue_device_triggers");