6

我在使用adb.exe.

我想使用adb.exe与 bash 相同的 shell 提示符,所以我决定更改默认的 bash 二进制文件(当然二进制文件是交叉编译的,一切都很完美)

更改 bash 二进制文件的顺序如下

  1. adb remount
  2. adb push bash /system/bin/

  3. adb shell

  4. cd /system/bin
  5. chmod 777 bash
  6. mv sh sh.bak
  7. ln -s bash sh

第一次更改成功,但第二次尝试时出现问题。

我推送了新的 bash 二进制文件,但我错过了更改 bash 的权限 777,并断开了adb shell.

C:\Program Files (x86)\Android\android-sdk\platform-tools>adb.exe shell
- exec '/system/bin/sh' failed: Permission denied (13) -

C:\Program Files (x86)\Android\android-sdk\platform-tools>

有什么聪明的主意可以解决这个权限问题吗?

请帮我...

4

3 回答 3

1

如果设备没有完全崩溃(/system/bin/sh 是很多事情的依赖项 - 重新启动可能不会很远!)并且系统分区仍然是可写的,您可能能够 adb push a new copy bash,您在推送之前在主机系统上根据需要设置了权限位(您可能必须使用 cygwin 甚至 linux 才能在本地拥有权限位)

听起来设备已植根,因此您可以配置或自定义终端仿真器应用程序以使用备份 sh 为您提供会话,使用一些升级工具以 root 身份再次运行备份 sh,然后解决问题。

如果您使用 adb 进行了修改恢复,则可以通过手动挂载(正常)系统分区从那里修复它。

最后的手段是从供应商签名的原版图像中恢复。

希望您不会被卡住,但也许您已经从这次经历中学到了——更改默认 shell 可能不是一个好主意。最好以不同的名称加载您的自定义 shell 并手动运行它。

于 2012-06-11T02:32:06.377 回答
1

做这些事情的一般解决方案:删除系统应用程序和所有。

adb shell
mount -o rw,remount -t yaffs2 /dev/block/mtdblk4 /system
cd /system/app/
rm maps.apk
mount -o ro,remount -t yaffs2 /dev/block/mtdblk4 /system
sync
reboot
于 2012-07-19T05:38:33.180 回答
0

如果您安装了最新版本的 CWM,则可以保存

a) adb reboot recovery(启动手机进入恢复)

b) 在 CWM 中恢复挂载/系统分区(使用您的手机)。

c) adb kill-server

d) sudo adb start-server

e) 亚行外壳

f)做你的事情正确设置你的权限

我受到这里答案的影响https://android.stackexchange.com/questions/38085/is-it-a-hard-brick/113507#113507?newreg=6e0c0c0be98349058d3e1668532cd7dc

于 2015-07-01T08:47:41.410 回答