gpt4 book ai didi

android - 当/system/bin/sh 丢失时,如何在 android 上获得一个可用的 adb shell?

转载 作者:太空狗 更新时间:2023-10-29 12:43:32 25 4
gpt4 key购买 nike

我正在尝试从 Measy U2C HDMI 棒的源代码构建 Android Jellybean。我已经成功构建并安装了所有分区(引导、内核、杂项、恢复、系统...)。我遇到的问题是系统分区似乎没有挂载。当我运行时

adb ls /system

我得到以下输出:

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

我想将 adb 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 forwards 将取决于设备端 shell,但我还没有通过实验或检查代码来验证这一点。

如果您想变得非常聪明,我相信您可以在 rootsh 副本的/system/bin > 文件系统。我的记忆是,您可以在非空目录上挂载文件系统 - 不确定该目录的打开文件描述符是否会出现问题,例如正在运行的 sh 本身,但是您的挂载无论如何都失败了,您可以尝试在其他地方进行手动挂载以调试该问题。

关于android - 当/system/bin/sh 丢失时,如何在 android 上获得一个可用的 adb shell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21704211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com