android_bootable_recovery/etc/init.rc
Mike Kasick 059db9bfb6 Always run adbd as root in recovery.
At present, invoking "adb shell" while in recovery results in:

- exec '/system/bin/sh' failed: No such file or directory (2) -

"adb shell" should invoke /sbin/sh, but cannot as /sbin and /sbin/recovery
lack other-user execute permission.  Invoking "adb root" to restart adbd as
root _does_ work, however this behavior may not be intuitive to users who
encounter the above error.

The solution implemented here is to always run adbd as root in recovery, so
it has permission to run /sbin/sh.  Furthemore, user shells in recovery are
not particularly useful and "su" doesn't exist, thus "adb root" is likely
to be invoked anyways.

Change-Id: Iaaa25090e85d970e9a076fef068f5fae8202ab0b
2012-01-26 16:05:56 -05:00

57 lines
1.4 KiB
Plaintext

on early-init
start ueventd
on init
export PATH /sbin
export ANDROID_ROOT /system
export ANDROID_DATA /data
export EXTERNAL_STORAGE /sdcard
symlink /system/etc /etc
mkdir /boot
mkdir /sdcard
mkdir /sd-ext
mkdir /datadata
mkdir /emmc
mkdir /system
mkdir /data
mkdir /cache
mount /tmp /tmp tmpfs
on boot
ifup lo
hostname localhost
domainname localdomain
class_start default
service ueventd /sbin/ueventd
critical
service recovery /sbin/recovery
service adbd /sbin/adbd recovery
disabled
# Always start adbd on userdebug and eng builds
# In recovery, always run adbd as root.
on property:ro.debuggable=1
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/functions adb
#write /sys/class/android_usb/android0/enable 1
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
#start adbd
setprop service.adb.root 1
# Restart adbd so it can run as root
on property:service.adb.root=1
write /sys/class/android_usb/android0/enable 0
restart adbd
write /sys/class/android_usb/android0/enable 1