回答:
私があなたの質問を正しく理解しているなら、を実行するときにrootアクセスを自動的に取得する方法を尋ねているadb shell
ので、シェルに移動しsu
て電話でrootとしてコマンドを実行する必要はありません。
これは、ブートパーティションのフラグによって制御されます。ほとんどのカスタムROMは、デフォルトでルート権限を許可するように変更されています。$
使用時にa にドロップされた場合、adb shell
2つの永続的なオプションと1つの一時的なオプションがあります(一時的な意味は、再起動しても固執しません)。
adbd
ルート権限でデバイスを再起動します数字2は実際にはそれほど難しくありませんが、不注意だと多少危険です。ここには、プロセスを説明するWiki記事があり、いくつかのPerlスクリプトが含まれています。これらの手順は、Linux / Unix環境を前提としています。私は個人的にこれらの指示をFedora Linuxで使用し、それらが機能することを伝えることができますが、Macのような他の* nix環境については知りません。同様のWindowsの指示も知りませんが、Windowsを使用している場合は追跡することもできます。デバイスごとに異なるパーティションテーブルを使用するため、正確なコマンドは電話ごとに多少異なります。
ただし、一般的に言えば、現在のboot.imgを携帯電話から取り出して展開し、ramdiskを抽出し、default.propファイルを見つける必要があります。これはプレーンテキストファイルです。テキストエディターで開き、値を含む行を見つける必要がありますro.secure
。行に表示されている場合、ro.secure=1
それをに変更する必要がありますro.secure=0
。その後、ramdiskとboot.imgを再パックし、それを携帯電話にフラッシュします。再起動すると、#
実行adb shell
せずに実行するたびにプロンプトが表示されますsu
。
または、カスタムROMを使用しているがこの変更がない場合は、ROMを解凍し、上記の手順を使用して、ROMに含まれているboot.imgを変更できます。次に、新しく変更したboot.imgでROMを圧縮し、通常どおりにzipファイルをフラッシュします。
これはおそらく言うまでもないですが、これを行うときは注意してください。ブートパーティションをいじってしまうと、電話機が簡単に壊れてしまい、HBootで強制的に復旧することができます。拡張Fastbootコマンドを使用して回復を実行できることを確認するために、Fastbootをテストすることを強くお勧めします。これはモデルによって多少異なりますが、ほとんどの携帯電話には、携帯電話を再フラッシュするために実行できるデスクトップソフトウェアがあります。
3番目のオプションは、多くの場合adbd
、root権限でデバイスを再起動できる可能性があることです。1つの可能性はadb root
、PC端末から実行することですが、これはすべてのROM構成で機能するわけではありません(ROMは「userdebug」として構築する必要があります)。また、Chainfireのadbd安全でないアプリを試すこともできます。これは再起動後も保持されないため、スマートフォンadb root
を再起動するたびにアプリを使用するか、再度使用する必要があります。
adbd
デフォルトでは電話のルート権限のみが許可されています。これを暗示するAndroidチームのメンバーからの投稿がありますが、明示的には述べていません。この AOSPへのコミットは、adbd
起動時にチェックする単なるフラグであることも意味します(ソースの他の場所には表示されません)。
adb root
auto-suモードでadbdを再起動するコマンドを発見しましたが、明らかにこれに依存しています。しかし、あなたはそれがただの旗であることについて正しいと思います。
// ... except we allow running as root in userdebug builds if the service.adb.root property has been set by the "adb root" command"
。ちなみに、それがKindle FireのBurritoRootの最初のバージョンであるIIRCの仕組みです。
電話がルート化されている場合は、「su -c」コマンドを使用してコマンドを実行できます。
これは、携帯電話の製品情報を取得するbuild.propファイルのcatコマンドの例です。
adb shell "su -c 'cat /system/build.prop |grep "product"'"
これにより、ルート権限が呼び出され、「」内でコマンドが実行されます
5つの終了引用符に注意してください。すべての終了引用符を閉じると、エラーが発生します。
明確にするために、形式は次のようになります。
adb shell "su -c '[your command goes here]'"
シェルでコマンドを実行するときに通常どおり正確にコマンドを入力してください。
試してみてください、これが役立つことを願っています。
adbd Insecureをインストールするだけです。
ルートとして何を実行しようとしていますか?rootでADBシェルを実行したいが、ADBシェルを使用したくないと言っているのですか?明確にできますか?
アプリケーションがルートアクセスを要求する場合、携帯電話のSuperUserアプリケーションは許可を与えるかどうかを処理する必要があります。電話をルート化するプロセスには、SuperUserアプリケーションが含まれている必要があります。
adb shell ps
またはadb shell
をps
実行してから、実行中のプロセスリストを取得できます。だから、何かがルートアクセスを必要とする、私は前者を行うことができるようにしたい。
別の方法として、電話でスクリプトを記述し、adbにそれを実行させることもできます。次に例を示します。
adb shell sh /sdcard/myscript.sh
スクリプトは、ユーザーの介入なしに自分自身を昇格させることができます(SuperUserが承認を記憶するように設定されていると仮定)、例えば:
su
pm setInstallLocation 1
私は自分の携帯電話でこれを成功させましたが、唯一の問題はadbシェルセッションをきれいに終了する方法を十分に理解していないことです。Windowsコマンドプロンプトに戻るには、WindowsシェルでCtrl-Cを押す必要があります。それ以外の場合、adbは#
プロンプトに座って入力を受け入れません。
ホームボタンの問題の修復に使用する
adbデバイス
adbシェルsu -c commands
または
adbルートシェルsqlite3 /data/data/com.android.providers.settings/databases/settings.db「INSERT INTO secure(name、value)VALUES( 'device_provisioned'、 '1');」
adb kill-server
「sh」にsuidビットを設定することもできます。BusyBoxを使用しているため、手順が設定と一致しない場合があります。
ルートプロンプトが必要です