Android recovery支持adb shell

android recovery模式支持ADB SHELL 项目上安卓系统在升级时,经常有不成功的情况,想看下recovery下的情况,recovery下adb shell又用不了,如是决定把adb shell功能加上,下次OTA出问题时好定位。 安卓8.1系统,在debug模式下,有启动adbd服务,可以运行adb pull, adb reboot 等操作,但不能执行adb shell。修改涉及到二个部分,第一部分不管debug模式还是user模式,都启动adbd服务;第二部分是完善recoery的文件系统,我加了sh和busybox。 (一)启动adbd服务 阅读详情

最近开发过程注意到recovery不支持adb shell,为了便于调试方便,决定增加此功能。

 

刚开始我们采用的是user版本系统,进入recovery后,输入adb shell命令,提示“error: no devices/emulators found”,我们先确认recovery.img是否包含有adb,看out\debug\target\product\xxx\recovery\root\sbin是否有adb文件(源代码\system\core\adb),然后检查\bootable\recovery\etc\init.rc下关于adbd

[plain]  view plain  copy
  1. <span style="font-size:14px;">service adbd /sbin/adbd--root_seclabel=u:r:su:s0 --device_banner=recovery  
  2.    disabled  
  3.    socket adbd stream 660 system system  
  4.    seclabel u:r:adbd:s0  
  5.    
  6. # Always start adbd on userdebug and engbuilds  
  7. on property:ro.debuggable=1  
  8.    write /sys/class/android_usb/android0/enable 1  
  9.    start adbd  
  10.    
  11. # Restart adbd so it can run as root  
  12. on property:service.adb.root=1  
  13.    write /sys/class/android_usb/android0/enable 0  
  14.    restart adbd  
  15. write/sys/class/android_usb/android0/enable 1</span>  

从上面可知init.rc 中adbd 是配置的,disabled 表示开机不启动,如  ro.debuggable 被置为1,那么adb 就会开启,或是service.adb.root设置为1,则重启adbd。

 

ro.debuggable 在\build\core\main.mk下面的内容赋值

[plain]  view plain  copy
  1. <span style="font-size:14px;">ifeq (true,$(strip$(enable_target_debugging)))  
  2.   #Target is more debuggable and adbd is on by default  
  3.  ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1</span>  

enable_target_debugging 在\build\core\main.mk下面的内容赋值:

[plain]  view plain  copy
  1. <span style="font-size:14px;">## user/userdebug ##  
  2.    
  3. user_variant := $(filter useruserdebug,$(TARGET_BUILD_VARIANT))  
  4. enable_target_debugging := true  
  5. tags_to_install :=  
  6. ifneq (,$(user_variant))  
  7.   #Target is secure in user builds.  
  8.  ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1  
  9.    
  10.  ifeq ($(user_variant),userdebug)  
  11.     #Pick up some extra useful tools  
  12.    tags_to_install += debug  
  13.    
  14.     #Enable Dalvik lock contention logging for userdebug builds.  
  15.    ADDITIONAL_BUILD_PROPERTIES += dalvik.vm.lockprof.threshold=500  
  16.  else  
  17.     #Disable debugging in plain user builds.  
  18.    enable_target_debugging :=  
  19.    
  20.     #Add for testUsbDebugging()  
  21.    ADDITIONAL_DEFAULT_PROPERTIES += ro.adb.secure=1  
  22.   Endif  
  23. …  
  24. Endif</span>  

可知默认为enable_target_debugging := true,根据user_variant的值如果为user,则enable_target_debugging :=,这又和TARGET_BUILD_VARIANT有关,此变量对应于VARIANT_CHOICES=(user userdebug eng)中的一个值,由我们来选择,相关的实现在\build\envsetup.sh中。

 

根据上面可知,编译时如果选择userdebug或是eng,则ro.debuggable=1,下面我们选择eng版本编译recovery.img,进入recovery后,输入adb shell命令,提示:

Exec ‘/system/bin/sh’ failed:No such fileor directory(2)

表示没有sh这个文件,无法进入shell,检查ramdisk 文件系统 system 目录为(out\debug\target\product\xxx\recovery\root\system)空,但我们知道boot.img下是可以的,看\system\core\rootdir\init.rc检查boot.img 启动的init.rc 关于sh的

