init.rc revision 09cdc0ea12598651d1c074974c9b593fd1c0e4ba
1on early-init 2 # Set init and its forked children's oom_adj. 3 write /proc/1/oom_adj -16 4 5 start ueventd 6 7# create mountpoints 8 mkdir /mnt 0775 root system 9 10on init 11 12sysclktz 0 13 14loglevel 3 15 16# setup the global environment 17 export PATH /sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin 18 export LD_LIBRARY_PATH /vendor/lib:/system/lib 19 export ANDROID_BOOTLOGO 1 20 export ANDROID_ROOT /system 21 export ANDROID_ASSETS /system/app 22 export ANDROID_DATA /data 23 export ASEC_MOUNTPOINT /mnt/asec 24 export LOOP_MOUNTPOINT /mnt/obb 25 export BOOTCLASSPATH /system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/filterfw.jar 26 27# Backward compatibility 28 symlink /system/etc /etc 29 symlink /sys/kernel/debug /d 30 31# Right now vendor lives on the same filesystem as system, 32# but someday that may change. 33 symlink /system/vendor /vendor 34 35# Create cgroup mount point for cpu accounting 36 mkdir /acct 37 mount cgroup none /acct cpuacct 38 mkdir /acct/uid 39 40 mkdir /system 41 mkdir /data 0771 system system 42 mkdir /cache 0770 system cache 43 mkdir /config 0500 root root 44 45 # Directory for putting things only root should see. 46 mkdir /mnt/secure 0700 root root 47 48 # Directory for staging bindmounts 49 mkdir /mnt/secure/staging 0700 root root 50 51 # Directory-target for where the secure container 52 # imagefile directory will be bind-mounted 53 mkdir /mnt/secure/asec 0700 root root 54 55 # Secure container public mount points. 56 mkdir /mnt/asec 0700 root system 57 mount tmpfs tmpfs /mnt/asec mode=0755,gid=1000 58 59 # Filesystem image public mount points. 60 mkdir /mnt/obb 0700 root system 61 mount tmpfs tmpfs /mnt/obb mode=0755,gid=1000 62 63 write /proc/sys/kernel/panic_on_oops 1 64 write /proc/sys/kernel/hung_task_timeout_secs 0 65 write /proc/cpu/alignment 4 66 write /proc/sys/kernel/sched_latency_ns 10000000 67 write /proc/sys/kernel/sched_wakeup_granularity_ns 2000000 68 write /proc/sys/kernel/sched_compat_yield 1 69 write /proc/sys/kernel/sched_child_runs_first 0 70 write /proc/sys/kernel/randomize_va_space 2 71 72# Create cgroup mount points for process groups 73 mkdir /dev/cpuctl 74 mount cgroup none /dev/cpuctl cpu 75 chown system system /dev/cpuctl 76 chown system system /dev/cpuctl/tasks 77 chmod 0777 /dev/cpuctl/tasks 78 write /dev/cpuctl/cpu.shares 1024 79 80 mkdir /dev/cpuctl/fg_boost 81 chown system system /dev/cpuctl/fg_boost/tasks 82 chmod 0777 /dev/cpuctl/fg_boost/tasks 83 write /dev/cpuctl/fg_boost/cpu.shares 1024 84 85 mkdir /dev/cpuctl/bg_non_interactive 86 chown system system /dev/cpuctl/bg_non_interactive/tasks 87 chmod 0777 /dev/cpuctl/bg_non_interactive/tasks 88 # 5.0 % 89 write /dev/cpuctl/bg_non_interactive/cpu.shares 52 90 91# Allow everybody to read the xt_qtaguid resource tracking misc dev. 92# This is needed by any process that uses socket tagging. 93 chmod 0644 /dev/xt_qtaguid 94 95on fs 96# mount mtd partitions 97 # Mount /system rw first to give the filesystem a chance to save a checkpoint 98 mount yaffs2 mtd@system /system 99 mount yaffs2 mtd@system /system ro remount 100 mount yaffs2 mtd@userdata /data nosuid nodev 101 mount yaffs2 mtd@cache /cache nosuid nodev 102 103on post-fs 104 # once everything is setup, no need to modify / 105 mount rootfs rootfs / ro remount 106 107 # We chown/chmod /cache again so because mount is run as root + defaults 108 chown system cache /cache 109 chmod 0770 /cache 110 111 # This may have been created by the recovery system with odd permissions 112 chown system cache /cache/recovery 113 chmod 0770 /cache/recovery 114 115 #change permissions on vmallocinfo so we can grab it from bugreports 116 chown root log /proc/vmallocinfo 117 chmod 0440 /proc/vmallocinfo 118 119 #change permissions on kmsg & sysrq-trigger so bugreports can grab kthread stacks 120 chown root system /proc/kmsg 121 chmod 0440 /proc/kmsg 122 chown root system /proc/sysrq-trigger 123 chmod 0220 /proc/sysrq-trigger 124 125 # create the lost+found directories, so as to enforce our permissions 126 mkdir /cache/lost+found 0770 root root 127 128on post-fs-data 129 # We chown/chmod /data again so because mount is run as root + defaults 130 chown system system /data 131 chmod 0771 /data 132 133 # Create dump dir and collect dumps. 134 # Do this before we mount cache so eventually we can use cache for 135 # storing dumps on platforms which do not have a dedicated dump partition. 136 mkdir /data/dontpanic 0750 root log 137 138 # Collect apanic data, free resources and re-arm trigger 139 copy /proc/apanic_console /data/dontpanic/apanic_console 140 chown root log /data/dontpanic/apanic_console 141 chmod 0640 /data/dontpanic/apanic_console 142 143 copy /proc/apanic_threads /data/dontpanic/apanic_threads 144 chown root log /data/dontpanic/apanic_threads 145 chmod 0640 /data/dontpanic/apanic_threads 146 147 write /proc/apanic_console 1 148 149 # create basic filesystem structure 150 mkdir /data/misc 01771 system misc 151 mkdir /data/misc/bluetoothd 0770 bluetooth bluetooth 152 mkdir /data/misc/bluetooth 0770 system system 153 mkdir /data/misc/keystore 0700 keystore keystore 154 mkdir /data/misc/keychain 0771 system system 155 mkdir /data/misc/vpn 0770 system vpn 156 mkdir /data/misc/systemkeys 0700 system system 157 # give system access to wpa_supplicant.conf for backup and restore 158 mkdir /data/misc/wifi 0770 wifi wifi 159 chmod 0660 /data/misc/wifi/wpa_supplicant.conf 160 mkdir /data/local 0771 shell shell 161 mkdir /data/local/tmp 0771 shell shell 162 mkdir /data/data 0771 system system 163 mkdir /data/app-private 0771 system system 164 mkdir /data/app 0771 system system 165 mkdir /data/property 0700 root root 166 167 # create dalvik-cache, so as to enforce our permissions 168 mkdir /data/dalvik-cache 0771 system system 169 170 # create resource-cache and double-check the perms 171 mkdir /data/resource-cache 0771 system system 172 chown system system /data/resource-cache 173 chmod 0771 /data/resource-cache 174 175 # create the lost+found directories, so as to enforce our permissions 176 mkdir /data/lost+found 0770 root root 177 178 # create directory for DRM plug-ins - give drm the read/write access to 179 # the following directory. 180 mkdir /data/drm 0770 drm drm 181 182 # If there is no fs-post-data action in the init.<device>.rc file, you 183 # must uncomment this line, otherwise encrypted filesystems 184 # won't work. 185 # Set indication (checked by vold) that we have finished this action 186 #setprop vold.post_fs_data_done 1 187 188 chown system system /sys/class/android_usb/android0/f_mass_storage/lun/file 189 chmod 0660 /sys/class/android_usb/android0/f_mass_storage/lun/file 190 chown system system /sys/class/android_usb/android0/f_rndis/ethaddr 191 chmod 0660 /sys/class/android_usb/android0/f_rndis/ethaddr 192 193on boot 194# basic network init 195 ifup lo 196 hostname localhost 197 domainname localdomain 198 199# set RLIMIT_NICE to allow priorities from 19 to -20 200 setrlimit 13 40 40 201 202# Memory management. Basic kernel parameters, and allow the high 203# level system server to be able to adjust the kernel OOM driver 204# paramters to match how it is managing things. 205 write /proc/sys/vm/overcommit_memory 1 206 write /proc/sys/vm/min_free_order_shift 4 207 chown root system /sys/module/lowmemorykiller/parameters/adj 208 chmod 0664 /sys/module/lowmemorykiller/parameters/adj 209 chown root system /sys/module/lowmemorykiller/parameters/minfree 210 chmod 0664 /sys/module/lowmemorykiller/parameters/minfree 211 212 # Tweak background writeout 213 write /proc/sys/vm/dirty_expire_centisecs 200 214 write /proc/sys/vm/dirty_background_ratio 5 215 216 # Permissions for System Server and daemons. 217 chown radio system /sys/android_power/state 218 chown radio system /sys/android_power/request_state 219 chown radio system /sys/android_power/acquire_full_wake_lock 220 chown radio system /sys/android_power/acquire_partial_wake_lock 221 chown radio system /sys/android_power/release_wake_lock 222 chown radio system /sys/power/state 223 chown radio system /sys/power/wake_lock 224 chown radio system /sys/power/wake_unlock 225 chmod 0660 /sys/power/state 226 chmod 0660 /sys/power/wake_lock 227 chmod 0660 /sys/power/wake_unlock 228 chown system system /sys/class/timed_output/vibrator/enable 229 chown system system /sys/class/leds/keyboard-backlight/brightness 230 chown system system /sys/class/leds/lcd-backlight/brightness 231 chown system system /sys/class/leds/button-backlight/brightness 232 chown system system /sys/class/leds/jogball-backlight/brightness 233 chown system system /sys/class/leds/red/brightness 234 chown system system /sys/class/leds/green/brightness 235 chown system system /sys/class/leds/blue/brightness 236 chown system system /sys/class/leds/red/device/grpfreq 237 chown system system /sys/class/leds/red/device/grppwm 238 chown system system /sys/class/leds/red/device/blink 239 chown system system /sys/class/leds/red/brightness 240 chown system system /sys/class/leds/green/brightness 241 chown system system /sys/class/leds/blue/brightness 242 chown system system /sys/class/leds/red/device/grpfreq 243 chown system system /sys/class/leds/red/device/grppwm 244 chown system system /sys/class/leds/red/device/blink 245 chown system system /sys/class/timed_output/vibrator/enable 246 chown system system /sys/module/sco/parameters/disable_esco 247 chown system system /sys/kernel/ipv4/tcp_wmem_min 248 chown system system /sys/kernel/ipv4/tcp_wmem_def 249 chown system system /sys/kernel/ipv4/tcp_wmem_max 250 chown system system /sys/kernel/ipv4/tcp_rmem_min 251 chown system system /sys/kernel/ipv4/tcp_rmem_def 252 chown system system /sys/kernel/ipv4/tcp_rmem_max 253 chown root radio /proc/cmdline 254 255# Define TCP buffer sizes for various networks 256# ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax, 257 setprop net.tcp.buffersize.default 4096,87380,110208,4096,16384,110208 258 setprop net.tcp.buffersize.wifi 524288,1048576,2097152,262144,524288,1048576 259 setprop net.tcp.buffersize.lte 524288,1048576,2097152,262144,524288,1048576 260 setprop net.tcp.buffersize.umts 4094,87380,110208,4096,16384,110208 261 setprop net.tcp.buffersize.hspa 4094,87380,262144,4096,16384,262144 262 setprop net.tcp.buffersize.edge 4093,26280,35040,4096,16384,35040 263 setprop net.tcp.buffersize.gprs 4092,8760,11680,4096,8760,11680 264 265# Set this property so surfaceflinger is not started by system_init 266 setprop system_init.startsurfaceflinger 0 267 268 class_start core 269 class_start main 270 271on nonencrypted 272 class_start late_start 273 274on charger 275 class_start charger 276 277on property:vold.decrypt=trigger_reset_main 278 class_reset main 279 280on property:vold.decrypt=trigger_load_persist_props 281 load_persist_props 282 283on property:vold.decrypt=trigger_post_fs_data 284 trigger post-fs-data 285 286on property:vold.decrypt=trigger_restart_min_framework 287 class_start main 288 289on property:vold.decrypt=trigger_restart_framework 290 class_start main 291 class_start late_start 292 293on property:vold.decrypt=trigger_shutdown_framework 294 class_reset late_start 295 class_reset main 296 297# Used to disable USB when switching states 298on property:sys.usb.config=none 299 stop adbd 300 write /sys/class/android_usb/android0/enable 0 301 write /sys/class/android_usb/android0/bDeviceClass 0 302 setprop sys.usb.state $sys.usb.config 303 304# adb only USB configuration 305# This should only be used during device bringup 306# and as a fallback if the USB manager fails to set a standard configuration 307on property:sys.usb.config=adb 308 write /sys/class/android_usb/android0/enable 0 309 write /sys/class/android_usb/android0/idVendor 18d1 310 write /sys/class/android_usb/android0/idProduct D002 311 write /sys/class/android_usb/android0/functions $sys.usb.config 312 write /sys/class/android_usb/android0/enable 1 313 start adbd 314 setprop sys.usb.state $sys.usb.config 315 316# USB accessory configuration 317on property:sys.usb.config=accessory 318 write /sys/class/android_usb/android0/enable 0 319 write /sys/class/android_usb/android0/idVendor 18d1 320 write /sys/class/android_usb/android0/idProduct 2d00 321 write /sys/class/android_usb/android0/functions $sys.usb.config 322 write /sys/class/android_usb/android0/enable 1 323 setprop sys.usb.state $sys.usb.config 324 325# USB accessory configuration, with adb 326on property:sys.usb.config=accessory,adb 327 write /sys/class/android_usb/android0/enable 0 328 write /sys/class/android_usb/android0/idVendor 18d1 329 write /sys/class/android_usb/android0/idProduct 2d01 330 write /sys/class/android_usb/android0/functions $sys.usb.config 331 write /sys/class/android_usb/android0/enable 1 332 start adbd 333 setprop sys.usb.state $sys.usb.config 334 335# Used to set USB configuration at boot and to switch the configuration 336# when changing the default configuration 337on property:persist.sys.usb.config=* 338 setprop sys.usb.config $persist.sys.usb.config 339 340## Daemon processes to be run by init. 341## 342service ueventd /sbin/ueventd 343 class core 344 critical 345 346service console /system/bin/sh 347 class core 348 console 349 disabled 350 user shell 351 group log 352 353on property:ro.debuggable=1 354 start console 355 356# adbd is controlled via property triggers in init.<platform>.usb.rc 357service adbd /sbin/adbd 358 class core 359 disabled 360 361# adbd on at boot in emulator 362on property:ro.kernel.qemu=1 363 start adbd 364 365# This property trigger has added to imitiate the previous behavior of "adb root". 366# The adb gadget driver used to reset the USB bus when the adbd daemon exited, 367# and the host side adb relied on this behavior to force it to reconnect with the 368# new adbd instance after init relaunches it. So now we force the USB bus to reset 369# here when adbd sets the service.adb.root property to 1. We also restart adbd here 370# rather than waiting for init to notice its death and restarting it so the timing 371# of USB resetting and adb restarting more closely matches the previous behavior. 372on property:service.adb.root=1 373 write /sys/class/android_usb/android0/enable 0 374 restart adbd 375 write /sys/class/android_usb/android0/enable 1 376 377service servicemanager /system/bin/servicemanager 378 class core 379 user system 380 group system 381 critical 382 onrestart restart zygote 383 onrestart restart media 384 onrestart restart surfaceflinger 385 onrestart restart drm 386 387service vold /system/bin/vold 388 class core 389 socket vold stream 0660 root mount 390 ioprio be 2 391 392service netd /system/bin/netd 393 class main 394 socket netd stream 0660 root system 395 socket dnsproxyd stream 0660 root inet 396 397service debuggerd /system/bin/debuggerd 398 class main 399 400service ril-daemon /system/bin/rild 401 class main 402 socket rild stream 660 root radio 403 socket rild-debug stream 660 radio system 404 user root 405 group radio cache inet misc audio sdcard_rw log 406 407service surfaceflinger /system/bin/surfaceflinger 408 class main 409 user system 410 group graphics 411 onrestart restart zygote 412 413service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server 414 class main 415 socket zygote stream 666 416 onrestart write /sys/android_power/request_state wake 417 onrestart write /sys/power/state on 418 onrestart restart media 419 onrestart restart netd 420 421service drm /system/bin/drmserver 422 class main 423 user drm 424 group system inet drmrpc 425 426service media /system/bin/mediaserver 427 class main 428 user media 429 group audio camera inet net_bt net_bt_admin net_bw_acct drmrpc 430 ioprio rt 4 431 432service bootanim /system/bin/bootanimation 433 class main 434 user graphics 435 group graphics 436 disabled 437 oneshot 438 439service dbus /system/bin/dbus-daemon --system --nofork 440 class main 441 socket dbus stream 660 bluetooth bluetooth 442 user bluetooth 443 group bluetooth net_bt_admin 444 445service bluetoothd /system/bin/bluetoothd -n 446 class main 447 socket bluetooth stream 660 bluetooth bluetooth 448 socket dbus_bluetooth stream 660 bluetooth bluetooth 449 # init.rc does not yet support applying capabilities, so run as root and 450 # let bluetoothd drop uid to bluetooth with the right linux capabilities 451 group bluetooth net_bt_admin misc 452 disabled 453 454service installd /system/bin/installd 455 class main 456 socket installd stream 600 system system 457 458service flash_recovery /system/etc/install-recovery.sh 459 class main 460 oneshot 461 462service racoon /system/bin/racoon 463 class main 464 socket racoon stream 600 system system 465 # IKE uses UDP port 500. Racoon will setuid to vpn after binding the port. 466 group vpn net_admin inet 467 disabled 468 oneshot 469 470service mtpd /system/bin/mtpd 471 class main 472 socket mtpd stream 600 system system 473 user vpn 474 group vpn net_admin inet net_raw 475 disabled 476 oneshot 477 478service keystore /system/bin/keystore /data/misc/keystore 479 class main 480 user keystore 481 group keystore 482 socket keystore stream 666 483 484service dumpstate /system/bin/dumpstate -s 485 class main 486 socket dumpstate stream 0660 shell log 487 disabled 488 oneshot 489