summaryrefslogtreecommitdiffstats
path: root/etc/init.rc
blob: e070438ff4d3641b45874fcdf892f710108713dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
import /init.recovery.${ro.hardware}.rc

on early-init
    start ueventd
    start healthd

on init
    export ANDROID_ROOT /system
    export ANDROID_DATA /data
    export EXTERNAL_STORAGE /sdcard

    symlink /system/etc /etc

    mkdir /sdcard
    mkdir /system
    mkdir /data
    mkdir /cache
    mkdir /sideload
    mount tmpfs tmpfs /tmp

    chown root shell /tmp
    chmod 0775 /tmp

    mkdir /mnt 0775 root system
    mkdir /storage 0050 root sdcard_r
    mount tmpfs tmpfs /storage mode=0050,uid=0,gid=1028

    # See storage config details at http://source.android.com/tech/storage/
    mkdir /mnt/shell 0700 shell shell

    # Directory for putting things only root should see.
    mkdir /mnt/secure 0700 root root

    # Create private mountpoint so we can MS_MOVE from staging
    mount tmpfs tmpfs /mnt/secure mode=0700,uid=0,gid=0

    # Directory for staging bindmounts
    mkdir /mnt/secure/staging 0700 root root

    # Fuse public mount points.
    mkdir /mnt/fuse 0700 root system
    mount tmpfs tmpfs /mnt/fuse mode=0775,gid=1000

    write /proc/sys/kernel/panic_on_oops 1
    write /proc/sys/vm/max_map_count 1000000

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/enable 0
    write /sys/class/android_usb/android0/idVendor 18D1
    write /sys/class/android_usb/android0/idProduct D001
    write /sys/class/android_usb/android0/f_ffs/aliases adb
    write /sys/class/android_usb/android0/functions adb
    write /sys/class/android_usb/android0/iManufacturer ${ro.product.manufacturer}
    write /sys/class/android_usb/android0/iProduct ${ro.product.model}
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}

on boot
    ifup lo
    hostname localhost
    domainname localdomain

    class_start default

# Load properties from /system/ + /factory after fs mount.
on load_system_props_action
    load_system_props

on load_persist_props_action
    load_persist_props

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
    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_system_props_action

    # Vendor init lives here
    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 property:sys.powerctl=*
   powerctl ${sys.powerctl}

service ueventd /sbin/ueventd
    critical
    seclabel u:r:ueventd:s0

service healthd /sbin/healthd -r
    critical
    seclabel u:r:healthd:s0

service recovery /sbin/recovery
    seclabel u:r:recovery:s0

service setup_adbd /sbin/setup_adbd
    oneshot
    seclabel u:r:recovery:s0
    disabled

service adbd /sbin/adbd --root_seclabel=u:r:su:s0 --device_banner=recovery
    disabled
    socket adbd stream 660 system system
    seclabel u:r:adbd:s0

service vold /sbin/minivold \
	--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
    socket vold stream 0660 root mount
    socket cryptd stream 0660 root mount
    ioprio be 2
    setenv BLKID_FILE /tmp/vold_blkid.tab
    seclabel u:r:vold:s0

# setup_adbd will start adb once it has checked the keys
on property:ro.debuggable=1
    start setup_adbd

on property:service.adb.root=1
    write /sys/class/android_usb/android0/enable 0
    restart adbd
    write /sys/class/android_usb/android0/enable 1

on property:sys.storage.ums_enabled=1
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/functions adb,mass_storage
    write /sys/class/android_usb/android0/enable 1

on property:sys.storage.ums_enabled=0
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/functions adb
    write /sys/class/android_usb/android0/enable ${service.adb.root}