xref: /aosp_15_r20/bootable/recovery/etc/init.rc (revision e7c364b630b241adcb6c7726a21055250b91fdac)
1*e7c364b6SAndroid Build Coastguard Workerimport /init.recovery.${ro.hardware}.rc
2*e7c364b6SAndroid Build Coastguard Worker
3*e7c364b6SAndroid Build Coastguard Workeron early-init
4*e7c364b6SAndroid Build Coastguard Worker    # Set the security context of /postinstall if present.
5*e7c364b6SAndroid Build Coastguard Worker    restorecon /postinstall
6*e7c364b6SAndroid Build Coastguard Worker
7*e7c364b6SAndroid Build Coastguard Worker    # Copy prebuilt ld.config.txt into linkerconfig directory
8*e7c364b6SAndroid Build Coastguard Worker    copy /system/etc/ld.config.txt /linkerconfig/ld.config.txt
9*e7c364b6SAndroid Build Coastguard Worker    chmod 444 /linkerconfig/ld.config.txt
10*e7c364b6SAndroid Build Coastguard Worker
11*e7c364b6SAndroid Build Coastguard Worker    start ueventd
12*e7c364b6SAndroid Build Coastguard Worker
13*e7c364b6SAndroid Build Coastguard Worker    setprop sys.usb.configfs 0
14*e7c364b6SAndroid Build Coastguard Worker
15*e7c364b6SAndroid Build Coastguard Workeron init
16*e7c364b6SAndroid Build Coastguard Worker    export ANDROID_ROOT /system
17*e7c364b6SAndroid Build Coastguard Worker    export ANDROID_DATA /data
18*e7c364b6SAndroid Build Coastguard Worker    export EXTERNAL_STORAGE /sdcard
19*e7c364b6SAndroid Build Coastguard Worker
20*e7c364b6SAndroid Build Coastguard Worker    symlink /proc/self/fd/0 /dev/stdin
21*e7c364b6SAndroid Build Coastguard Worker    symlink /proc/self/fd/1 /dev/stdout
22*e7c364b6SAndroid Build Coastguard Worker    symlink /proc/self/fd/2 /dev/stderr
23*e7c364b6SAndroid Build Coastguard Worker
24*e7c364b6SAndroid Build Coastguard Worker    symlink /system/bin /bin
25*e7c364b6SAndroid Build Coastguard Worker    symlink /system/etc /etc
26*e7c364b6SAndroid Build Coastguard Worker
27*e7c364b6SAndroid Build Coastguard Worker    mkdir /sdcard
28*e7c364b6SAndroid Build Coastguard Worker    mkdir /system
29*e7c364b6SAndroid Build Coastguard Worker    mkdir /data
30*e7c364b6SAndroid Build Coastguard Worker    mkdir /cache
31*e7c364b6SAndroid Build Coastguard Worker    mkdir /sideload
32*e7c364b6SAndroid Build Coastguard Worker    mkdir /mnt/system
33*e7c364b6SAndroid Build Coastguard Worker    mount tmpfs tmpfs /tmp
34*e7c364b6SAndroid Build Coastguard Worker
35*e7c364b6SAndroid Build Coastguard Worker    chown root shell /tmp
36*e7c364b6SAndroid Build Coastguard Worker    chmod 0775 /tmp
37*e7c364b6SAndroid Build Coastguard Worker
38*e7c364b6SAndroid Build Coastguard Worker    write /proc/sys/kernel/panic_on_oops 1
39*e7c364b6SAndroid Build Coastguard Worker    write /proc/sys/vm/max_map_count 1000000
40*e7c364b6SAndroid Build Coastguard Worker
41*e7c364b6SAndroid Build Coastguard Worker    # Mount binderfs
42*e7c364b6SAndroid Build Coastguard Worker    mkdir /dev/binderfs
43*e7c364b6SAndroid Build Coastguard Worker    mount binder binder /dev/binderfs stats=global
44*e7c364b6SAndroid Build Coastguard Worker    chmod 0755 /dev/binderfs
45*e7c364b6SAndroid Build Coastguard Worker
46*e7c364b6SAndroid Build Coastguard Worker    symlink /dev/binderfs/binder /dev/binder
47*e7c364b6SAndroid Build Coastguard Worker    chmod 0666 /dev/binderfs/binder
48*e7c364b6SAndroid Build Coastguard Worker
49*e7c364b6SAndroid Build Coastguard Worker    # Start essential services
50*e7c364b6SAndroid Build Coastguard Worker    start servicemanager
51*e7c364b6SAndroid Build Coastguard Worker
52*e7c364b6SAndroid Build Coastguard Workeron boot
53*e7c364b6SAndroid Build Coastguard Worker    ifup lo
54*e7c364b6SAndroid Build Coastguard Worker    hostname localhost
55*e7c364b6SAndroid Build Coastguard Worker    domainname localdomain
56*e7c364b6SAndroid Build Coastguard Worker
57*e7c364b6SAndroid Build Coastguard Worker    class_start default
58*e7c364b6SAndroid Build Coastguard Worker    class_start hal
59*e7c364b6SAndroid Build Coastguard Worker
60*e7c364b6SAndroid Build Coastguard Workeron firmware_mounts_complete
61*e7c364b6SAndroid Build Coastguard Worker   rm /dev/.booting
62*e7c364b6SAndroid Build Coastguard Worker
63*e7c364b6SAndroid Build Coastguard Worker# Mount filesystems and start core system services.
64*e7c364b6SAndroid Build Coastguard Workeron late-init
65*e7c364b6SAndroid Build Coastguard Worker    trigger early-fs
66*e7c364b6SAndroid Build Coastguard Worker    trigger fs
67*e7c364b6SAndroid Build Coastguard Worker    trigger post-fs
68*e7c364b6SAndroid Build Coastguard Worker    trigger post-fs-data
69*e7c364b6SAndroid Build Coastguard Worker
70*e7c364b6SAndroid Build Coastguard Worker    # Remove a file to wake up anything waiting for firmware
71*e7c364b6SAndroid Build Coastguard Worker    trigger firmware_mounts_complete
72*e7c364b6SAndroid Build Coastguard Worker
73*e7c364b6SAndroid Build Coastguard Worker    trigger early-boot
74*e7c364b6SAndroid Build Coastguard Worker    trigger boot
75*e7c364b6SAndroid Build Coastguard Worker
76*e7c364b6SAndroid Build Coastguard Workerservice ueventd /system/bin/ueventd
77*e7c364b6SAndroid Build Coastguard Worker    critical
78*e7c364b6SAndroid Build Coastguard Worker    seclabel u:r:ueventd:s0
79*e7c364b6SAndroid Build Coastguard Worker    user root
80*e7c364b6SAndroid Build Coastguard Worker
81*e7c364b6SAndroid Build Coastguard Workerservice charger /system/bin/charger
82*e7c364b6SAndroid Build Coastguard Worker    critical
83*e7c364b6SAndroid Build Coastguard Worker    seclabel u:r:charger:s0
84*e7c364b6SAndroid Build Coastguard Worker    user root
85*e7c364b6SAndroid Build Coastguard Worker
86*e7c364b6SAndroid Build Coastguard Workerservice recovery /system/bin/recovery
87*e7c364b6SAndroid Build Coastguard Worker    socket recovery stream 422 system system
88*e7c364b6SAndroid Build Coastguard Worker    seclabel u:r:recovery:s0
89*e7c364b6SAndroid Build Coastguard Worker    user root
90*e7c364b6SAndroid Build Coastguard Worker
91*e7c364b6SAndroid Build Coastguard Workerservice adbd /system/bin/adbd --root_seclabel=u:r:su:s0 --device_banner=recovery
92*e7c364b6SAndroid Build Coastguard Worker    disabled
93*e7c364b6SAndroid Build Coastguard Worker    socket adbd stream 660 system system
94*e7c364b6SAndroid Build Coastguard Worker    seclabel u:r:adbd:s0
95*e7c364b6SAndroid Build Coastguard Worker    user root
96*e7c364b6SAndroid Build Coastguard Worker
97*e7c364b6SAndroid Build Coastguard Workerservice fastbootd /system/bin/fastbootd
98*e7c364b6SAndroid Build Coastguard Worker    disabled
99*e7c364b6SAndroid Build Coastguard Worker    group system
100*e7c364b6SAndroid Build Coastguard Worker    seclabel u:r:fastbootd:s0
101*e7c364b6SAndroid Build Coastguard Worker    user root
102*e7c364b6SAndroid Build Coastguard Worker
103*e7c364b6SAndroid Build Coastguard Worker# Restart adbd so it can run as root
104*e7c364b6SAndroid Build Coastguard Workeron property:service.adb.root=1
105*e7c364b6SAndroid Build Coastguard Worker    restart adbd
106*e7c364b6SAndroid Build Coastguard Worker
107*e7c364b6SAndroid Build Coastguard Workeron fs && property:sys.usb.configfs=1
108*e7c364b6SAndroid Build Coastguard Worker    mount configfs none /config
109*e7c364b6SAndroid Build Coastguard Worker    mkdir /config/usb_gadget/g1 0770 shell shell
110*e7c364b6SAndroid Build Coastguard Worker    write /config/usb_gadget/g1/idVendor 0x${ro.recovery.usb.vid}
111*e7c364b6SAndroid Build Coastguard Worker    mkdir /config/usb_gadget/g1/strings/0x409 0770
112*e7c364b6SAndroid Build Coastguard Worker    write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
113*e7c364b6SAndroid Build Coastguard Worker    write /config/usb_gadget/g1/strings/0x409/manufacturer ${ro.product.manufacturer}
114*e7c364b6SAndroid Build Coastguard Worker    write /config/usb_gadget/g1/strings/0x409/product ${ro.product.model}
115*e7c364b6SAndroid Build Coastguard Worker    mkdir /config/usb_gadget/g1/functions/ffs.adb
116*e7c364b6SAndroid Build Coastguard Worker    mkdir /config/usb_gadget/g1/functions/ffs.fastboot
117*e7c364b6SAndroid Build Coastguard Worker    mkdir /config/usb_gadget/g1/configs/b.1 0777 shell shell
118*e7c364b6SAndroid Build Coastguard Worker    # Set current limit to 900mA (b/277022505)
119*e7c364b6SAndroid Build Coastguard Worker    write /config/usb_gadget/g1/configs/b.1/MaxPower 0x384
120*e7c364b6SAndroid Build Coastguard Worker    mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770 shell shell
121*e7c364b6SAndroid Build Coastguard Worker
122*e7c364b6SAndroid Build Coastguard Workeron fs && property:sys.usb.configfs=0
123*e7c364b6SAndroid Build Coastguard Worker    write /sys/class/android_usb/android0/f_ffs/aliases adb,fastboot
124*e7c364b6SAndroid Build Coastguard Worker    write /sys/class/android_usb/android0/idVendor ${ro.recovery.usb.vid}
125*e7c364b6SAndroid Build Coastguard Worker    write /sys/class/android_usb/android0/iManufacturer ${ro.product.manufacturer}
126*e7c364b6SAndroid Build Coastguard Worker    write /sys/class/android_usb/android0/iProduct ${ro.product.model}
127*e7c364b6SAndroid Build Coastguard Worker    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
128*e7c364b6SAndroid Build Coastguard Worker
129*e7c364b6SAndroid Build Coastguard Workeron fs
130*e7c364b6SAndroid Build Coastguard Worker    mkdir /dev/usb-ffs 0775 shell shell
131*e7c364b6SAndroid Build Coastguard Worker    mkdir /dev/usb-ffs/adb 0770 shell shell
132*e7c364b6SAndroid Build Coastguard Worker    mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
133*e7c364b6SAndroid Build Coastguard Worker    mkdir /dev/usb-ffs/fastboot 0770 system system
134*e7c364b6SAndroid Build Coastguard Worker    mount functionfs fastboot /dev/usb-ffs/fastboot rmode=0770,fmode=0660,uid=1000,gid=1000
135*e7c364b6SAndroid Build Coastguard Worker
136*e7c364b6SAndroid Build Coastguard Workeron property:sys.usb.config=adb
137*e7c364b6SAndroid Build Coastguard Worker    start adbd
138*e7c364b6SAndroid Build Coastguard Worker
139*e7c364b6SAndroid Build Coastguard Workeron property:sys.usb.config=fastboot
140*e7c364b6SAndroid Build Coastguard Worker    start fastbootd
141*e7c364b6SAndroid Build Coastguard Worker
142*e7c364b6SAndroid Build Coastguard Workeron property:sys.usb.config=none && property:sys.usb.configfs=0
143*e7c364b6SAndroid Build Coastguard Worker    stop adbd
144*e7c364b6SAndroid Build Coastguard Worker    stop fastbootd
145*e7c364b6SAndroid Build Coastguard Worker    write /sys/class/android_usb/android0/enable 0
146*e7c364b6SAndroid Build Coastguard Worker    setprop sys.usb.state ${sys.usb.config}
147*e7c364b6SAndroid Build Coastguard Worker
148*e7c364b6SAndroid Build Coastguard Workeron property:sys.usb.config=adb && property:sys.usb.configfs=0
149*e7c364b6SAndroid Build Coastguard Worker    write /sys/class/android_usb/android0/idProduct ${ro.recovery.usb.adb.pid}
150*e7c364b6SAndroid Build Coastguard Worker    write /sys/class/android_usb/android0/functions adb
151*e7c364b6SAndroid Build Coastguard Worker    write /sys/class/android_usb/android0/enable 1
152*e7c364b6SAndroid Build Coastguard Worker    setprop sys.usb.state ${sys.usb.config}
153*e7c364b6SAndroid Build Coastguard Worker
154*e7c364b6SAndroid Build Coastguard Workeron property:sys.usb.config=sideload && property:sys.usb.configfs=0
155*e7c364b6SAndroid Build Coastguard Worker    write /sys/class/android_usb/android0/idProduct ${ro.recovery.usb.adb.pid}
156*e7c364b6SAndroid Build Coastguard Worker    write /sys/class/android_usb/android0/functions adb
157*e7c364b6SAndroid Build Coastguard Worker    write /sys/class/android_usb/android0/enable 1
158*e7c364b6SAndroid Build Coastguard Worker    setprop sys.usb.state ${sys.usb.config}
159*e7c364b6SAndroid Build Coastguard Worker
160*e7c364b6SAndroid Build Coastguard Workeron property:sys.usb.config=fastboot && property:sys.usb.configfs=0
161*e7c364b6SAndroid Build Coastguard Worker    write /sys/class/android_usb/android0/idProduct ${ro.recovery.usb.fastboot.pid}
162*e7c364b6SAndroid Build Coastguard Worker    write /sys/class/android_usb/android0/functions fastboot
163*e7c364b6SAndroid Build Coastguard Worker    write /sys/class/android_usb/android0/enable 1
164*e7c364b6SAndroid Build Coastguard Worker    setprop sys.usb.state ${sys.usb.config}
165*e7c364b6SAndroid Build Coastguard Worker
166*e7c364b6SAndroid Build Coastguard Worker# Configfs triggers
167*e7c364b6SAndroid Build Coastguard Workeron property:sys.usb.config=none && property:sys.usb.configfs=1
168*e7c364b6SAndroid Build Coastguard Worker    write /config/usb_gadget/g1/UDC "none"
169*e7c364b6SAndroid Build Coastguard Worker    stop adbd
170*e7c364b6SAndroid Build Coastguard Worker    stop fastbootd
171*e7c364b6SAndroid Build Coastguard Worker    setprop sys.usb.ffs.ready 0
172*e7c364b6SAndroid Build Coastguard Worker    rm /config/usb_gadget/g1/configs/b.1/f1
173*e7c364b6SAndroid Build Coastguard Worker    setprop sys.usb.state ${sys.usb.config}
174*e7c364b6SAndroid Build Coastguard Worker
175*e7c364b6SAndroid Build Coastguard Workeron property:sys.usb.config=sideload && property:sys.usb.ffs.ready=1 && property:sys.usb.configfs=1
176*e7c364b6SAndroid Build Coastguard Worker    write /config/usb_gadget/g1/idProduct 0x${ro.recovery.usb.adb.pid}
177*e7c364b6SAndroid Build Coastguard Worker    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "adb"
178*e7c364b6SAndroid Build Coastguard Worker    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1
179*e7c364b6SAndroid Build Coastguard Worker    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
180*e7c364b6SAndroid Build Coastguard Worker    setprop sys.usb.state ${sys.usb.config}
181*e7c364b6SAndroid Build Coastguard Worker
182*e7c364b6SAndroid Build Coastguard Workeron property:sys.usb.config=adb && property:sys.usb.ffs.ready=1 && property:sys.usb.configfs=1
183*e7c364b6SAndroid Build Coastguard Worker    write /config/usb_gadget/g1/idProduct 0x${ro.recovery.usb.adb.pid}
184*e7c364b6SAndroid Build Coastguard Worker    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "adb"
185*e7c364b6SAndroid Build Coastguard Worker    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1
186*e7c364b6SAndroid Build Coastguard Worker    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
187*e7c364b6SAndroid Build Coastguard Worker    setprop sys.usb.state ${sys.usb.config}
188*e7c364b6SAndroid Build Coastguard Worker
189*e7c364b6SAndroid Build Coastguard Workeron property:sys.usb.config=fastboot && property:sys.usb.ffs.ready=1 && property:sys.usb.configfs=1
190*e7c364b6SAndroid Build Coastguard Worker    write /config/usb_gadget/g1/idProduct 0x${ro.recovery.usb.fastboot.pid}
191*e7c364b6SAndroid Build Coastguard Worker    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "fastboot"
192*e7c364b6SAndroid Build Coastguard Worker    symlink /config/usb_gadget/g1/functions/ffs.fastboot /config/usb_gadget/g1/configs/b.1/f1
193*e7c364b6SAndroid Build Coastguard Worker    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
194*e7c364b6SAndroid Build Coastguard Worker    setprop sys.usb.state ${sys.usb.config}
195