繁体   English   中英

当缺少/ system / bin / sh时,如何在android上获得有效的adb shell?

[英]How can I get a working adb shell on android when /system/bin/sh is missing?

我正在尝试从Measy U2C HDMI棒的源头构建Android Jellybean。 我已经设法构建并安装所有分区(启动,内核,misc,恢复,系统......)。 我遇到的问题是系统分区似乎没有安装。 我跑的时候

adb ls /system

我得到以下输出:

000041ed 00000400 51301410 .
000041c0 00000800 00000003 lost+found
000041ed 00000000 00000001 ..

我想将shell添加到设备中并尝试调试系统分区未安装的原因,但adb希望在/ system / bin / sh中有一个可用的shell。

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

我的问题是,如何让adb在别处查找shell命令,这样我才能使用它? 或者是否有另一种远程进入设备并进行调试的方法? 在/ sbin / busybox上安装了busybox,所以如果我能以某种方式调用它,我可以解决这个问题。

“SHELL_COMMAND”似乎是在adb / services.c中硬编码的,其中非正式的副本可以浏览

https://github.com/android/platform_system_core/blob/master/adb/services.c

鉴于您正在从源代码构建,您应该能够更改它。 但是,由于您希望将其指向较短的路径,因此您也可以编辑二进制文件并向上移动终止空值。

调查问题的另一种方法可能是在启动到恢复分区后查看是否可以获得有效的adb shell,并尝试在那里手动安装有问题的系统分区以查看导致的错误。

另一个想法是在启动脚本中添加一些东西,启动一个备用shell,监听你可以使用adb转发套接字的东西 - 我没有想到为什么设置adb转发依赖于设备端的明显原因shell,但我还没有通过实验或检查代码验证。

如果你想变得非常聪明 ,我相信你可以在文件系统上创建一个包含sh副本的/ system / bin。 我的回忆是,您可以在非空目录上挂载文件系统 - 不确定是否存在打开该目录的文件描述符的问题,例如运行sh本身,但是您的挂载无论如何都会失败,并且您可以尝试在别处手动安装以调试该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM