import /init.recovery.logd.rc
import /init.recovery.ldconfig.rc
import /init.recovery.mksh.rc
import /init.recovery.nano.rc
import /init.recovery.usb.rc
import /init.recovery.service.rc
import /init.recovery.vold_decrypt.rc
import /init.recovery.${ro.hardware}.rc

on early-init
    # Apply strict SELinux checking of PROT_EXEC on mmap/mprotect calls.
    write /sys/fs/selinux/checkreqprot 0

    # Set the security context for the init process.
    # This should occur before anything else (e.g. ueventd) is started.
    setcon u:r:init:s0

    # Set the security context of /postinstall if present.
    restorecon /postinstall

    # ueventd wants to write to /acct
    mount cgroup none /acct cpuacct
    mkdir /acct/uid

    start ueventd

service set_permissive /sbin/permissive.sh
    oneshot
    seclabel u:r:recovery:s0

on init
    export PATH /sbin:/system/bin
    export LD_LIBRARY_PATH /sbin

    export ANDROID_ROOT /system
    export ANDROID_DATA /data
    export EXTERNAL_STORAGE /sdcard

    mkdir /system
    mkdir /data
    mkdir /cache
    mkdir /sideload
    mount tmpfs tmpfs /tmp

    chown root shell /tmp
    chmod 0775 /tmp

    write /proc/sys/kernel/panic_on_oops 1
    write /proc/sys/vm/max_map_count 1000000

on fs
    mount pstore pstore /sys/fs/pstore
    mkdir /dev/usb-ffs 0770 shell shell
    mkdir /dev/usb-ffs/adb 0770 shell shell
    mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000

on boot
    ifup lo
    hostname localhost
    domainname localdomain

    class_start default

# Load properties, pre-Android 6.0
on load_all_props_action
    load_all_props

# Load properties, Android 6.0+
on load_system_props_action
    load_system_props

# Load properties, Android 6.0+, vendor init lives here
on load_persist_props_action
    load_persist_props

on firmware_mounts_complete
    rm /dev/.booting

# Mount filesystems and start core system services.
on late-init
    trigger early-fs
    trigger fs
    trigger post-fs
    trigger post-fs-data

    # Load properties, pre-Android 6.0
    trigger load_all_props_action

    # 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_system_props_action

    # Load properties, Android 6.0+, vendor init lives here
    trigger load_persist_props_action

    # Remove a file to wake up anything waiting for firmware
    trigger firmware_mounts_complete

    trigger early-boot
    trigger boot

on property:sys.powerctl=*
   powerctl ${sys.powerctl}

service ueventd /sbin/ueventd
    critical
    seclabel u:r:ueventd:s0

service adbd /sbin/adbd --root_seclabel=u:r:su:s0 --device_banner=recovery
    disabled
    socket adbd stream 660 system system
    seclabel u:r:adbd:s0

# Always start adbd on userdebug and eng builds
on property:ro.debuggable=1
    #write /sys/class/android_usb/android0/enable 1
    #start adbd
    setprop service.adb.root 1

# Restart adbd so it can run as root
on property:service.adb.root=1
    write /sys/class/android_usb/android0/enable 0
    restart adbd
    write /sys/class/android_usb/android0/enable 1
