android recovery模式支持adb shell

5230阅读 0评论2017-03-29 UC_JonLee
分类:Android平台

转载时请注明出处和作者联系方式
文章出处:http://blog.chinaunix.net/uid/30230931.html
作者联系方式:JonLee <
>

android recovery 模式下出于安全的考虑,一般禁止adb和adb shell 登陆。如果需要在recovery
模式下进行debug ,需要配置下列文件和步骤:

1.开启adb支持
out/*/recovery/root/sbin 目录下有adbd 文件
bootable/recovery/etc/init.rc 中是adb 配置

import /init.recovery.${ro.hardware}.rc

on early-init
    start ueventd
    start healthd

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

    symlink /system/etc /etc

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

    chown root shell /tmp
    chmod 0775 /tmp

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

on property:sys.powerctl=*
   powerctl ${sys.powerctl}

service ueventd /sbin/ueventd
    critical


service healthd /sbin/healthd -n
    critical


service recovery /sbin/recovery

service adbd /sbin/adbd recovery
    disabled
    socket adbd stream 660 system system


# Always start adbd on userdebug and eng builds
on property:ro.debuggable=1
    write /sys/class/android_usb/android0/enable 1
    start adbd

# 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


2.adbd默认console为/system/bin/sh,添加fstab.recoverymode(mount_all命令支持可参考system/core/init/keywords.h)
    挂载system分区
    on fs
    mount_all /fstab.recoverymode
    
    fstab.recoverymode内容:(不同平台有所差异
    /dev/block/platform/15740000.dwmmc0/by-name/system /system ext4 ro wait

3.make recoveryimage
上一篇:Recovery模式下的文本显示
下一篇:根据ro.build.id值比对标准SDK版本差异