1on early-fs
2    start vold
3
4on fs
5    mount_all /vendor/etc/fstab.ranchu --early
6
7on late-fs
8    # Mount RW partitions which need run fsck
9    mount_all /vendor/etc/fstab.ranchu --late
10
11on early-init
12    mount proc proc /proc remount hidepid=2,gid=3009
13
14    # true if ram is <= 2G
15    setprop ro.config.low_ram ${ro.boot.config.low_ram}
16    setprop ro.cpuvulkan.version ${ro.boot.qemu.cpuvulkan.version}
17    setprop ro.hardware.egl ${ro.boot.hardwareegl:-emulation}
18    setprop ro.hardware.vulkan ${ro.boot.hardware.vulkan}
19    setprop ro.opengles.version ${ro.boot.opengles.version}
20    setprop dalvik.vm.heapsize ${ro.boot.dalvik.vm.heapsize:-192m}
21    setprop dalvik.vm.checkjni ${ro.boot.dalvik.vm.checkjni}
22    # default skiagl: skia uses gles to render
23    # option skiavk: skia uses vulkan to render
24    setprop debug.hwui.renderer ${ro.boot.debug.hwui.renderer:-skiagl}
25    # default skiaglthreaded: skia uses gles to render in a separate thread
26    # option skiagl: skia uses gles to render
27    # option skiavk: skia uses vulkan to render
28    # option skiavkthreaded: skia uses vulkan to render in separate thread
29    # option empty: skia uses graphite
30    setprop debug.renderengine.backend ${ro.boot.debug.renderengine.backend:-skiaglthreaded}
31    setprop debug.stagefright.ccodec ${ro.boot.debug.stagefright.ccodec}
32    setprop debug.sf.nobootanimation ${ro.boot.debug.sf.nobootanimation}
33    setprop debug.angle.feature_overrides_enabled ${ro.boot.hardware.angle_feature_overrides_enabled}
34    setprop debug.angle.feature_overrides_disabled ${ro.boot.hardware.angle_feature_overrides_disabled}
35    setprop vendor.qemu.dev.bootcomplete 0
36
37    start vendor.dlkm_loader
38    exec u:r:modprobe:s0 -- /system/bin/modprobe -a -d /system/lib/modules zram.ko
39
40on init
41    write /sys/block/zram0/comp_algorithm lz4
42    write /proc/sys/vm/page-cluster 0
43
44    #
45    # EAS uclamp interfaces
46    #
47    mkdir /dev/cpuctl/foreground
48    mkdir /dev/cpuctl/background
49    mkdir /dev/cpuctl/top-app
50    mkdir /dev/cpuctl/rt
51    chown system system /dev/cpuctl
52    chown system system /dev/cpuctl/foreground
53    chown system system /dev/cpuctl/background
54    chown system system /dev/cpuctl/top-app
55    chown system system /dev/cpuctl/rt
56    chown system system /dev/cpuctl/tasks
57    chown system system /dev/cpuctl/foreground/tasks
58    chown system system /dev/cpuctl/background/tasks
59    chown system system /dev/cpuctl/top-app/tasks
60    chown system system /dev/cpuctl/rt/tasks
61    chmod 0664 /dev/cpuctl/tasks
62    chmod 0664 /dev/cpuctl/foreground/tasks
63    chmod 0664 /dev/cpuctl/background/tasks
64    chmod 0664 /dev/cpuctl/top-app/tasks
65    chmod 0664 /dev/cpuctl/rt/tasks
66
67    start qemu-props
68
69on post-fs-data
70    mkdir /data/vendor/var 0755 root root
71    mkdir /data/vendor/var/run 0755 root root
72
73    start qemu-device-state
74    start ranchu-adb-setup
75
76on zygote-start
77    # Create the directories used by the Wireless subsystem
78    mkdir /data/vendor/wifi 0771 wifi wifi
79    mkdir /data/vendor/wifi/wpa 0770 wifi wifi
80    mkdir /data/vendor/wifi/wpa/sockets 0770 wifi wifi
81
82on boot
83    chown root system /sys/power/wake_lock
84    chown root system /sys/power/wake_unlock
85
86    # Create an unused USB gadget to allow sysfs testing
87    mkdir /config/usb_gadget/g1 0770 root root
88
89service vendor.dlkm_loader /vendor/bin/dlkm_loader
90    class main
91    user root
92    group root system
93    disabled
94    oneshot
95
96service ranchu-setup /vendor/bin/init.ranchu-core.sh
97    user root
98    group root
99    oneshot
100    disabled
101
102service ranchu-adb-setup /system_ext/bin/init.ranchu.adb.setup.sh
103    user system
104    group shell
105    stdio_to_kmsg
106    disabled
107    oneshot
108
109on property:vendor.qemu.vport.gnss=*
110    symlink ${vendor.qemu.vport.gnss} /dev/gnss0
111
112on property:vendor.qemu.timezone=*
113    setprop persist.sys.timezone ${vendor.qemu.timezone}
114
115on property:dev.bootcomplete=1 && property:vendor.qemu.dev.bootcomplete=0
116    setprop vendor.qemu.dev.bootcomplete 1
117    start qemu-props-bootcomplete
118    start ranchu-setup
119    start ranchu-adb-setup
120
121on post-fs-data && property:ro.boot.qemu.virtiowifi=1
122    start ranchu-net
123
124service ranchu-net /vendor/bin/init.ranchu-net.sh
125    class late_start
126    user root
127    group root wakelock wifi
128    oneshot
129    disabled    # Started on post-fs-data
130
131service dhcpclient_wifi /vendor/bin/dhcpclient -i wlan0 --no-gateway
132    user root
133    group root
134    disabled
135
136service dhcpclient_def /vendor/bin/dhcpclient -i eth0 --no-gateway
137    user root
138    group root
139    disabled
140
141# The qemu-props program is used to set various system
142# properties on boot. It must be run early during the boot
143# process to avoid race conditions with other daemons that
144# might read them (e.g. surface flinger), so define it in
145# class 'core'
146#
147service qemu-props /vendor/bin/qemu-props
148    user root
149    group root
150    oneshot
151    disabled
152
153service qemu-props-bootcomplete /vendor/bin/qemu-props "bootcomplete"
154    user root
155    group root
156    oneshot
157    disabled
158
159service qemu-device-state /vendor/bin/init_ranchu_device_state.sh
160    user root
161    group root
162    oneshot
163    disabled
164    stdio_to_kmsg
165
166service goldfish-logcat /system/bin/logcat -f /dev/hvc1 ${ro.boot.logcat}
167    class main
168    user logd
169    group root logd
170
171service bugreport /system/bin/dumpstate -d -p -z
172    class main
173    disabled
174    oneshot
175    keycodes 114 115 116
176
177service wpa_supplicant /vendor/bin/hw/wpa_supplicant -Dnl80211 -iwlan0 -c/vendor/etc/wifi/wpa_supplicant.conf -g@android:wpa_wlan0
178    interface aidl android.hardware.wifi.supplicant.ISupplicant/default
179    socket wpa_wlan0 dgram 660 wifi wifi
180    group system wifi inet
181    oneshot
182    disabled
183    user root
184
185on property:vendor.qemu.vport.bluetooth=*
186    symlink ${vendor.qemu.vport.bluetooth} /dev/bluetooth0
187
188service bt_vhci_forwarder /vendor/bin/bt_vhci_forwarder -virtio_console_dev=/dev/bluetooth0
189    class main
190    user bluetooth
191    group root bluetooth
192
193on property:vendor.qemu.vport.uwb=*
194    symlink ${vendor.qemu.vport.uwb} /dev/hvc2
195    start vendor.uwb_hal
196
197service vendor.uwb_hal /vendor/bin/hw/android.hardware.uwb-service /dev/hvc2
198    class hal
199    user uwb
200    disabled
201
202# Enable zram only once per boot. From:
203
204# We want one opportunity per boot to enable zram, so we
205# use a trigger we fire from the above stanza. If
206# persist.sys.zram_enabled becomes true after boot,
207# we don't want to run swapon_all at that time.
208
209on property:sys.boot_completed=1
210    trigger sys-boot-completed-set
211    start vendor.ril-daemon
212
213on sys-boot-completed-set && property:persist.sys.zram_enabled=1
214    swapon_all /vendor/etc/fstab.${ro.hardware}
215