[plain]  view plain  copy
  1. <span style="font-size:14px;">service console /system/bin/sh  
  2.    class core  
  3.    console  
  4.    disabled  
  5.    user shell  
  6.    group shell log  
  7.    seclabel u:r:shell:s0  
  8.    
  9. on property:ro.debuggable=1  
  10. start console</span>  

可知是启动了sh这控制台的,所以需要在bootable\recovery\etc\init.rc增加相应的内容:

 

图1

我们知道out\debug\target\product\xxx\recovery\root\system下没有bin文件夹(当然也没有sh),所以需要在编译的时候创建,需要\build\core\Makefile增加创建目录和把out目录下的/system/bin/sh拷贝到out/recovery/system/bin目录下

 

图2

但这样还是不行,后来知道recovery可执行文件是静态编译的,之所以这样是因为recovery模式中没有共享库还有缺动态链接库加载器(/system/bin/linker,android动态连接器linker与静态连接器ld)。

 

所以\external\mksh\Android.mk


图3

参考链接:

Android recovery.img 支持adb shell

http://blog.youkuaiyun.com/chituhuan/article/details/52383655

 

[IMX6Q][Android5.1]移植笔记 --- Recovery mode的shell功能实现(sh+toolbox)

http://blog.youkuaiyun.com/kris_fei/article/details/50921384

 

Android Recovery 支持 Adb

http://www.jianshu.com/p/a0bdcce0a5e1


原文链接:http://blog.youkuaiyun.com/loongembedded/article/details/67638687

bug:刷机卡Logo界面,adb shell 报- exec '/system/bin/sh' failed: No such file or directory (2) - 可能的问题: 1.update.zip 问题 2.recovery 问题 换! 有可能是不该取消cache.img的生成,不科学啊,,,那我换了img可能就可以。但为什么我换成adb sideload方式就可以的呢?到底有什么区别,是什么导致的sdcard方式卡在第一界面? 有可能是recovery 有问题, symlink/sbin/busybo... 阅读详情

相关推荐

recovery模式下支持ADB连接和串口操作

前言 Android平台下我们有时候会进入recovery下做一些操作,不管是通过ADB连接还是通过串口操作,都需要你的平台支持,不支持的话可以按照我们这篇文章进行修改。 正文 ADB连接 进入recovery后,我通过ADB连接会有如下报错 exec "/system/bin/sh": No such file or directory 根据提示,应该是需要把sh打包到recovery.img里面,不过这里要注意的是,recovery下执行的bin文件需要静态编译才行,所以我们需要修改sh编译的Andr

lee_jimmy的博客 4273

android recovery下使用adb出现device offline问题

进入recovery后,执行adb devices,提示device offline。 说明设备的USB口是device role了,但adb server跟device通信不上。 对比了网上很多文章,各种修改都无法解决。 于是,将adb和adbd和adb driver的log打开。 //system/core/adb //kernel-3.18/drivers/usb/gadget/f...

kinggate518的博客 2319

ADB,Fastboot,Recovery,BootLoader的区别

Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件: 客户端:用于发送命令。客户端在开发机器上运行。您可以通过发出 adb 命令从命令行终端调用客户端。 守护程序 (adbd):用于在设备上运行命令。守护程序在每个设备上作为后台进程运行。 服务器:用于管理客户端与守护程序之间的通信。服务器在开发

m0_60352504的博客 1万+

android mksh,Android recovery支持adb shell

Android recovery支持adb shell近期开发过程注意到recovery不支持adb shell。为了便于调试方便,决定添加此功能。刚開始我们採用的是user版本号系统,进入recovery后,输入adb shell命令。提示“error: no devices/emulators found”。我们先确认recovery.img是否包括有adb,看outdebugargetpro...

weixin_36388201的博客 432

安卓锁屏密码遗忘?ADB工具三种实用解锁方法详解

在移动设备安全领域,锁屏密码是保护用户隐私的第一道防线。其工作原理通常基于密码哈希存储或生物特征验证,在系统底层通过安全元件或可信执行环境进行加密处理。这项技术的核心价值在于平衡安全性与可用性,确保设备丢失或被盗时数据不被轻易访问。然而,当用户遗忘密码时,合法的调试接口便成为关键恢复途径。Android Debug Bridge(ADB)作为官方开发者工具,在USB调试模式开启的前提下,能够通过删除密码文件、恢复出厂设置等机制,在特定场景下协助恢复设备访问权限。本文聚焦ADB实战应用,深入解析gesture

