init.rc revision c7858a3dde9db1c4cf2563a4388f422ff1bcb334
1on early-init
2    start ueventd
3
4on init
5
6sysclktz 0
7
8loglevel 3
9
10# setup the global environment
11    export PATH /sbin:/system/sbin:/system/bin:/system/xbin
12    export LD_LIBRARY_PATH /system/lib
13    export ANDROID_BOOTLOGO 1
14    export ANDROID_ROOT /system
15    export ANDROID_ASSETS /system/app
16    export ANDROID_DATA /data
17    export EXTERNAL_STORAGE /mnt/sdcard
18    export ASEC_MOUNTPOINT /mnt/asec
19    export LOOP_MOUNTPOINT /mnt/obb
20    export BOOTCLASSPATH /system/framework/core.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar
21
22# Backward compatibility
23    symlink /system/etc /etc
24    symlink /sys/kernel/debug /d
25
26# create mountpoints
27    mkdir /mnt 0775 root system
28    mkdir /mnt/sdcard 0000 system system
29
30# Create cgroup mount point for cpu accounting
31    mkdir /acct
32    mount cgroup none /acct cpuacct
33    mkdir /acct/uid
34
35# Backwards Compat - XXX: Going away in G*
36    symlink /mnt/sdcard /sdcard
37
38    mkdir /system
39    mkdir /data 0771 system system
40    mkdir /cache 0770 system cache
41    mkdir /config 0500 root root
42
43    # Directory for putting things only root should see.
44    mkdir /mnt/secure 0700 root root
45
46    # Directory for staging bindmounts
47    mkdir /mnt/secure/staging 0700 root root
48
49    # Directory-target for where the secure container
50    # imagefile directory will be bind-mounted
51    mkdir /mnt/secure/asec  0700 root root
52
53    # Secure container public mount points.
54    mkdir /mnt/asec  0700 root system
55    mount tmpfs tmpfs /mnt/asec mode=0755,gid=1000
56
57    # Filesystem image public mount points.
58    mkdir /mnt/obb 0700 root system
59    mount tmpfs tmpfs /mnt/obb mode=0755,gid=1000
60
61    mount rootfs rootfs / ro remount
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
71# Create cgroup mount points for process groups
72    mkdir /dev/cpuctl
73    mount cgroup none /dev/cpuctl cpu
74    chown system system /dev/cpuctl
75    chown system system /dev/cpuctl/tasks
76    chmod 0777 /dev/cpuctl/tasks
77    write /dev/cpuctl/cpu.shares 1024
78
79    mkdir /dev/cpuctl/fg_boost
80    chown system system /dev/cpuctl/fg_boost/tasks
81    chmod 0777 /dev/cpuctl/fg_boost/tasks
82    write /dev/cpuctl/fg_boost/cpu.shares 1024
83
84    mkdir /dev/cpuctl/bg_non_interactive
85    chown system system /dev/cpuctl/bg_non_interactive/tasks
86    chmod 0777 /dev/cpuctl/bg_non_interactive/tasks
87    # 5.0 %
88    write /dev/cpuctl/bg_non_interactive/cpu.shares 52
89
90on fs
91# mount mtd partitions
92    # Mount /system rw first to give the filesystem a chance to save a checkpoint
93    mount yaffs2 mtd@system /system
94    mount yaffs2 mtd@system /system ro remount
95    mount yaffs2 mtd@userdata /data nosuid nodev
96    mount yaffs2 mtd@cache /cache nosuid nodev
97
98on post-fs
99    # We chown/chmod /data again so because mount is run as root + defaults
100    chown system system /data
101    chmod 0771 /data
102
103    # Create dump dir and collect dumps.
104    # Do this before we mount cache so eventually we can use cache for
105    # storing dumps on platforms which do not have a dedicated dump partition.
106   
107    mkdir /data/dontpanic
108    chown root log /data/dontpanic
109    chmod 0750 /data/dontpanic
110
111    # Collect apanic data, free resources and re-arm trigger
112    copy /proc/apanic_console /data/dontpanic/apanic_console
113    chown root log /data/dontpanic/apanic_console
114    chmod 0640 /data/dontpanic/apanic_console
115
116    copy /proc/apanic_threads /data/dontpanic/apanic_threads
117    chown root log /data/dontpanic/apanic_threads
118    chmod 0640 /data/dontpanic/apanic_threads
119
120    write /proc/apanic_console 1
121
122    # Same reason as /data above
123    chown system cache /cache
124    chmod 0770 /cache
125
126    # This may have been created by the recovery system with odd permissions
127    chown system cache /cache/recovery
128    chmod 0770 /cache/recovery
129
130    #change permissions on vmallocinfo so we can grab it from bugreports
131    chown root log /proc/vmallocinfo
132    chmod 0440 /proc/vmallocinfo
133
134    #change permissions on kmsg & sysrq-trigger so bugreports can grab kthread stacks
135    chown root system /proc/kmsg
136    chmod 0440 /proc/kmsg
137    chown root system /proc/sysrq-trigger
138    chmod 0220 /proc/sysrq-trigger
139
140# create basic filesystem structure
141    mkdir /data/misc 01771 system misc
142    mkdir /data/misc/bluetoothd 0770 bluetooth bluetooth
143    mkdir /data/misc/bluetooth 0770 system system
144    mkdir /data/misc/keystore 0700 keystore keystore
145    mkdir /data/misc/vpn 0770 system system
146    mkdir /data/misc/systemkeys 0700 system system
147    mkdir /data/misc/vpn/profiles 0770 system system
148    # give system access to wpa_supplicant.conf for backup and restore
149    mkdir /data/misc/wifi 0770 wifi wifi
150    chmod 0770 /data/misc/wifi
151    chmod 0660 /data/misc/wifi/wpa_supplicant.conf
152    mkdir /data/local 0771 shell shell
153    mkdir /data/local/tmp 0771 shell shell
154    mkdir /data/data 0771 system system
155    mkdir /data/app-private 0771 system system
156    mkdir /data/app 0771 system system
157    mkdir /data/property 0700 root root
158
159    # create dalvik-cache and double-check the perms
160    mkdir /data/dalvik-cache 0771 system system
161    chown system system /data/dalvik-cache
162    chmod 0771 /data/dalvik-cache
163
164    # create the lost+found directories, so as to enforce our permissions
165    mkdir /data/lost+found 0770
166    mkdir /cache/lost+found 0770
167
168    # double check the perms, in case lost+found already exists, and set owner
169    chown root root /data/lost+found
170    chmod 0770 /data/lost+found
171    chown root root /cache/lost+found
172    chmod 0770 /cache/lost+found
173
174on boot
175# basic network init
176    ifup lo
177    hostname localhost
178    domainname localdomain
179
180# set RLIMIT_NICE to allow priorities from 19 to -20
181    setrlimit 13 40 40
182
183# Define the oom_adj values for the classes of processes that can be
184# killed by the kernel.  These are used in ActivityManagerService.
185    setprop ro.FOREGROUND_APP_ADJ 0
186    setprop ro.VISIBLE_APP_ADJ 1
187    setprop ro.PERCEPTIBLE_APP_ADJ 2
188    setprop ro.HEAVY_WEIGHT_APP_ADJ 3
189    setprop ro.SECONDARY_SERVER_ADJ 4
190    setprop ro.BACKUP_APP_ADJ 5
191    setprop ro.HOME_APP_ADJ 6
192    setprop ro.HIDDEN_APP_MIN_ADJ 7
193    setprop ro.EMPTY_APP_ADJ 15
194
195# Define the memory thresholds at which the above process classes will
196# be killed.  These numbers are in pages (4k).
197    setprop ro.FOREGROUND_APP_MEM 2048
198    setprop ro.VISIBLE_APP_MEM 3072
199    setprop ro.PERCEPTIBLE_APP_MEM 4096
200    setprop ro.HEAVY_WEIGHT_APP_MEM 4096
201    setprop ro.SECONDARY_SERVER_MEM 6144
202    setprop ro.BACKUP_APP_MEM 6144
203    setprop ro.HOME_APP_MEM 6144
204    setprop ro.HIDDEN_APP_MEM 7168
205    setprop ro.EMPTY_APP_MEM 8192
206
207# Write value must be consistent with the above properties.
208# Note that the driver only supports 6 slots, so we have combined some of
209# the classes into the same memory level; the associated processes of higher
210# classes will still be killed first.
211    write /sys/module/lowmemorykiller/parameters/adj 0,1,2,4,7,15
212
213    write /proc/sys/vm/overcommit_memory 1
214    write /proc/sys/vm/min_free_order_shift 4
215    write /sys/module/lowmemorykiller/parameters/minfree 2048,3072,4096,6144,7168,8192
216
217    # Set init its forked children's oom_adj.
218    write /proc/1/oom_adj -16
219
220    # Tweak background writeout
221    write /proc/sys/vm/dirty_expire_centisecs 200
222    write /proc/sys/vm/dirty_background_ratio  5
223
224    # Permissions for System Server and daemons.
225    chown radio system /sys/android_power/state
226    chown radio system /sys/android_power/request_state
227    chown radio system /sys/android_power/acquire_full_wake_lock
228    chown radio system /sys/android_power/acquire_partial_wake_lock
229    chown radio system /sys/android_power/release_wake_lock
230    chown radio system /sys/power/state
231    chown radio system /sys/power/wake_lock
232    chown radio system /sys/power/wake_unlock
233    chmod 0660 /sys/power/state
234    chmod 0660 /sys/power/wake_lock
235    chmod 0660 /sys/power/wake_unlock
236    chown system system /sys/class/timed_output/vibrator/enable
237    chown system system /sys/class/leds/keyboard-backlight/brightness
238    chown system system /sys/class/leds/lcd-backlight/brightness
239    chown system system /sys/class/leds/button-backlight/brightness
240    chown system system /sys/class/leds/jogball-backlight/brightness
241    chown system system /sys/class/leds/red/brightness
242    chown system system /sys/class/leds/green/brightness
243    chown system system /sys/class/leds/blue/brightness
244    chown system system /sys/class/leds/red/device/grpfreq
245    chown system system /sys/class/leds/red/device/grppwm
246    chown system system /sys/class/leds/red/device/blink
247    chown system system /sys/class/leds/red/brightness
248    chown system system /sys/class/leds/green/brightness
249    chown system system /sys/class/leds/blue/brightness
250    chown system system /sys/class/leds/red/device/grpfreq
251    chown system system /sys/class/leds/red/device/grppwm
252    chown system system /sys/class/leds/red/device/blink
253    chown system system /sys/class/timed_output/vibrator/enable
254    chown system system /sys/module/sco/parameters/disable_esco
255    chown system system /sys/kernel/ipv4/tcp_wmem_min
256    chown system system /sys/kernel/ipv4/tcp_wmem_def
257    chown system system /sys/kernel/ipv4/tcp_wmem_max
258    chown system system /sys/kernel/ipv4/tcp_rmem_min
259    chown system system /sys/kernel/ipv4/tcp_rmem_def
260    chown system system /sys/kernel/ipv4/tcp_rmem_max
261    chown root radio /proc/cmdline
262
263# Define TCP buffer sizes for various networks
264#   ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax,
265    setprop net.tcp.buffersize.default 4096,87380,110208,4096,16384,110208
266    setprop net.tcp.buffersize.wifi    4095,87380,110208,4096,16384,110208
267    setprop net.tcp.buffersize.umts    4094,87380,110208,4096,16384,110208
268    setprop net.tcp.buffersize.edge    4093,26280,35040,4096,16384,35040
269    setprop net.tcp.buffersize.gprs    4092,8760,11680,4096,8760,11680
270
271    class_start default
272
273## Daemon processes to be run by init.
274##
275service console /system/bin/sh
276    console
277
278service ueventd /sbin/ueventd
279    critical
280
281# adbd is controlled by the persist.service.adb.enable system property
282service adbd /sbin/adbd
283    disabled
284
285# adbd on at boot in emulator
286on property:ro.kernel.qemu=1
287    start adbd
288
289on property:persist.service.adb.enable=1
290    start adbd
291
292on property:persist.service.adb.enable=0
293    stop adbd
294
295service servicemanager /system/bin/servicemanager
296    user system
297    critical
298    onrestart restart zygote
299    onrestart restart media
300
301service vold /system/bin/vold
302    socket vold stream 0660 root mount
303    ioprio be 2
304
305service netd /system/bin/netd
306    socket netd stream 0660 root system
307
308service debuggerd /system/bin/debuggerd
309
310service ril-daemon /system/bin/rild
311    socket rild stream 660 root radio
312    socket rild-debug stream 660 radio system
313    user root
314    group radio cache inet misc audio
315
316service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
317    socket zygote stream 666
318    onrestart write /sys/android_power/request_state wake
319    onrestart write /sys/power/state on
320    onrestart restart media
321
322service media /system/bin/mediaserver
323    user media
324    group system audio camera graphics inet net_bt net_bt_admin net_raw
325    ioprio rt 4
326
327service bootanim /system/bin/bootanimation
328    user graphics
329    group graphics
330    disabled
331    oneshot
332
333service dbus /system/bin/dbus-daemon --system --nofork
334    socket dbus stream 660 bluetooth bluetooth
335    user bluetooth
336    group bluetooth net_bt_admin
337
338service bluetoothd /system/bin/bluetoothd -n
339    socket bluetooth stream 660 bluetooth bluetooth
340    socket dbus_bluetooth stream 660 bluetooth bluetooth
341    # init.rc does not yet support applying capabilities, so run as root and
342    # let bluetoothd drop uid to bluetooth with the right linux capabilities
343    group bluetooth net_bt_admin misc
344    disabled
345
346service hfag /system/bin/sdptool add --channel=10 HFAG
347    user bluetooth
348    group bluetooth net_bt_admin
349    disabled
350    oneshot
351
352service hsag /system/bin/sdptool add --channel=11 HSAG
353    user bluetooth
354    group bluetooth net_bt_admin
355    disabled
356    oneshot
357
358service opush /system/bin/sdptool add --channel=12 OPUSH
359    user bluetooth
360    group bluetooth net_bt_admin
361    disabled
362    oneshot
363
364service pbap /system/bin/sdptool add --channel=19 PBAP
365    user bluetooth
366    group bluetooth net_bt_admin
367    disabled
368    oneshot
369
370service installd /system/bin/installd
371    socket installd stream 600 system system
372
373service flash_recovery /system/etc/install-recovery.sh
374    oneshot
375
376service racoon /system/bin/racoon
377    socket racoon stream 600 system system
378    # racoon will setuid to vpn after getting necessary resources.
379    group net_admin
380    disabled
381    oneshot
382
383service mtpd /system/bin/mtpd
384    socket mtpd stream 600 system system
385    user vpn
386    group vpn net_admin net_raw
387    disabled
388    oneshot
389
390service keystore /system/bin/keystore /data/misc/keystore
391    user keystore
392    group keystore
393    socket keystore stream 666
394
395service dumpstate /system/bin/dumpstate -s
396    socket dumpstate stream 0660 shell log
397    disabled
398    oneshot
399