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 none /vendor/lib/gl_impl/swiftshader /vendor/lib/egl bind rec
    # Applies only to the 64 bit build, but should be harmless on the 32 bit
    mount none /vendor/lib64/gl_impl/swiftshader /vendor/lib64/egl bind rec
    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}

on init
    chown system root /dev/input_events
    chmod 0660 /dev/input_events
    restorecon /dev/input_events
    chown radio root /dev/ril
    chmod 0660 /dev/ril
    restorecon /dev/ril
    chown audioserver root /dev/audio_data
    chmod 0660 /dev/audio_data
    restorecon /dev/audio_data
    chown system root /dev/screen
    chmod 0660 /dev/screen
    restorecon /dev/screen

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


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

    start rename_eth0
    # works around framework netiface enumeration issue
    start rename_eth1

    # wait until rename_eth0 is done before attempting to stack wifi
    wait /proc/self/net/xt_qtaguid/iface_stat/buried_eth0
    start create_wifi

    # 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

    chmod 0755 /system/bin/dhcpcd_wlan0

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

on post-fs-data
    mkdir /data/dalvik-cache 0771 root root
    mkdir /data/dalvik-cache/x86 0771 root system
    mkdir /data/misc/dhcp-6.8.2 0755 dhcp root
    start gce_fs_monitor
    start vport_trigger

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

on early-boot
    start vsoc_input_service


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_forward_proxy
    start socket_vsock_proxy


on property:ro.boot.vsoc_e2e_test=1
    start vsoc_guest_region_e2e_test


service rename_eth0 /vendor/bin/rename_netiface eth0 buried_eth0
    oneshot


service rename_eth1 /vendor/bin/rename_netiface eth1 rmnet0
    oneshot


service create_wifi /vendor/bin/ip_link_add virt_wifi buried_eth0 wlan0
    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 vsoc_guest_region_e2e_test /vendor/bin/vsoc_guest_region_e2e_test
    user root
    group shell
    oneshot


service vsoc_input_service /vendor/bin/vsoc_input_service
    oneshot


service socket_forward_proxy /vendor/bin/socket_forward_proxy

service socket_vsock_proxy /vendor/bin/socket_vsock_proxy -guest_port=5555


service vport_trigger /vendor/bin/vport_trigger
    oneshot


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


on property:vendor.ser.cf-gadget-usb-v1=*
    symlink ${vendor.ser.cf-gadget-usb-v1} /dev/cf-gadget-usb-v1
    enable usbforward


service seriallogging /system/bin/logcat -b all -v threadtime -f /dev/cf-logcat *:V
    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 gce_fs_monitor /vendor/bin/gce_fs_monitor
    class late_start
    disabled
    oneshot


service usbforward /vendor/bin/usbforward /dev/cf-gadget-usb-v1
    class late_start
    user root
    disabled


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