1. 程式人生 > >imx6sl recovery mode支援shell

imx6sl recovery mode支援shell

http://blog.csdn.net/kris_fei/article/details/50921384

http://blog.chinaunix.net/uid-22816738-id-4206687.html

https://github.com/CyanogenMod/android_system_core/commit/b78534f1efdd2587041dadc045fbbdade456a442

http://blog.csdn.net/kangear/article/details/43796037

http://blog.csdn.net/loongembedded/article/details/67638687


原生source code是無法通過adb進入recovery mode的,提示如下log。

exec "/system/bin/sh": No such file or directory.


1.編譯靜態mksh, toolbox

external/mksh/Android.mk

#luke moidfy 20170419 st
#LOCAL_SYSTEM_SHARED_LIBRARIES:= libc
LOCAL_STATIC_LIBRARIES := libc
LOCAL_FORCE_STATIC_EXECUTABLE := true
#ed

system/core/toolbox/Android.mk

#luke modify 20170419 st
#LOCAL_SHARED_LIBRARIES := \
        libcutils \
        liblog \
        libc \
        libusbhost \
        libselinux

LOCAL_SHARED_LIBRARIES := \
        libusbhost \

LOCAL_STATIC_LIBRARIES := \
        liblog \
        libcutils \
        libc \
        libselinux

LOCAL_FORCE_STATIC_EXECUTABLE := true
#ed

2.新增檔案與連結檔案

build/core/Makefile

        $(hide) cp $(RECOVERY_INSTALL_OTA_KEYS) $(TARGET_RECOVERY_ROOT_OUT)/res/keys
        $(hide) cat $(INSTALLED_DEFAULT_PROP_TARGET) $(recovery_build_prop) \
                > $(TARGET_RECOVERY_ROOT_OUT)/default.prop
        #luke add st 20170418
        mkdir -p ${TARGET_RECOVERY_ROOT_OUT}/system/bin/
        cp $(PRODUCT_OUT)/system/bin/toolbox $(TARGET_RECOVERY_ROOT_OUT)/sbin/toolbox
        cp $(PRODUCT_OUT)/system/bin/mksh $(TARGET_RECOVERY_ROOT_OUT)/system/bin/mksh
        #ed
        $(hide) $(MKBOOTFS) $(TARGET_RECOVERY_ROOT_OUT) | $(MINIGZIP) > $(recovery_ramdisk)

bootable/recovery/etc/init.rc

    chown root shell /tmp
    chmod 0775 /tmp
    
    #luke add 20170419 st
    symlink /system/bin/mksh /system/bin/sh
    symlink /sbin/toolbox /sbin/ls
    #ed 

3.效果