on early-fs
    start vold

on fs
    mount_all /vendor/etc/fstab.ranchu --early

on late-fs
    # Mount RW partitions which need run fsck
    mount_all /vendor/etc/fstab.ranchu --late

on early-init
    mount proc proc /proc remount hidepid=2,gid=3009

    # true if ram is <= 2G
    setprop ro.config.low_ram ${ro.boot.config.low_ram}
    setprop ro.cpuvulkan.version ${ro.boot.qemu.cpuvulkan.version}
    setprop ro.hardware.egl ${ro.boot.hardwareegl:-emulation}
    setprop ro.hardware.vulkan ${ro.boot.hardware.vulkan}
    setprop ro.opengles.version ${ro.boot.opengles.version}
    setprop dalvik.vm.heapsize ${ro.boot.dalvik.vm.heapsize:-192m}
    setprop dalvik.vm.checkjni ${ro.boot.dalvik.vm.checkjni}
    setprop debug.hwui.renderer ${ro.boot.debug.hwui.renderer:-opengl}
    setprop debug.stagefright.ccodec ${ro.boot.debug.stagefright.ccodec}
    setprop debug.sf.nobootanimation ${ro.boot.debug.sf.nobootanimation}
    setprop vendor.qemu.dev.bootcomplete 0

    start vendor.dlkm_loader
    exec u:r:modprobe:s0 -- /system/bin/modprobe -a -d /system/lib/modules zram.ko

on init
    write /sys/block/zram0/comp_algorithm lz4
    write /proc/sys/vm/page-cluster 0

    #
    # EAS uclamp interfaces
    #
    mkdir /dev/cpuctl/foreground
    mkdir /dev/cpuctl/background
    mkdir /dev/cpuctl/top-app
    mkdir /dev/cpuctl/rt
    chown system system /dev/cpuctl
    chown system system /dev/cpuctl/foreground
    chown system system /dev/cpuctl/background
    chown system system /dev/cpuctl/top-app
    chown system system /dev/cpuctl/rt
    chown system system /dev/cpuctl/tasks
    chown system system /dev/cpuctl/foreground/tasks
    chown system system /dev/cpuctl/background/tasks
    chown system system /dev/cpuctl/top-app/tasks
    chown system system /dev/cpuctl/rt/tasks
    chmod 0664 /dev/cpuctl/tasks
    chmod 0664 /dev/cpuctl/foreground/tasks
    chmod 0664 /dev/cpuctl/background/tasks
    chmod 0664 /dev/cpuctl/top-app/tasks
    chmod 0664 /dev/cpuctl/rt/tasks

    start qemu-props

on post-fs-data
    mkdir /data/vendor/var 0755 root root
    mkdir /data/vendor/var/run 0755 root root

    start qemu-device-state
    start ranchu-adb-setup

on zygote-start
    # Create the directories used by the Wireless subsystem
    mkdir /data/vendor/wifi 0771 wifi wifi
    mkdir /data/vendor/wifi/wpa 0770 wifi wifi
    mkdir /data/vendor/wifi/wpa/sockets 0770 wifi wifi

on boot
    chown root system /sys/power/wake_lock
    chown root system /sys/power/wake_unlock

    # Create an unused USB gadget to allow sysfs testing
    mkdir /config/usb_gadget/g1 0770 root root

service vendor.dlkm_loader /vendor/bin/dlkm_loader
    class main
    user root
    group root system
    disabled
    oneshot

service ranchu-setup /vendor/bin/init.ranchu-core.sh
    user root
    group root
    oneshot
    disabled

service ranchu-adb-setup /system_ext/bin/init.ranchu.adb.setup.sh
    user system
    group shell
    stdio_to_kmsg
    disabled
    oneshot

on property:vendor.qemu.vport.gnss=*
    symlink ${vendor.qemu.vport.gnss} /dev/gnss0

on property:vendor.qemu.timezone=*
    setprop persist.sys.timezone ${vendor.qemu.timezone}

on property:dev.bootcomplete=1 && property:vendor.qemu.dev.bootcomplete=0
    setprop vendor.qemu.dev.bootcomplete 1
    start qemu-props-bootcomplete
    start ranchu-setup

on post-fs-data && property:ro.boot.qemu.virtiowifi=1
    start ranchu-net

service ranchu-net /vendor/bin/init.ranchu-net.sh
    class late_start
    user root
    group root wakelock wifi
    oneshot
    disabled    # Started on post-fs-data

service dhcpclient_wifi /vendor/bin/dhcpclient -i wlan0 --no-gateway
    user root
    group root
    disabled

service dhcpclient_def /vendor/bin/dhcpclient -i eth0 --no-gateway
    user root
    group root
    disabled

# The qemu-props program is used to set various system
# properties on boot. It must be run early during the boot
# process to avoid race conditions with other daemons that
# might read them (e.g. surface flinger), so define it in
# class 'core'
#
service qemu-props /vendor/bin/qemu-props
    user root
    group root
    oneshot
    disabled

service qemu-props-bootcomplete /vendor/bin/qemu-props "bootcomplete"
    user root
    group root
    oneshot
    disabled

service qemu-device-state /vendor/bin/init_ranchu_device_state.sh
    user root
    group root
    oneshot
    disabled
    stdio_to_kmsg

service goldfish-logcat /system/bin/logcat -f /dev/hvc1 ${ro.boot.logcat}
    class main
    user logd
    group root logd

service bugreport /system/bin/dumpstate -d -p -z
    class main
    disabled
    oneshot
    keycodes 114 115 116

service wpa_supplicant /vendor/bin/hw/wpa_supplicant -Dnl80211 -iwlan0 -c/vendor/etc/wifi/wpa_supplicant.conf -g@android:wpa_wlan0
    interface aidl android.hardware.wifi.supplicant.ISupplicant/default
    socket wpa_wlan0 dgram 660 wifi wifi
    group system wifi inet
    oneshot
    disabled
    user root

on property:vendor.qemu.vport.bluetooth=*
    symlink ${vendor.qemu.vport.bluetooth} /dev/bluetooth0

service bt_vhci_forwarder /vendor/bin/bt_vhci_forwarder -virtio_console_dev=/dev/bluetooth0
    class main
    user bluetooth
    group root bluetooth

on property:vendor.qemu.vport.uwb=*
    symlink ${vendor.qemu.vport.uwb} /dev/hvc2
    start vendor.uwb_hal

service vendor.uwb_hal /vendor/bin/hw/android.hardware.uwb-service /dev/hvc2
    class hal
    user uwb
    disabled

# Enable zram only once per boot. From:

# We want one opportunity per boot to enable zram, so we
# use a trigger we fire from the above stanza. If
# persist.sys.zram_enabled becomes true after boot,
# we don't want to run swapon_all at that time.

on property:sys.boot_completed=1
    trigger sys-boot-completed-set

on sys-boot-completed-set && property:persist.sys.zram_enabled=1
    swapon_all /vendor/etc/fstab.${ro.hardware}