深未来技术 543

ADB连接全攻略:从原理到实战,解决安卓调试连接难题

ADB(Android Debug Bridge)是安卓开发与调试的核心工具,它基于客户端-服务器架构,通过命令行接口实现电脑与安卓设备的深度交互。理解其工作原理有助于解决驱动冲突、授权失败等常见连接问题。在工程实践中,ADB的价值不仅体现在应用安装、日志抓取等基础操作,更在于其支持无线调试、多设备管理等高级功能,能显著提升开发和测试效率。无论是进行移动应用调试、自动化测试,还是执行系统级操作,掌握ADB的配置与排错技巧都至关重要。本文聚焦USB调试和无线连接等高频场景,提供从环境搭建到实战命令的完整解决方

adr5970的博客 484

Android recovery.img 支持adb shell

Android recovery.img 支持adb shell 2016-08-31 12:09 1527人阅读 评论(0) 收藏 举报  分类: Android平台(27)  版权声明:本文为博主原创文章,转载请注明出处。 android recovery 模式下出于安全的考虑,一般禁止adb  和adb shell 登陆。如果需要在rec

rockly89的博客 1327

安卓救砖实战:利用TWRP与ADB从零恢复系统

Android系统故障导致设备无法启动,通常被称为“变砖”,是刷机和系统维护中常见的问题。其核心原理在于绕过损坏的主系统,通过设备底层的Fastboot或Recovery模式与电脑建立通信,从而重新写入健康的系统镜像。这一过程的技术价值在于赋予用户对设备的底层控制能力,能够在不依赖官方售后或付费工具的情况下,自主修复软件层面的严重故障。在实际应用场景中,无论是误操作导致的系统崩溃、刷机失败,还是系统升级出错,只要硬件完好且能进入特定工程模式,均可通过此方法尝试恢复。本文聚焦于使用开源的TWRP(第三方恢复系

weixin_34396103的博客 504

mtk adb recovery 模式下支持adb shell

问题:在recovery模式下,可以使用adb devices 、adb root、adb remount、adb reboot 但是输入adb shell 提示:exec "/system/bin/sh": No such file or directory 。 解决方法: 1.在bootable\recovery\etc\init.rc中增加如下内容:(开启console 控制台支持)...

sdkdlwk的博客 1769

MACS2软件进行Peak calling

MACS2可以检出ChIP-Seq,ATAC-seq 以及 MeRIP-seq (RNA甲基化测序) 等富集的序列。peaks calling 有不同的方法,MACS2是最常用的call peaks工具。 MACS全称Model-based Analysis of ChIP-Seq,最初的设计是用来鉴定转录因子的结合位点,但是它也可以用于其他类型的富集方式测序。usage: macs2 [-h] [--version] {callpeak,bdgpeakcall,bdgbroadca

qq_27390023的博客 3789

重装系统后,恢复Oracle的.ORA文件

前几天,系统莫名奇妙产生很多宏病毒,进而感染整个C盘,不得已,格式化后重装了系统。 重装系统之后,突然想到D盘中的oracle中很多数据没导出来备份,安装文件下有很多有用的.ORA文件,抱着死马当活马医的态度,居然成功了。 1、将原来D盘(D:\oracle\product\10.2.0\oradata\orcl)下的数据文件备份下其他盘,将D盘的oracle目录名改成oracle1。安装数据

zhanggnol的blog 5551

abd串口工具使用教程_recovery模式下支持ADB连接和串口操作

前言Android平台下我们有时候会进入recovery下做一些操作,不管是通过ADB连接还是通过串口操作,都需要你的平台支持,不支持的话可以按照我们这篇文章进行修改。正文ADB连接进入recovery后,我通过ADB连接会有如下报错exec"/system/bin/sh":Nosuchfileordirectory1根据提示,应该是需要把sh打包到recovery.img里面,不过这...

weixin_42236938的博客 1259

别再手动抄表了!用MCGS触摸屏自动存数据到U盘,5分钟搞定报表导出

本文详细介绍了如何利用MCGS触摸屏实现工业数据自动记录与U盘导出,彻底告别传统手动抄表方式。通过昆仑通态MCGS系统,可构建零误差自动化报表系统,实现实时数据采集、双重备份及标准CSV格式导出,大幅提升数据准确性和工作效率。

weixin_30872157的博客 793

recovery 模式下如何使用adb进行调试和抓取recovery LOG

http://blog.youkuaiyun.com/zclongembedded/article/details/10148543

2332

科研人必备!用WisPaper搭建个人文献知识库的完整指南(附Zotero联动技巧)

本文详细介绍了如何利用WisPaper搭建高效的个人文献知识库,包括文件命名标准化、文件夹结构设计、语义搜索技巧及与Zotero的深度联动方法。通过智能标签系统和知识图谱功能,科研人员可以快速定位关键文献,提升研究效率。特别适合需要管理大量学术文献的研究者。

weixin_30823001的博客 267

[解决] PDF转图片,中文乱码或显示方框的解决方案

在Java开发中,将PDF文件转换为图片是一项常见的需求,但过程中可能会遇到中文乱码或显示方框的问题。本文将深入探讨这一问题,并提供详细的解决方案,帮助开发者顺利地完成PDF到图片的转换。

DazedMen的博客 1925

android5多窗口,教程 开启 Nexus5 Android M 的多窗口模式。

该楼层疑似违规已被系统折叠隐藏此楼查看此楼posted by wap, platform: ChromeApparently Android M has included some multi-window support. This post will show you how to enable it, but it requires some knowledge of ADB and Li...

weixin_28871097的博客 186

基于Spring Boot + Vue 3的前后端分离教材订购系统设计与实现

随着高校信息化建设的不断深入,传统手工管理教材的方式已无法满足高效、准确、透明的需求。文章将详细阐述系统的需求分析、架构设计、数据库设计、核心功能模块的实现(包括用户认证、教材管理、购物车、订单管理等),并提供关键代码片段。一个集中化、在线化的教材订购系统可以有效地解决这些问题,实现教材信息的统一管理、学生在线选书、订单自动汇总、财务清晰对账,极大地提升了管理效率和服务质量。系统采用了先进的前后端分离架构,实现了用户管理、教材管理、购物车、订单管理等核心功能,具有良好的可扩展性和可维护性。

2201_76125393的博客 330

adb recovery 模式下支持adb shell

问题:在recovery模式下,可以使用adb devices 、adb root、adb remount、adb reboot 但是输入adb shell 提示:exec "/system/bin/sh": No such file or directory 。解决方法:1.在bootable\recovery\etc\init.rc中增加如下内容: ( 开启console 控制台支持) 89 ...

c_hnie的博客 9904

[特殊字符]用Python爬取中国裁判文书网案例信息:从爬虫到数据可视化全流程实战(附代码)

✅ 分析裁判文书网的网页结构;✅ 自动化爬取案件信息;✅ 解析加密参数并获取数据;✅ 数据可视化图表输出;✅ 模块化构建爬虫系统。

2201_76125261的博客 2824

Python爬虫实战:爬取携程旅游平台数据,我拆解了动态反爬+Cookie续命(附完整可运行代码)

反爬类型表现形式应对思路sign参数返回403/空数据逆向JS还原加密逻辑Cookie时效登录后1小时Cookie失效定时刷新Cookie/保存登录态行为检测爬取过快触发验证码模拟真人延时/随机点击IP封禁单IP爬取超50条数据被封付费代理池/降低请求频率爬取携程旅游平台数据的核心,不是“简单的HTTP请求”,而是“理解平台的反爬逻辑并合规适配”——从sign参数破解到Cookie维护,再到行为模拟,每一步都是对HTTP协议、前端加密、用户行为的深度理解。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1713

终极ADB命令行工具对比:adb vs fastboot vs adb shell 完整指南

ADB(Android Debug Bridge)是Android开发和测试的必备工具,而awesome-adb项目作为ADB用法大全,汇集了Android调试桥的各种实用命令。本文将深入对比adb、fastboot和adb shell三大命令行工具的核心功能、使用场景和实战技巧,帮助开发者和Android爱好者快速掌握这些工具的精髓。 ## 一、核心功能对比:adb vs fastboot v

gitblog_00247的博客 511

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: linux内核 DebugFS
下一篇: Android selinux配置和用法
makeyourprogress
博客等级 码龄11年 26粉丝 57原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值