Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Copyright (C) 2012 The Android Open Source Project
- #
- # IMPORTANT: Do not create world writable files or directories.
- # This is a common source of Android security bugs.
- #
- import /init.environ.rc
- # Mer handles usb stuff
- #import /init.usb.rc
- import /init.${ro.hardware}.rc
- import /init.usb.configfs.rc
- import /init.${ro.zygote}.rc
- import /init.trace.rc
- # Include CM's extra init file
- import /init.cm.rc
- on early-init
- # Apply strict SELinux checking of PROT_EXEC on mmap/mprotect calls.
- write /sys/fs/selinux/checkreqprot 0
- # Set the security context for the init process.
- # This should occur before anything else (e.g. ueventd) is started.
- setcon u:r:init:s0
- # This is a common source of Android security bugs.
- #
- import /init.environ.rc
- # Mer handles usb stuff
- #import /init.usb.rc
- import /init.${ro.hardware}.rc
- import /init.usb.configfs.rc
- import /init.${ro.zygote}.rc
- import /init.trace.rc
- # Include CM's extra init file
- import /init.cm.rc
- # 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_system_props_action
- load_system_props
- on load_persist_props_action
- load_persist_props
- start logd
- start logd-reinit
- # Indicate to fw loaders that the relevant mounts are up.
- on firmware_mounts_complete
- rm /dev/.booting
- # Mount filesystems and start core system services.
- on late-init
- trigger early-fs
- trigger fs
- trigger post-fs
- # 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_system_props_action
- # Now we can mount /data. File encryption requires keymaster to decrypt
- # /data, which in turn can only be loaded when system properties are present
- trigger post-fs-data
- trigger load_persist_props_action
- # Remove a file to wake up anything waiting for firmware.
- trigger firmware_mounts_complete
- trigger early-boot
- trigger boot
- 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
- # We chown/chmod /cache again so because mount is run as root + defaults
- chown system cache /cache
- chmod 0770 /cache
- # We restorecon /cache in case the cache partition has been reset.
- restorecon_recursive /cache
- # Create /cache/recovery in case it's not there. It'll also fix the odd
- # permissions if created by the recovery system.
- mkdir /cache/recovery 0770 system cache
- #change permissions on vmallocinfo so we can grab it from bugreports
- chown root log /proc/vmallocinfo
- chmod 0440 /proc/vmallocinfo
- chown root log /proc/slabinfo
- chmod 0440 /proc/slabinfo
- #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
- on post-fs-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
- # 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
- # Start bootcharting as soon as possible after the data partition is
- # mounted to collect more data.
- mkdir /data/bootchart 0755 shell shell
- bootchart_init
- # Avoid predictable entropy pool. Carry over entropy from previous boot.
- copy /data/system/entropy.dat /dev/urandom
- # 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/gatekeeper 0700 system system
- powerctl ${sys.powerctl}
- # system server cannot write to /proc/sys files,
- # and chown/chmod does not work for /proc/sys/ entries.
- # So proxy writes through init.
- on property:sys.sysctl.extra_free_kbytes=*
- write /proc/sys/vm/extra_free_kbytes ${sys.sysctl.extra_free_kbytes}
- # "tcp_default_init_rwnd" Is too long!
- on property:sys.sysctl.tcp_def_init_rwnd=*
- write /proc/sys/net/ipv4/tcp_default_init_rwnd ${sys.sysctl.tcp_def_init_rwnd}
- on property:security.perf_harden=0
- write /proc/sys/kernel/perf_event_paranoid 1
- on property:security.perf_harden=1
- write /proc/sys/kernel/perf_event_paranoid 3
- ## Daemon processes to be run by init.
- ##
- service ueventd /sbin/ueventd
- class core
- critical
- seclabel u:r:ueventd:s0
- # Not used by Mer
- disabled
- 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
- group root system
- writepid /dev/cpuset/system-background/tasks
- service logd-reinit /system/bin/logd --reinit
- oneshot
- writepid /dev/cpuset/system-background/tasks
- disabled
- service healthd /sbin/healthd
- class core
- critical
- seclabel u:r:healthd:s0
- group root system
- # Not used by Mer - spams logs and small battery drain
- disabled
- service console /system/bin/sh
- class core
- console
- disabled
- user shell
- group shell log
- seclabel u:r:shell:s0
- 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
- # adbd on at boot in emulator
- on property:ro.kernel.qemu=1
- start adbd
- service lmkd /system/bin/lmkd
- class core
- socket lmkd seqpacket 0660 system system
- writepid /dev/cpuset/system-background/tasks
- disabled
- service servicemanager /system/bin/servicemanager
- class core
- user system
- group system
- critical
- onrestart restart healthd
- onrestart restart minimedia
- onrestart restart minisf
- onrestart restart miniaf
- # onrestart restart zygote
- # onrestart restart media
- # onrestart restart surfaceflinger
- # onrestart restart drm
- service minimedia /usr/libexec/droid-hybris/system/bin/minimediaservice
- class main
- user media
- group audio camera
- ioprio rt 4
- service minisf /usr/libexec/droid-hybris/system/bin/minisfservice
- class main
- user system
- group graphics
- service miniaf /usr/libexec/droid-hybris/system/bin/miniafservice
- class main
- user system
- group audio
- 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
- # Not used in Mer
- disabled
- # Disabled in Mer: conflicts with connman beyond usability
- # This will no longer work for mako: `ndc softap fwreload wlan0 AP` to reload mako firmware
- # mako (and similar fwreload) porters need to seek for alternative solution, see NEMO#793
- service netd /system/bin/netd
- class main
- socket netd stream 0660 root system
- socket dnsproxyd stream 0660 root inet
- socket mdns stream 0660 root system
- socket fwmarkd stream 0660 root inet
- disabled
- service debuggerd /system/bin/debuggerd
- class main
- writepid /dev/cpuset/system-background/tasks
- service debuggerd64 /system/bin/debuggerd64
- class main
- writepid /dev/cpuset/system-background/tasks
- service ril-daemon /system/bin/rild
- class main
- socket rild stream 660 root radio
- socket sap_uim_socket1 stream 660 bluetooth bluetooth
- socket rild-debug stream 660 radio system
- user root
- group radio cache inet misc audio log qcom_diag
- # Disabled in Mer - used only during porting atm
- service surfaceflinger /system/bin/surfaceflinger
- class core
- user system
- group graphics drmrpc
- onrestart restart zygote
- disabled
- service drm /system/bin/drmserver
- class main
- user drm
- group drm system inet drmrpc
- # Disabled in Mer
- service media /system/bin/mediaserver
- class main
- user media
- group audio camera inet net_bt net_bt_admin net_bw_acct drmrpc mediadrm qcom_diag
- ioprio rt 4
- disabled
- # 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 noui
- disabled
- oneshot
- # vold will set vold.decrypt to trigger_restart_framework (default
- # encryption)
- service bootanim /system/bin/bootanimation
- class core
- user graphics
- group graphics audio
- disabled
- oneshot
- writepid /dev/cpuset/system-background/tasks
- service gatekeeperd /system/bin/gatekeeperd /data/misc/gatekeeper
- class late_start
- user system
- disabled
- service installd /system/bin/installd
- class main
- socket installd stream 600 system system
- service flash_recovery /system/bin/install-recovery.sh
- class main
- oneshot
- disabled
- # update recovery if enabled
- on property:persist.sys.recovery_update=true
- start flash_recovery
- service racoon /system/bin/racoon
- class main
- socket racoon stream 600 system system
- # IKE uses UDP port 500. Racoon will setuid to vpn after binding the port.
- group vpn net_admin inet
- disabled
- oneshot
- service mtpd /system/bin/mtpd
- class main
- socket mtpd stream 600 system system
- user vpn
- group vpn net_admin inet net_raw
- disabled
- oneshot
- # disabled in Mer
- service keystore /system/bin/keystore /data/misc/keystore
- class main
- user keystore
- group keystore drmrpc
- # Not used in Mer
- disabled
- service dumpstate /system/bin/dumpstate -s
- class main
- socket dumpstate stream 0660 shell log
- disabled
- oneshot
- service uncrypt /system/bin/uncrypt
- class main
- disabled
- # This trigger is run by our modified init after boot has finished
- on ready
- class_start mer
- # Notify Mer's systemd that we're done
- # This is started at the end of boot after both core and main classes
- service droid_init_done /bin/sh /usr/bin/droid/droid-init-done.sh
- class mer
- oneshot
- service pre-recovery /system/bin/uncrypt --reboot
- class main
- disabled
- oneshot
- service perfprofd /system/xbin/perfprofd
- class late_start
- user root
- oneshot
- writepid /dev/cpuset/system-background/tasks
- 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 1024 -n 256
- start logcatd
- service logcatd /system/bin/logcat -b all -v threadtime -v usec -v printable -D -f /data/misc/logd/logcat -r 1024 -n 256
- class late_start
- disabled
- # logd for write to /data/misc/logd, log group for read from log daemon
- user logd
- group log
- writepid /dev/cpuset/system-background/tasks
Add Comment
Please, Sign In to add comment