on early-init
#    loglevel 8
    symlink /sdcard /storage/sdcard0
    mkdir /var/run 0755 root root
    mkdir /var/run/media 0755 media root
    mkdir /var/run/system 0755 system root
    mkdir /dev/gce 0750
    chown system system /dev/gce

    mount debugfs debugfs /sys/kernel/debug
    chmod 0755 /sys/kernel/debug
    setprop service.adb.tcp.port 5555
    setprop ro.sf.lcd_density ${ro.boot.lcd_density}
    setprop ro.setupwizard.mode ${ro.boot.setupwizard_mode}

    # Disable the rootcanal test console as it violates selinux policy
    setprop bt.rootcanal_test_console off


on init
    # ZRAM setup
    write /sys/block/zram0/comp_algorithm lz4


on fs
    mount_all /vendor/etc/fstab.${ro.hardware}
    restorecon_recursive /vendor

    start setup_wifi
    # works around framework netiface enumeration issue
    start rename_eth1


    # TODO(ender): Find better way to talk to serial port.
    chmod 622 /dev/kmsg

    # for GCE camera HAL
    mkdir /var/media 0770 audio media

    chmod 0664 /sys/kernel/debug/ieee80211/phy1/hwsim/group
    chmod 0664 /sys/kernel/debug/ieee80211/phy1/hwsim/ps
    chmod 0664 /sys/kernel/debug/ieee80211/phy0/rc/fixed_rate_idx
    chmod 0664 /sys/kernel/debug/ieee80211/phy0/hwsim/group
    chmod 0664 /sys/kernel/debug/ieee80211/phy0/hwsim/ps
    chmod 0664 /sys/kernel/debug/ieee80211/phy1/rc/fixed_rate_idx

on post-fs
    # Set netd memlock rlimit to 8MB b/119279144
    setrlimit 8 8388608 8388608

on post-fs-data
    start vport_trigger


on late-fs
    write /dev/kmsg "GUEST_BUILD_FINGERPRINT: ${ro.build.fingerprint}"


on boot
    chmod 0660 /dev/cpuctl
    mkdir /data/vendor/wifi 0770 wifi wifi
    mkdir /data/vendor/wifi/wpa 0770 wifi wifi
    mkdir /data/vendor/wifi/wpa/sockets 0770 wifi wifi
    start socket_vsock_proxy


service setup_wifi /vendor/bin/setup_wifi
    oneshot


service rename_eth1 /vendor/bin/rename_netiface eth1 rmnet0
    oneshot


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


# 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 sys-boot-completed-set && property:persist.sys.zram_enabled=1
    swapon_all /vendor/etc/fstab.${ro.hardware}


service socket_vsock_proxy /vendor/bin/socket_vsock_proxy -tcp_port=5555 -vsock_port=6520


service vport_trigger /vendor/bin/vport_trigger
    oneshot


on property:vendor.ser.cf-logcat=*
    symlink ${vendor.ser.cf-logcat} /dev/cf-logcat
    enable seriallogging


service seriallogging /system/bin/logcat -b all -v threadtime -f /dev/cf-logcat *:V
    class main
    user root
    disabled


on property:ro.boot.vsock_logcat_port=*
   enable vsock_logcat


service vsock_logcat /vendor/bin/vsock_logcat
    class main
    user root
    disabled


service wpa_supplicant /vendor/bin/hw/wpa_supplicant -g@android:wpa_wlan0
    interface android.hardware.wifi.supplicant@1.0::ISupplicant default
    interface android.hardware.wifi.supplicant@1.1::ISupplicant default
    socket wpa_wlan0 dgram 660 wifi wifi
    group system wifi inet
    disabled
    oneshot


service bugreport /system/bin/dumpstate -d -p -B -z -o /sdcard/bugreport
    class main
    disabled
    oneshot
    keycodes 30 48
