6

私は使用に苦しんだadb.exe

adb.exebash と同じシェル プロンプトを使いたかったので、デフォルトの 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

最初の変更は成功しましたが、2 回目の変更で問題が発生しました。

新しい bash バイナリをプッシュしましたが、bash のパーミッション 777 の変更と disconnect を見逃していました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プッシュできる可能性がありますbashの場合、プッシュする前にホストシステムで必要に応じてアクセス許可ビットを設定します(ローカルでアクセス許可ビットを取得するに、cygwinまたはlinuxを使用する必要がある場合があります)

デバイスがルート化されているように思われるため、ターミナルエミュレーターアプリを構成またはカスタマイズして、バックアップshを使用してセッションを提供し、エスカレーションツールを使用してバックアップshをrootとして再度実行し、問題を修正できる場合があります。

adbを使用してリカバリを変更した場合は、(通常の)システムパーティションを手動でマウントすることで、そこから修正できる可能性があります。

最後の手段は、ベンダーが署名したバニライメージから復元することです。

うまくいけば、行き詰まりはなくなりますが、おそらくこの経験から学んだことでしょう。デフォルトのシェルを変更することはおそらく良い考えではありません。カスタムシェルを別の名前でロードし、手動で実行することをお勧めします。

于 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 で /system パーティションをリカバリします (電話を使用)。

c) adb キル サーバー

d) sudo adb 開始サーバー

e) adb シェル

f)許可を正しく設定してください

私はここでの答えに影響を受けまし

于 2015-07-01T08:47:41.410 に答える