blob: a420fd70767053b7da726ea83fa6b4f35d8b33b0 [file] [log] [blame]
import factory_init.connectivity.rc
import /init.environ.rc
import init.fon.rc
import init.trustonic.rc
import init.nvdata.rc
import init.microtrust.rc
on early-init
# Set init and its forked children's oom_adj.
write /proc/1/oom_score_adj -1000
# Set the security context of /adb_keys if present.
restorecon /adb_keys
mount debugfs debugfs /sys/kernel/debug
chmod 0755 /sys/kernel/debug
start ueventd
write /proc/bootprof "INIT: usr/eng build setting"
on init
sysclktz 0
loglevel 5
# Backward compatibility
symlink /system/etc /etc
symlink /sys/kernel/debug /d
# Temp Backward compatibility
symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/boot /dev/bootimg
symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/recovery /dev/recovery
symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/secro /dev/sec_ro
symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/kb /dev/kb
symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/dkb /dev/dkb
symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/seccfg /dev/seccfg
symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/proinfo /dev/pro_info
symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/nvram /dev/nvram
symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/para /dev/misc
symlink /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/logo /dev/logo
# Link /vendor to /system/vendor for devices without a vendor partition.
symlink /system/vendor /vendor
# Create cgroup mount point for cpu accounting
mkdir /acct
mount cgroup none /acct cpuacct
mkdir /acct/uid
mkdir /system
mkdir /data 0771 system system
mkdir /cache 0770 system cache
mkdir /config 0500 root root
mkdir /protect_f 0771 system system
mkdir /protect_s 0771 system system
mkdir /nvcfg 0771 system system
# Mount staging areas for devices managed by vold
# See storage config details at http://source.android.com/tech/storage/
mkdir /mnt 0755 root system
mount tmpfs tmpfs /mnt mode=0755,uid=0,gid=1000
restorecon_recursive /mnt
# Support legacy paths
symlink /sdcard /mnt/sdcard
mkdir /mnt/secure 0700 root root
mkdir /mnt/secure/asec 0700 root root
mkdir /mnt/asec 0755 root system
mkdir /mnt/obb 0755 root system
mkdir /mnt/media_rw 0750 root media_rw
mkdir /mnt/user 0755 root root
mkdir /mnt/user/0 0755 root root
mkdir /mnt/expand 0771 system system
# Storage views to support runtime permissions
mkdir /storage 0755 root root
mkdir /mnt/runtime 0700 root root
mkdir /mnt/runtime/default 0755 root root
mkdir /mnt/runtime/default/self 0755 root root
mkdir /mnt/runtime/read 0755 root root
mkdir /mnt/runtime/read/self 0755 root root
mkdir /mnt/runtime/write 0755 root root
mkdir /mnt/runtime/write/self 0755 root root
# Symlink to keep legacy apps working in multi-user world
symlink /storage/self/primary /sdcard
symlink /mnt/user/0/primary /mnt/runtime/default/self/primary
write /proc/sys/kernel/panic_on_oops 1
write /proc/sys/kernel/hung_task_timeout_secs 0
write /proc/cpu/alignment 4
write /proc/sys/kernel/sched_latency_ns 10000000
write /proc/sys/kernel/sched_wakeup_granularity_ns 2000000
write /proc/sys/kernel/sched_compat_yield 1
write /proc/sys/kernel/sched_child_runs_first 0
# Healthd can trigger a full boot from charger mode by signaling this
# property when the power button is held.
on property:sys.boot_from_charger_mode=1
class_stop charger
trigger late-init
# Load properties from /system/ + /factory after fs mount.
on load_all_props_action
load_all_props
# Mount filesystems and start core system services.
on late-init
trigger early-fs
trigger fs
trigger post-fs
trigger post-fs-data
# Load properties from /system/ + /factory after fs mount. Place
# this in another action so that the load will be scheduled after the prior
# issued fs triggers have completed.
trigger load_all_props_action
trigger early-boot
trigger boot
on fs
mkdir /dev/usb-ffs 0770 shell shell
mkdir /dev/usb-ffs/adb 0770 shell shell
mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
write /sys/class/android_usb/android0/f_ffs/aliases adb
#INTERNAL_START
write /proc/bootprof "INIT:Mount_START"
mount_all /fstab.mt6797
write /proc/bootprof "INIT:Mount_END"
#INTERNAL_END
on post-fs
start logd
# once everything is setup, no need to modify /
mount rootfs rootfs / ro remount
# Mount shared so changes propagate into child namespaces
mount rootfs rootfs / shared rec
# Mount default storage into root namespace
mount none /mnt/runtime/default /storage slave bind rec
# Support legacy paths
symlink /sdcard /storage/sdcard0
chown system system /system/data
mkdir /system/cache 0770 system cache
# We restorecon /cache in case the cache partition has been reset.
restorecon_recursive /cache
# Same reason as /data above
chown system cache /cache
chmod 0770 /cache
# This may have been created by the recovery system with odd permissions
chown system cache /cache/recovery
chmod 0770 /cache/recovery
#change permissions on vmallocinfo so we can grab it from bugreports
chown root log /proc/vmallocinfo
chmod 0440 /proc/vmallocinfo
#change permissions on kmsg & sysrq-trigger so bugreports can grab kthread stacks
chown root system /proc/kmsg
chmod 0440 /proc/kmsg
chown root system /proc/sysrq-trigger
chmod 0220 /proc/sysrq-trigger
chown system log /proc/last_kmsg
chmod 0440 /proc/last_kmsg
# make the selinux kernel policy world-readable
chmod 0444 /sys/fs/selinux/policy
# create the lost+found directories, so as to enforce our permissions
mkdir /cache/lost+found 0770 root root
#INTERNAL_START
mkdir /cache/recovery 0770 system system
chown system system /protect_f
chmod 0770 /protect_f
chown system system /protect_s
chmod 0770 /protect_s
#INTERNAL_END
on post-fs-data
#Thermal
mkdir /data/.tp/ 0775 system system
# We chown/chmod /data again so because mount is run as root + defaults
chown system system /system/data
chmod 0777 /system/data
# We chown/chmod /data again so because mount is run as root + defaults
chown system system /data
chmod 0771 /data
# We restorecon /data in case the userdata partition has been reset.
restorecon /data
# We chown/chmod /data again so because mount is run as root + defaults
chown root system /proc/sysrq-trigger
chmod 0220 /proc/sysrq-trigger
chown system system /nvcfg
chmod 0771 /nvcfg
restorecon_recursive /nvcfg
# create basic filesystem structure
#mkdir /data/nvram 2770 root system
# We chown/chmod /nvdata again so because mount is run as root + defaults
chown root system /nvdata
chmod 0771 /nvdata
symlink /nvdata /data/nvram
mkdir /nvdata/media 0771 media audio
#Create cct mount point
mkdir /data/cct
chown root system /data/cct
chmod 0771 /data/cct
# Set SELinux security contexts on upgrade or policy update.
restorecon_recursive /nvdata
# Emulated internal storage area
mkdir /data/media 0770 media_rw media_rw
# Make sure we have the device encryption key
start logd
start vold
installkey /data
# create basic filesystem structure
mkdir /data/misc 01771 system misc
mkdir /data/misc/adb 02750 system shell
mkdir /data/misc/bluedroid 02770 bluetooth net_bt_stack
# Fix the access permissions and group ownership for 'bt_config.conf'
chmod 0660 /data/misc/bluedroid/bt_config.conf
chown bluetooth net_bt_stack /data/misc/bluedroid/bt_config.conf
mkdir /data/misc/bluetooth 0770 system system
mkdir /data/misc/keystore 0700 keystore keystore
mkdir /data/misc/keychain 0771 system system
mkdir /data/misc/vpn 0770 system vpn
mkdir /data/misc/systemkeys 0700 system system
# give system access to wpa_supplicant.conf for backup and restore
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/ethernet 0770 system system
mkdir /data/misc/dhcp 0770 dhcp dhcp
mkdir /data/misc/user 0771 root root
mkdir /data/misc/perfprofd 0775 root root
# give system access to wpa_supplicant.conf for backup and restore
chmod 0660 /data/misc/wifi/wpa_supplicant.conf
mkdir /data/local 0751 root root
mkdir /data/misc/media 0700 media media
mkdir /data/misc/vold 0700 root root
mkdir /data/local/tmp 0771 shell shell
mkdir /data/data 0771 system system
mkdir /data/property 0700 root root
mkdir /data/tombstones 0771 system system
mkdir /data/misc/media 0700 media media
mkdir /data/misc/vold 0700 root root
# create the lost+found directories, so as to enforce our permissions
mkdir /data/lost+found 0770 root root
mkdir /data/adb 0770 root root
# Create all remaining /data root dirs so that they are made through init
# and get proper encryption policy installed
mkdir /data/backup 0700 system system
mkdir /data/media 0770 media_rw media_rw
mkdir /data/ss 0700 system system
mkdir /data/system 0775 system system
mkdir /data/system/heapdump 0700 system system
mkdir /data/user 0711 system system
# VIA flashlessd service
mkdir /data/flashless 0770 radio nvram
mkdir /data/nvram/md_via 0770 root nvram
chmod 0660 /dev/ttyMT4
chown radio radio /dev/ttyMT4
chmod 0660 /dev/vmodem
chown radio radio /dev/vmodem
#VIA pppd service
mkdir /data/pppd_via 0770 radio system
# md32 boot
chown root system /dev/md32
chmod 0440 /dev/md32
chown root system /sys/class/misc/md32/md32_mobile_log
chmod 0660 /sys/class/misc/md32/md32_mobile_log
write /sys/class/misc/md32/md32_boot 1
# dhcp server
mkdir /data/misc/dhcp 0770 dhcp dhcp
chown dhcp dhcp /data/misc/dhcp
# device info interface
chmod 0440 /dev/devmap
chown root system /dev/devmap
#change partition permission
exec /system/etc/partition_permission.sh
#INTERNAL_START
#SeLinux
mkdir /data/ccci_cfg 0770 system radio
restorecon /data/ccci_cfg
restorecon_recursive /protect_f
restorecon_recursive /protect_s
## Custom pos-fs area (START)
# Please add custom fs operation below
# Touch Panel
chown root diag /sys/module/tpd_setting/parameters/tpd_calmat
chown root diag /sys/module/tpd_setting/parameters/tpd_em_debounce_time
chown root diag /sys/module/tpd_debug/parameters/tpd_em_log
chown root diag /sys/module/tpd_debug/parameters/tpd_em_log_to_fs
# RTC
mkdir /data/misc/rtc 0770 system system
# Modem related device nodes
mkdir /data/nvram/md 0770 root system
mkdir /data/nvram/md2 0770 root system
mkdir /data/nvram/md3 0770 root system
mkdir /data/md3 0770 root system
chown radio radio /sys/kernel/ccci/boot
#set mlock limit to infinate (for m4u operation)
setrlimit 8 -1 -1
# Sensor
chmod 0666 /dev/hwmsensor
chmod 0666 /dev/gyroscope
chmod 0666 /dev/msensor
chmod 0666 /dev/gsensor
chmod 0666 /dev/alsps
chmod 0666 /dev/humidity
chmod 0666 /dev/barometer
chown system system /dev/hwmsensor
chown system system /dev/msensor
chown system system /dev/gsensor
chown radio system /dev/als_ps
chown system system /dev/gyroscope
chown system system /dev/barometer
chown system system /dev/humidity
#VideoCodec
chmod 0666 /dev/Vcodec
mkdir /data/amit/
# GPIO
chmod 0666 /dev/mtgpio
chmod 0666 /dev/exm0
# TTY
# For ATCID
chmod 0660 /dev/ttyGS0
chown system radio /dev/ttyGS0
chmod 0660 /dev/ttyGS1
chown system /dev/ttyGS1
# For BT relayer
chown bluetooth radio /dev/ttyGS2
chmod 0660 /dev/ttyGS2
# For MD Logger
chown system radio /dev/ttyGS3
chmod 0660 /dev/ttyGS3
#NFC
rm /data/mtknfc_server
## Custom pos_fs area (END)
#INTERNAL_END
# Separate location for storing security policy files on data
mkdir /data/security 0711 system system
# Reload policy from /data/security if present.
setprop selinux.reload_policy 1
# Set SELinux security contexts on upgrade or policy update.
restorecon_recursive /data
# If there is no fs-post-data action in the init.<device>.rc file, you
# must uncomment this line, otherwise encrypted filesystems
# won't work.
# Set indication (checked by vold) that we have finished this action
setprop vold.post_fs_data_done 1
on boot
#VIA device property
setprop viatel.device.asci uart.4.ttyMT
setprop viatel.device.fls sdio.3.ttySDIO
setprop viatel.device.at sdio.4.ttySDIO
setprop viatel.device.data sdio.1.ttySDIO
# basic network init
ifup lo
hostname localhost
domainname localdomain
#INTERNAL_START
# Start default class, this line is very important!!
class_start default
class_start core
#INTERNAL_END
on nonencrypted
class_start main
class_start late_start
on property:vold.decrypt=trigger_default_encryption
start defaultcrypto
on property:vold.decrypt=trigger_encryption
start surfaceflinger
start encrypt
on property:sys.init_log_level=*
loglevel ${sys.init_log_level}
on property:vold.decrypt=trigger_reset_main
class_reset main
on property:vold.decrypt=trigger_load_persist_props
load_persist_props
start logd
start logd-reinit
on property:vold.decrypt=trigger_post_fs_data
trigger post-fs-data
on property:vold.decrypt=trigger_restart_min_framework
class_start main
on property:vold.decrypt=trigger_restart_framework
start nvram_daemon
class_start main
class_start late_start
start permission_check
on property:vold.decrypt=trigger_shutdown_framework
class_reset late_start
class_reset main
service ueventd /sbin/ueventd
class core
critical
seclabel u:r:ueventd:s0
service logd /system/bin/logd
class core
socket logd stream 0666 logd logd
socket logdr seqpacket 0666 logd logd
socket logdw dgram 0222 logd logd
service logd-reinit /system/bin/logd --reinit
oneshot
disabled
service console /system/bin/sh
class core
console
disabled
user shell
seclabel u:r:shell:s0
on property:sys.powerctl=*
powerctl ${sys.powerctl}
on property:ro.debuggable=1
start console
# adbd is controlled via property triggers in init.<platform>.usb.rc
service adbd /sbin/adbd --root_seclabel=u:r:su:s0
class core
socket adbd stream 660 system system
disabled
seclabel u:r:adbd:s0
service vold /system/bin/vold \
--blkid_context=u:r:blkid:s0 --blkid_untrusted_context=u:r:blkid_untrusted:s0 \
--fsck_context=u:r:fsck:s0 --fsck_untrusted_context=u:r:fsck_untrusted:s0
class core
socket vold stream 0660 root mount
socket cryptd stream 0660 root mount
ioprio be 2
service debuggerd /system/bin/debuggerd
class main
service debuggerd64 /system/bin/debuggerd64
class main
# One shot invocation to deal with encrypted volume.
service defaultcrypto /system/bin/vdc --wait cryptfs mountdefaultencrypted
disabled
oneshot
# vold will set vold.decrypt to trigger_restart_framework (default
# encryption) or trigger_restart_min_framework (other encryption)
# One shot invocation to encrypt unencrypted volumes
service encrypt /system/bin/vdc --wait cryptfs enablecrypto inplace default
disabled
oneshot
# vold will set vold.decrypt to trigger_restart_framework (default
# encryption)
on property:persist.logd.logpersistd=logcatd
# all exec/services are called with umask(077), so no gain beyond 0700
mkdir /data/misc/logd 0700 logd log
# logd for write to /data/misc/logd, log group for read from pstore (-L)
exec - logd log -- /system/bin/logcat -L -b all -v threadtime -v usec -v printable -D -f /data/misc/logd/logcat -r 64 -n 256
start logcatd
service logcatd /system/bin/logcat -b all -v threadtime -v usec -v printable -D -f /data/misc/logd/logcat -r 64 -n 256
class late_start
disabled
# logd for write to /data/misc/logd, log group for read from log daemon
user logd
group log
#INTERNAL_START
## Custom service area (START)
# Please add custom service below
service thermal_manager /system/bin/thermal_manager
user root
oneshot
service permission_check /system/bin/permission_check
user root
group system radio
oneshot
service ccci_fsd /system/bin/ccci_fsd 0
user radio
group radio system
oneshot
service ccci_mdinit /system/bin/ccci_mdinit 0
user system
group radio system
oneshot
service ccci3_fsd /system/bin/ccci_fsd 2
user radio
group radio system
oneshot
service ccci3_mdinit /system/bin/ccci_mdinit 2
user system
group radio system
oneshot
service ccci_rpcd /system/bin/ccci_rpcd 0
user radio
group radio system
oneshot
service nvram_daemon /system/bin/nvram_daemon
class main
user root
group system
oneshot
service mdlogger /system/bin/mdlogger
class main
user shell
group shell system radio sdcard_rw inet
disabled
oneshot
service dualmdlogger /system/bin/dualmdlogger
class main
user shell
group shell system radio sdcard_rw inet
disabled
oneshot
service factory_no_image /system/bin/factory
service mobile_log_d /system/bin/mobile_log_d
class main
## Custom service area (END)
#statusd service
service statusd /system/bin/statusd -f [/system/bin/flashlessd -l -m 0]
socket statusd stream 660 radio radio
user radio
group radio cache inet misc system
#mass_storage,adb,acm
on property:ro.boot.usbconfig=0
write /sys/class/android_usb/android0/iSerial $ro.serialno
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idVendor 0e8d
write /sys/class/android_usb/android0/idProduct 2006
write /sys/class/android_usb/android0/f_acm/instances 1
write /sys/class/android_usb/android0/functions mass_storage,adb,acm
write /sys/class/android_usb/android0/enable 1
start adbd
setprop sys.usb.acm_idx 1
#acm
on property:ro.boot.usbconfig=1
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/iSerial " "
write /sys/class/android_usb/android0/idVendor 0e8d
write /sys/class/android_usb/android0/idProduct 2007
write /sys/class/android_usb/android0/f_acm/instances 1
write /sys/class/android_usb/android0/functions acm
write /sys/class/android_usb/android0/bDeviceClass 02
write /sys/class/android_usb/android0/enable 1
#singloe modem comport for factory mode
on property:sys.usb.config=gs3,dual_acm
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idVendor $sys.usb.vid
write /sys/class/android_usb/android0/idProduct 202E
write /sys/class/android_usb/android0/f_acm/port_index 1,4
write /sys/devices/platform/mt_usb/saving 1
write /sys/class/android_usb/android0/functions mass_storage,adb,acm
write /sys/class/android_usb/android0/enable 1
chown system radio /dev/ttyGS3
chmod 0660 /dev/ttyGS3
start adbd
setprop sys.usb.state $sys.usb.config
setprop sys.usb.acm_idx 1,4
#dual modem comport for factory mode
on property:sys.usb.config=gs1gs3,dual_acm
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idVendor $sys.usb.vid
write /sys/class/android_usb/android0/idProduct 202F
write /sys/class/android_usb/android0/f_acm/port_index 1,2,4
write /sys/devices/platform/mt_usb/saving 1
write /sys/class/android_usb/android0/functions adb,acm
write /sys/class/android_usb/android0/enable 1
chown system radio /dev/ttyGS3
chmod 0660 /dev/ttyGS3
chown system radio /dev/ttyGS1
chmod 0660 /dev/ttyGS1
start adbd
setprop sys.usb.state $sys.usb.config
setprop sys.usb.acm_idx 1,2,4
#INTERNAL_END