Android Recovery support adb shell
The recent development process has noted that recovery does not support ADB shell and has decided to increase this functionality for ease of debugging.
At first we adopted the user version of the system, enter the recovery after entering the ADB shell command, prompted "Error:no devices/emulators found", we first confirm whether the recovery.img contains ADB, see out\ Debug\target\product\xxx\recovery\root\sbin If there is an adb file (source code \system\core\adb), then check \bootable\recovery\etc\ Init.rc under About ADBD
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 # always start adbd on Userdebug and Engbuildson property:ro.debuggable=1 writ E/sys/class/android_usb/android0/enable 1 start adbd # Restart ADBD so it can run as Rooton property:service.adb.root =1 write/sys/class/android_usb/android0/enable 0 Restart Adbdwrite/sys/class/android_usb/android0/enable 1
From the above, Init.rc ADBD is configured, disabled indicates that the boot does not start, such as Ro.debuggable is set to 1, then the ADB will open, or service.adb.root setting to 1, then restart ADBD.
Ro.debuggable the contents of the \build\core\main.mk below the value
Ifeq (true,$ (strip$ (enable_target_debugging))) #Target are more debuggable and adbd are on by default Additional_defaul T_properties + = ro.debuggable=1
Enable_target_debugging the contents below the \BUILD\CORE\MAIN.MK:
# # User/userdebug # # User_variant: = $ (Filter useruserdebug,$ (target_build_variant)) Enable_target_debugging: = Truetags_to_install: =ifneq (, $ (user_variant)) #Target is secure in user builds. Additional_default_properties + = ro.secure=1 ifeq ($ (user_variant), userdebug) #Pick up some extra useful tools Tags_to_install + = Debug #Enable Dalvik lock contention logging for Userdebug builds. Additional_build_properties + = dalvik.vm.lockprof.threshold=500 else #Disable debugging in plain user builds. Enable_target_debugging: = #Add for testusbdebugging () additional_default_properties + = ro.adb.secure=1 Endif ... Endif
The default is enable_target_debugging: = True, according to the value of user_variant if the user, then enable_target_debugging: =, this and target_build_ Variant, this variable corresponds to a value in variant_choices= (User Userdebug Eng), which is chosen by us, related to the implementation in \build\envsetup.sh.
According to the above, if you choose Userdebug or eng at compile time, then ro.debuggable=1, below we choose ENG version compiled recovery.img, enter recovery, enter the ADB shell command, prompt:
Exec '/system/bin/sh ' failed:no such Fileor directory (2)
Indicates that there is no sh this file, unable to enter the shell, check the RAMDisk file system directory for (Out\debug\target\product\xxx\recovery\root\system) empty, But we know boot.img under IS can, see \system\core\rootdir\init.rc check boot.img start init.rc about SH
Service console/system/bin/sh class core console disabled user Shell Group Shell log Seclabel u:r:shell:s0 on Property:ro.debuggable=1start console
This is the start of the SH console, so you need to add the appropriate content in Bootable\recovery\etc\init.rc:
Figure 1
We know that there is no Bin folder under Out\debug\target\product\xxx\recovery\root\system (of course, there is no sh), so it needs to be created at compile time, need \build\core\ Makefile Add Create directory and copy/system/bin/sh from out directory to Out/recovery/system/bin directory
Figure 2
But this still does not work, and later know that the recovery executable is statically compiled, because there is no shared library in recovery mode and there is a lack of dynamic link insecure library carrier (/system/bin/linker, Android dynamic connector linker with static connector LD).
So \external\mksh\android.mk
Figure 3
Reference Links:
Android recovery.img support adb shell
http://blog.csdn.net/chituhuan/article/details/52383655
[Imx6q] [Android5.1] Porting notes---Recovery Mode's shell feature implementation (Sh+toolbox)
http://blog.csdn.net/kris_fei/article/details/50921384
Android Recovery Support Adb
Http://www.jianshu.com/p/a0bdcce0a5e1
Android Recovery support adb shell