# # Copyright (C) 2016 The Android Open-Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # import init.${ro.hardware}.usb.rc import init.${ro.hardware}.diag.rc import init.${ro.hardware}.logging.rc on charger write /sys/devices/system/cpu/cpu2/online 0 write /sys/devices/system/cpu/cpu3/online 0 write /sys/devices/system/cpu/cpu4/online 0 write /sys/devices/system/cpu/cpu5/online 0 write /sys/devices/system/cpu/cpu6/online 0 write /sys/devices/system/cpu/cpu7/online 0 wait /dev/block/bootdevice service charger /charger class charger seclabel u:r:charger:s0 on early-init mount debugfs debugfs /sys/kernel/debug chmod 0755 /sys/kernel/debug on init # Loading kernel modules in background start insmod_sh # Support legacy paths symlink /sdcard /mnt/sdcard symlink /sdcard /storage/sdcard0 # disable thermal hotplug for thermal write /sys/module/msm_thermal/core_control/enabled 0 # bring back all cores write /sys/devices/system/cpu/cpu0/online 1 write /sys/devices/system/cpu/cpu1/online 1 write /sys/devices/system/cpu/cpu2/online 1 write /sys/devices/system/cpu/cpu3/online 1 write /sys/devices/system/cpu/cpu4/online 1 write /sys/devices/system/cpu/cpu5/online 1 write /sys/devices/system/cpu/cpu6/online 1 write /sys/devices/system/cpu/cpu7/online 1 # configure governor settings for little cluster write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "sched" # configure governor settings for big cluster write /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor "sched" start power_sh # enable all cores for all cpuset during boot write /dev/cpuset/top-app/cpus 0-7 write /dev/cpuset/foreground/cpus 0-7 write /dev/cpuset/foreground/boost/cpus 0-7 write /dev/cpuset/background/cpus 0-7 write /dev/cpuset/system-background/cpus 0-7 # set default schedTune value for foreground/top-app write /dev/stune/foreground/schedtune.prefer_idle 1 write /dev/stune/top-app/schedtune.boost 10 write /dev/stune/top-app/schedtune.prefer_idle 1 # Setup cpusets used by the VR services. mkdir /dev/cpuset/kernel 0750 root system write /dev/cpuset/kernel/cpus 0 write /dev/cpuset/kernel/mems 0 chown system system /dev/cpuset/kernel/tasks chmod 0660 /dev/cpuset/kernel/tasks mkdir /dev/cpuset/system 0750 root system write /dev/cpuset/system/cpus 0 write /dev/cpuset/system/mems 0 chown system system /dev/cpuset/system/tasks chmod 0660 /dev/cpuset/system/tasks mkdir /dev/cpuset/system/performance 0750 root system write /dev/cpuset/system/performance/cpus 0 write /dev/cpuset/system/performance/mems 0 chown system system /dev/cpuset/system/performance/tasks chmod 0660 /dev/cpuset/system/performance/tasks mkdir /dev/cpuset/system/background 0750 root system write /dev/cpuset/system/background/cpus 0 write /dev/cpuset/system/background/mems 0 chown system system /dev/cpuset/system/background/tasks chmod 0660 /dev/cpuset/system/background/tasks mkdir /dev/cpuset/application 0750 root system write /dev/cpuset/application/cpus 0 write /dev/cpuset/application/mems 0 chown system system /dev/cpuset/application/tasks chmod 0660 /dev/cpuset/application/tasks mkdir /dev/cpuset/application/performance 0750 root system write /dev/cpuset/application/performance/cpus 0 write /dev/cpuset/application/performance/mems 0 chown system system /dev/cpuset/application/performance/tasks chmod 0660 /dev/cpuset/application/performance/tasks mkdir /dev/cpuset/application/background 0750 root system write /dev/cpuset/application/background/cpus 0 write /dev/cpuset/application/background/mems 0 chown system system /dev/cpuset/application/background/tasks chmod 0660 /dev/cpuset/application/background/tasks # Create UDS structure for base VR services. mkdir /dev/socket/pdx 0775 system system mkdir /dev/socket/pdx/system 0775 system system mkdir /dev/socket/pdx/system/buffer_hub 0775 system system mkdir /dev/socket/pdx/system/performance 0775 system system mkdir /dev/socket/pdx/system/vr 0775 system system mkdir /dev/socket/pdx/system/vr/display 0775 system system mkdir /dev/socket/pdx/system/vr/pose 0775 system system mkdir /dev/socket/pdx/system/vr/sensors 0775 system system on fs wait /dev/block/platform/soc/${ro.boot.bootdevice} symlink /dev/block/platform/soc/${ro.boot.bootdevice} /dev/block/bootdevice mount_all fstab.${ro.hardware} --early swapon_all fstab.${ro.hardware} # Keeping following partitions outside fstab file. As user may not have # these partition flashed on the device. Failure to mount any partition in fstab file # results in failure to launch late-start class. wait /dev/block/bootdevice/by-name/persist mount ext4 /dev/block/bootdevice/by-name/persist /persist nosuid nodev noatime barrier=1 restorecon_recursive /persist mkdir /persist/data 0700 system system # Start HW service manager early start hwservicemanager on late-fs # Start devices by sysfs trigger start devstart_sh # Start services for bootanim start servicemanager start vr_wm start surfaceflinger start bootanim start hwcomposer-2-1 start configstore-hal-1-0 start gralloc-2-0 # Mount RW partitions which need run fsck mount_all fstab.${ro.hardware} --late on post-fs # set RLIMIT_MEMLOCK to 64MB setrlimit 8 67108864 67108864 # Since bootloader does not have a UI turn screen ON write /sys/class/leds/lcd-backlight/brightness 255 chmod 0664 /sys/devices/virtual/graphics/fb0/idle_time chown system graphics /sys/devices/virtual/graphics/fb0/idle_time on property:sys.listeners.registered=true # load IPA FWs start ipastart_sh on post-fs-data # We can start netd here before in is launched in common init.rc on zygote-start start netd # Start qseecomd once we have /data/ start qseecomd # zygote need to be started after otapreopt which will be done on post-fs-data on zygote-start # zygote is started in common init.rc # and now we can continue initialize /data/ mkdir /data/tombstones 0771 system system mkdir /tombstones/modem 0771 system system mkdir /tombstones/lpass 0771 system system mkdir /tombstones/wcnss 0771 system system mkdir /tombstones/dsps 0771 system system mkdir /data/misc/qvop 0660 system system mkdir /data/misc/hbtp 0750 system system mkdir /data/misc/seemp 0700 system system # Create directory for TZ Apps mkdir /data/misc/qsee 0770 system system #Create folder for mm-qcamera-daemon mkdir /data/misc/camera 0770 camera camera mkdir /data/media 0770 media_rw media_rw chown media_rw media_rw /data/media mkdir /data/misc/ipa 0700 net_admin net_admin # Create the directories used by the Wireless subsystem mkdir /data/misc/wifi 0770 wifi wifi mkdir /data/misc/wifi/sockets 0770 wifi wifi mkdir /data/misc/wifi/wpa_supplicant 0770 wifi wifi mkdir /data/misc/dhcp 0770 dhcp dhcp chown dhcp dhcp /data/misc/dhcp # Mounting of persist is moved to 'on emmc-fs' and 'on fs' sections # We chown/chmod /persist again so because mount is run as root + defaults chown root system /persist chmod 0771 /persist chown system system /persist/WCNSS_qcom_wlan_nv.bin # Create directory for hostapd mkdir /data/hostapd 0770 system wifi # Trigger WLAN driver load write /sys/kernel/boot_wlan/boot_wlan 1 #create port-bridge log dir mkdir /data/misc/port_bridge 0770 radio radio chmod 0770 /data/misc/port_bridge #create netmgr log dir mkdir /data/misc/netmgr 0770 radio radio chmod 0770 /data/misc/netmgr # Create the directories used by CnE subsystem mkdir /data/connectivity 0771 system system chown system system /data/connectivity # Create the directories used by DPM subsystem mkdir /data/dpm 0771 system system chown system system /data/dpm mkdir /data/dpm/nsrm 0771 system system chown system system /data/dpm/nsrm # Create directory used by audio subsystem mkdir /data/misc/audio 0770 audio audio # Create directory for audio delta files mkdir /data/misc/audio/acdbdata 0770 media audio mkdir /data/misc/audio/acdbdata/delta 0770 media audio # Create directory used by the DASH client mkdir /data/misc/dash 0770 media audio # Create directory used by display clients mkdir /data/misc/display 0770 system graphics # Create perfd related dirs mkdir /data/system/perfd 0770 root system chmod 2770 /data/system/perfd chmod 775 /persist/sensors chmod 664 /persist/sensors/sensors_settings chown system root /persist/sensors/sensors_settings mkdir /data/misc/sensors chmod 775 /data/misc/sensors # Mark the copy complete flag to not completed write /data/misc/radio/copy_complete 0 chown radio radio /data/misc/radio/copy_complete chmod 0660 /data/misc/radio/copy_complete # File flags for prebuilt ril db file write /data/misc/radio/prebuilt_db_support 1 chown radio radio /data/misc/radio/prebuilt_db_support chmod 0400 /data/misc/radio/prebuilt_db_support write /data/misc/radio/db_check_done 0 chown radio radio /data/misc/radio/db_check_done chmod 0660 /data/misc/radio/db_check_done # Create directories for Location services mkdir /data/misc/location 0770 gps gps mkdir /data/misc/location/mq 0770 gps gps mkdir /data/misc/location/xtwifi 0770 gps gps mkdir /data/misc/location/gpsone_d 0770 system gps mkdir /data/misc/location/quipc 0770 gps system mkdir /data/misc/location/gsiff 0770 gps gps # NFC local data and nfcee xml storage mkdir /data/nfc 0770 nfc nfc mkdir /data/nfc/param 0770 nfc nfc mkdir /data/vendor/nfc 0770 nfc nfc # Set indication (checked by vold) that we have finished this action setprop vold.post_fs_data_done 1 on early-boot # wait for devices wait_for_prop sys.qcom.devup 1 # wait for insmod_sh to finish all modules wait_for_prop sys.all.modules.ready 1 on boot mkdir /dev/socket/qmux_radio 0770 radio radio chmod 2770 /dev/socket/qmux_radio mkdir /dev/socket/qmux_audio 0770 media audio chmod 2770 /dev/socket/qmux_audio mkdir /dev/socket/qmux_bluetooth 0770 bluetooth bluetooth chmod 2770 /dev/socket/qmux_bluetooth mkdir /dev/socket/qmux_gps 0770 gps gps chmod 2770 /dev/socket/qmux_gps # Create NETMGR daemon socket area mkdir /dev/socket/netmgr 0750 radio radio setprop wifi.interface wlan0 # Define TCP buffer sizes for various networks # ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax, setprop net.tcp.buffersize.wifi 524288,2097152,4194304,262144,524288,1048576 # Assign TCP buffer thresholds to be ceiling value of technology maximums # Increased technology maximums should be reflected here. write /proc/sys/net/core/rmem_max 8388608 # Update DVR cpusets to boot-time values. write /dev/cpuset/kernel/cpus 0-3 write /dev/cpuset/system/cpus 0-3 write /dev/cpuset/system/performance/cpus 0-3 write /dev/cpuset/system/background/cpus 0-3 write /dev/cpuset/system/cpus 0-3 write /dev/cpuset/application/cpus 0-3 write /dev/cpuset/application/performance/cpus 0-3 write /dev/cpuset/application/background/cpus 0-3 write /dev/cpuset/application/cpus 0-3 # Bluetooth chown bluetooth net_bt /sys/class/rfkill/rfkill0/type chown bluetooth net_bt /sys/class/rfkill/rfkill0/state chmod 0660 /sys/class/rfkill/rfkill0/state chown bluetooth net_bt /sys/class/rfkill/rfkill0/device/extldo chmod 0660 /sys/class/rfkill/rfkill0/device/extldo # Wifi firmware reload path chown wifi wifi /sys/module/wlan/parameters/fwpath # Required for time_daemon mkdir /persist/time 0770 system system mkdir /data/time/ 0700 system system # Permission for laser sensor driver chown camera camera /sys/class/wahoo_laser/laser/enable_ps_sensor # Permission for Vibrator chown system system /sys/class/leds/vibrator/device/mode chown system system /sys/class/leds/vibrator/device/od_clamp chown system system /sys/class/leds/vibrator/device/rtp_input chown system system /sys/class/leds/vibrator/device/scale chown system system /sys/class/leds/vibrator/device/set_sequencer chown system system /sys/class/leds/vibrator/device/autocal_result chown system system /sys/class/leds/vibrator/device/ctrl_loop # Permission for LED driver chown system system /sys/class/leds/red/on_off_ms chown system system /sys/class/leds/green/on_off_ms chown system system /sys/class/leds/blue/on_off_ms chown system system /sys/class/leds/red/rgb_start chown system system /sys/class/leds/green/rgb_start chown system system /sys/class/leds/blue/rgb_start service init-radio-sh /system/bin/init.radio.sh class late_start user radio group root radio oneshot service folio_daemon /vendor/bin/folio_daemon class late_start user root group root service perfd /vendor/bin/perfd class main user root group root readproc socket perfd seqpacket 0666 root system service thermal-engine /vendor/bin/thermal-engine -c /vendor/etc/thermal-engine.conf class main user root group root system socket thermal-send-client stream 0666 system system socket thermal-recv-client stream 0660 system system socket thermal-recv-passive-client stream 0666 system system on property:persist.sys.ssr.restart_level=* start ssr_setup service ssr_setup /vendor/bin/ssr_setup oneshot disabled service ssr_diag /vendor/bin/ssr_diag class late_start user system group system disabled service per_mgr /vendor/bin/pm-service class core user system group system ioprio rt 4 service per_proxy /vendor/bin/pm-proxy class core user system group system disabled on property:sys.boot_completed=1 write /dev/cpuset/top-app/cpus 0-7 write /dev/cpuset/foreground/boost/cpus 0-5 write /dev/cpuset/foreground/cpus 0-5 write /dev/cpuset/background/cpus 0-1 write /dev/cpuset/system-background/cpus 0-3 # Update DVR cpusets to runtime values. write /dev/cpuset/kernel/cpus 0,1 write /dev/cpuset/system/performance/cpus 2 write /dev/cpuset/system/background/cpus 0 write /dev/cpuset/system/cpus 0,2 write /dev/cpuset/application/performance/cpus 3 write /dev/cpuset/application/background/cpus 1 write /dev/cpuset/application/cpus 1,3 on property:init.svc.per_mgr=running start per_proxy on property:sys.shutdown.requested=* stop per_proxy service qseecomd /vendor/bin/qseecomd class core user root group root service time_daemon /vendor/bin/time_daemon class late_start user root group root service ss_ramdump /vendor/bin/subsystem_ramdump class main user root group root system disabled on property:persist.sys.ssr.enable_ramdumps=1 write /sys/module/subsystem_restart/parameters/enable_ramdumps 1 mkdir /data/vendor/ramdump 761 root system start ss_ramdump on property:persist.sys.ssr.enable_ramdumps=0 write /sys/module/subsystem_restart/parameters/enable_ramdumps 0 service sensors /vendor/bin/sensors.qcom class core user root group root service adsprpcd /vendor/bin/adsprpcd class main user media group media service irsc_util /vendor/bin/irsc_util "/etc/sec_config" class core user root oneshot service rmt_storage /vendor/bin/rmt_storage class core user root service tftp_server /vendor/bin/tftp_server class core user root service wpa_supplicant /vendor/bin/hw/wpa_supplicant \ -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \ -I/system/etc/wifi/p2p_supplicant_overlay.conf -N \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ -I/system/etc/wifi/wpa_supplicant_overlay.conf \ -O/data/misc/wifi/sockets -puse_p2p_group_interface=1 -dd \ -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0 # we will start as root and wpa_supplicant will switch to user wifi # after setting up the capabilities required for WEXT # user wifi # group wifi inet keystore class main socket wpa_wlan0 dgram 660 wifi wifi disabled oneshot service cnss-daemon /vendor/bin/cnss-daemon -n -l class late_start user system group system inet net_admin wifi service imsqmidaemon /vendor/bin/imsqmidaemon class main user system socket ims_qmid stream 0660 system radio group radio log diag service imsdatadaemon /vendor/bin/imsdatadaemon class main user system socket ims_datad stream 0660 system radio group system wifi radio inet net_raw log net_admin disabled on property:sys.ims.QMI_DAEMON_STATUS=1 start imsdatadaemon service ims_rtp_daemon /vendor/bin/ims_rtp_daemon class main user system socket ims_rtpd stream 0660 system radio group radio diag inet log disabled service imscmservice /vendor/bin/imscmservice class main user system group radio diag inet log disabled on property:sys.ims.DATA_DAEMON_STATUS=1 start ims_rtp_daemon start imscmservice service qmuxd /vendor/bin/qmuxd class main user root group radio audio bluetooth gps nfc qcom_diag service cnd /vendor/bin/cnd class main socket cnd stream 660 root inet service netmgrd /vendor/bin/netmgrd class main user root group root wifi wakelock radio inet service port-bridge /vendor/bin/port-bridge class main user radio group radio system inet disabled oneshot service qti /vendor/bin/qti class main user radio group radio net_raw diag usb net_admin on property:wc_transport.start_hci=true start hci_filter on property:wc_transport.start_hci=false stop hci_filter service hci_filter /vendor/bin/wcnss_filter class late_start user bluetooth group bluetooth diag disabled service loc_launcher /vendor/bin/loc_launcher class late_start group gps inet diag wifi service pd_mapper /vendor/bin/pd-mapper class core # bugreport is triggered by holding down volume down, volume up and power service bugreport /system/bin/dumpstate -d -p -B -z \ -o /data/user_de/0/com.android.shell/files/bugreports/bugreport class main disabled oneshot keycodes 114 115 116 service chre /vendor/bin/chre class late_start socket chre seqpacket 0660 root system service power_sh /system/bin/init.power.sh class main user root group root system disabled oneshot service devstart_sh /vendor/bin/init.qcom.devstart.sh class main user root group root system disabled oneshot service ipastart_sh /vendor/bin/init.qcom.ipastart.sh class main user system group net_admin disabled oneshot service insmod_sh /vendor/bin/init.insmod.sh class main user root group root system disabled oneshot