TOYBOXをインストールすればいいですか? -- installation フィールド と file-system フィールド と command-line フィールド android 関連 問題

Where should I install Toybox?


3
vote

問題

日本語

私は根ざしたサムスンギャラクシーSリレー4GランニングのAndroid 4.1.2。

Android 6.0 "Marshmallow"以上の場合、 。これは、ターミナルエミュレータを使用することがある上級ユーザーに便利なコマンドラインツールのパッケージです。残念ながら、Android 4.1.2にはTOYBOXは含まれていません。代わりに、使用と同じくらい良いものではないいくつかの他のツールが含まれています。

ジャックパレヴィヒで書かれたターミナルエミュレータを使用することがあります。その他の時間<コー​​ド> 99887766544330 をノートパソコンから使用します。

  1. 私のシステムパーティションまたは私のデータパーティションにTOYBOXをインストールするのが理にかなっていますか?両方のパーティションは十分な空き容量をはるかに多くあります。

  2. AndroidとToyBoxの両方によってコマンドが提供されているときは、ToyBoxのバージョンが勝つことができます。 Linuxでは、 9988766544332 OR <コード>または<コード>または<コード>または<コード>または<コード>または<コード>または<コード>または<コード>または<コード>または<コード>または<コード>または 998876654443333 にインストールすることができます。私の携帯電話におもちゃ箱(そしてその大きなシンボリックリンクのコレクション)をインストールするために私に賢明な場所を提案してください。

  3. [ edit :さまざまなBusyboxインストーラが何をするのだろうか。また、PANDROIDの変数をどのように設定するのはどのようにしていますか。私も、その変数を変更し、変更を再起動しても変更を加える方法があるかどうか疑問に思います。最後に、私の道の中でおもちゃ箱ツールを最初に置くかどうか、明らかな方法で物事を破る可能性があるかどうか疑問に思う。]


    おそらく関連: "Androidフォルダ階層"

英語

I own a rooted Samsung Galaxy S Relay 4G running stock Android 4.1.2.

If you have Android 6.0 "Marshmallow" or better, then you have Toybox. This is a package of command-line tools, handy for advanced users who sometimes use a terminal emulator. Unfortunately, Android 4.1.2 does not include Toybox. Instead, it includes some other tools which aren't as nice to use.

Sometimes I use the terminal emulator written by Jack Palevich; other times I use adb shell from a laptop.

  1. Would it make more sense to install Toybox to my system partition, or to my data partition? Both partitions have far more than enough free space.

  2. When a command is provided both by Android and by Toybox, I want the Toybox version to win. On Linux, I might install Toybox to /home/unforgettableid/bin or /usr/local or /opt. Could you please suggest a sensible place for me to install Toybox (and its large collection of symlinks) on my phone?

[Edit: I wonder what the various BusyBox installers do. Also, I wonder how Android sets the PATH environment variable. As well, I also wonder whether or not there's a way for me to change that variable and to make my change persist across reboots. Finally, I wonder whether or not putting the Toybox tools first in my PATH would be likely to break things in non-obvious ways.]


Possibly related: "Android Folder Hierarchy".

        

回答リスト

5
 
vote

TOYBOXをインストールすればいいですか?

私のシステムパーティションにTOYBOXをインストールするのが理にかなっているか、またはデータパーティションには?

は依存します。 Phaacterを再度出荷時にリセットする予定の場合は、データパーティションを選択できます。それ以外の場合は、システムパーティションを選択します。

AndroidとToyBoxの両方でコマンドが提供されているときは、おもちゃボックスのバージョンが勝つことができます。

path 実行可能バイナリを含むディレクトリの場所を含みます。シンボリックリンクに別々のディレクトリを保持することにした場合は、最初にディレクトリにコマンドを検索するための$ PATHを設定してください。 1つが見つかった場合は、それを実行します。

Linuxでは、 9988765544335 または<コード>または<コード>または<コード>または<コード>または<コード>または<コード>または<コード>または<コード>または<コード>または<コード>または<コード>にインストールすることができます。あなたは私の携帯電話におもちゃ箱(そしてその大きなシンボリックリンクの集まり)をインストールするために私に賢明な場所を提案してください。

それらの場所はすべてAndroid用に存在しません。 Android 4.1.2を使用しているので、FATファイルシステムで外付けSDカードをフォーマットさせていると思います。 Symlinksは、FATファイルシステム上では機能しません(少なくともFAT32またはVFATではなく、 998877665444338 >

をインストールすることが最善です。

あるいは、外部SDカードの下に画像を作成し、Androidのカーネルでサポートされているファイルシステムでそのイメージをフォーマットすることができます(よくext2 | ext3 | ext4)、ループバックモードの任意の場所にマウントします。私はこの方法を試してみませんが。

さまざまなBusyboxインストーラが何をしているのだろうか

BUSYBOX( by stericson ) BusyBox バイナリ<コード> network={ ssid="Telekom" key_mgmt=NONE priority=42 } 9 と作成 symlink 同じディレクトリの下でそのバイナリへのアプレット。

また、Androidパス環境変数をどのように設定するのは不思議です。同様に、私は私にその変数を変更し、変更を再起動しても私の変更を持続させる方法があるかどうか疑問

Androidが$ PATHを設定するかわかりません。ただし、使用しているシェルは、設定ファイルを持つ可能性が最も高いです。

  • mksh ( mirbsd Korn Shell ; デフォルトのシェルの設定ファイル<コード> 9988766554433310 コード> data/misc/wifi/wpa_supplicant.conf1 。 $ pathを設定することができ、変更は再起動後に永続的になります。
  • bash シェル、設定ファイル 998877665543313 の下にある 99887766655443312 です。

両方のファイルがは、対話型セッションのみを意味しているため、アクセスにADBを使用しようとしている場合<コード> data/misc/wifi/wpa_supplicant.conf4 、<コード> data/misc/wifi/wpa_supplicant.conf5 、<コード> data/misc/wifi/wpa_supplicant.conf6 、<コード> data/misc/wifi/wpa_supplicant.conf7 または<コード> data/misc/wifi/wpa_supplicant.conf8下に置かれていないToyboxまたはそのシンボリックリンク($ PATHのデフォルトの場所)、 "コマンド:not found"エラーが表示されます。これは、デフォルトの$ PATHが代わりに使用されるためです。

この問題に対する解決策をまだ見つけませんでしたが、この回答の下のコメントを見てください。

とにかく、今のところTOYBOXをインストールしましょう。


AndroidデバイスにTOYBOXをインストールする方法は?

注:あなたのAndroidが根ざしていると仮定している、 USBデバッグが有効になっています

システムパーティションへのインストール

標準の場所を選択した場合は、$ PATHの変更が必要です。 BusyBoxは<コード> network={ ssid="Telekom" key_mgmt=NONE priority=42 } 19 を好みます。

  • システムパーティションを rw モードで再マウントします。 必要に応じて、 RW
  • にremount / systemを参照できません
  • TOYBOX バイナリをコピーし、<コード> 9988776665443330 に実行して実行可能な許可を与えます。 (他のバイナリのデフォルトのアクセス許可は<コード> 9988776665443321 です。

    chmod

    <事前> <コード> network2

  • toybox バイナリによってアクセス可能なさまざまなツールのシンボリックリンクを作成します。あなたがそれらをどのように作成するかそれはあなた次第です。

    非常に単純な方法を使用しましたが、* NIXシステム

    が必要です。 <事前> <コード> network3

    ここでやっているのは、のTOYBOX バイナリを実行し、各ツールが新しい行に表示されるように、新たなスペースを新しい行に置き換えます。後で最後の行を削除しています(出力に空白でした)、キャリッジリターン ADBに入れるそして、出力の各行の場合は、同じディレクトリ内のツールの名前を持つSymlinkを TOY> TOY> BINARYを作成しています。

    PCに* NIX OSがない場合は、この方法を使用できます。

    <事前> <コード> network4

完了!あなたのおもちゃ箱とそのアプレットは実行される準備ができています。

データパーティションへのインストール

  1. <コード> 998876655443325 (<コード> 998876655443326 以降)の下にディレクトリを作成します。
  2. TOYBOX バイナリをコピーし、<コード> 998877666664433327 にして実行可能な許可を与えます。 (他のバイナリのデフォルトのアクセス許可は<コード> 998877665443328 です。)

    <事前> <コード> network9
  3. toybox バイナリによってアクセス可能なさまざまなツールのシンボリックリンクを作成します。あなたがそれらをどのように作成するかそれはあなた次第です。

    非常に単純な方法を使用しましたが、* NIXシステム

    が必要です。 <事前> <コード> network={ ssid="Telekom" key_mgmt=NONE priority=42 } 30

    場所のみが変更されたのは、システムパーティション

  4. にインストールするための1つに従っています。
  5. デフォルトシェルの設定ファイルを編集して

    を追加 <事前> <コード> network={ ssid="Telekom" key_mgmt=NONE priority=42 } 31

    これは、シェルが最初に<コード> 998877666544332 を検索し、利用可能であればバイナリを実行します。

  6. 完了! おもちゃ箱とそのアプレットをお楽しみください。

 

Where should I install Toybox?

Would it make more sense to install Toybox to my system partition, or to my data partition?

Depends. If you don't plan to factory reset the phone ever again, you can choose data partition, else, choose system partition.

When a command is provided both by Android and by Toybox, I want the Toybox version to win.

The PATH variable contains the location of the directories containing executable binaries. Should you decide to keep a separate directory for your symlinks, configure $PATH to search for a command into your directory first. If it finds one, it will execute it.

On Linux, I might install Toybox to /home/unforgettableid/bin or /usr/local or /opt. Could you please suggest a sensible place for me to install Toybox (and its large collection of symlinks) on my phone?

All those locations don't exist for Android. Since you're using Android 4.1.2, I suppose you would be having your external SD card formatted with a FAT filesystem. Symlinks don't work on FAT filesystems (not on FAT32 or vfat at least) so your best bet is to install under /data or /system.

Alternatively, you can make an image under your external SD card, format that image with a filesystem supported by your Android's kernel (often EXT2 | EXT3 | EXT4), then mount it in the device anywhere in loopback mode. I've not tried this method though.

I wonder what the various BusyBox installers do

Busybox (by Stericson) places the busybox binary into /system/xbin and creates symlink for its applets to its binary under the same directory.

Also, I wonder how Android sets the PATH environment variable. As well, I also wonder whether or not there's a way for me to change that variable and to make my change persist across reboots

I do not know when Android sets up $PATH. However, the shell you're using would most likely be having a configuration file.

  • mksh (MirBSD Korn Shell; the default shell on Android) has a configuration file mkshrc in /system/etc. You can set $PATH there and the change would be persistent across reboots.
  • For bash shell, the configuration file is bashrc located under /system/etc/bash.

It appears that both files are meant for interactive sessions only, so if you attempt to use adb for accessing a Toybox or its symlink which is not placed under /sbin, /vendor/bin, /system/sbin, /system/bin or /system/xbin (the default locations in $PATH), you would receive a "COMMAND: not found" error. This is because the default $PATH would be used instead.

I've not found a solution for this problem yet, but see the comments below this answer.

Anyhow, let's install Toybox for now.


How do I install Toybox on an Android device?

Note: the solution assumes that your Android is rooted, that adb is setup in PC, and that your device is connected to a PC with USB debugging enabled.

Installation into system partition

No change in $PATH is required if you choose a standard location. Busybox prefers /system/xbin.

  • Remount the system partition in rw mode. If required, see Can't remount /system in rw
  • Copy the toybox binary to /system/xbin/ and give executable permission to it. (The default permissions set for other binaries is rwxr-xr-x.)

    You can do so using chmod

    adb shell su -c "chmod 755  /system/xbin/toybox" 
  • Create symlinks for various tools accessible by toybox binary. It is up to you how you create them.

    I used a very simple method, but it requires a *nix system

    adb shell toybox | sed 's/\ /\n/g' | head -n -1 | tr -d '\r' | while read line; do adb shell su -c 'ln -sf /system/xbin/toybox "/system/xbin/$line"'; done 

    All I'm doing here is executing the toybox binary, replacing the white-spaces with a new line so that each tool shows up in a new line. Later on I'm removing the last line (it was blank in output), removing carriage return conveniently put by adb, and then for each line of output I'm creating a symlink to toybox binary with the name of the tool, in the same directory.

    You can use this method if you don't have a *nix OS in PC:

    adb shell su toybox | toybox sed 's/\ /\n/g'| toybox sed '$d'| while read line; do  toybox ln -sf /system/xbin/toybox /system/xbin/$line; done 

Done! Your Toybox and its applets are ready to be executed.

Installation into data partition

  1. Create a directory under /data (/data/my_bin henceforth)
  2. Copy the toybox binary to /data/my_bin and give executable permission to it. (The default permissions set for other binaries is rwxr-xr-x.)

    adb shell su -c "chmod 755  /system/xbin/toybox" 
  3. Create symlinks for various tools accessible by toybox binary. It is up to you how you create them.

    I used a very simple method, but it requires a *nix system

    adb shell su -c "/data/my_bin/toybox" | sed 's/\ /\n/g' | head -n -1| tr -d '\r'| while read line; do adb shell su -c "ln -sf /data/my_bin/toybox '/data/my_bin/$line'"; done 

    Only the location has changed, the rest of the procedure is alike to one followed for installation in system partition

  4. Edit your default shell's configuration file and add

    PATH=/data/my_bin:$PATH  

    This would cause the shell to look into /data/my_bin first and execute the binary, if available.

Done! Enjoy your Toybox and its applets.

 
 
     
     
0
 
vote
vote
ベストアンサー
 

あなたのAndroid版のおもちゃボックスといくつかのToyBoxシンボリックリンクが出荷されている場合は、 998877666544330 に残すことができます。しかし、あなたが自分であなたが自分でインストールしているならば、<コード> 998877666544331

で、新しくインストールされたおもちゃボックスとそのすべてのシンボリックリンクを入れるのは賢明であるかもしれません。

なぜ説明しましょう。

FireLordが彼の回答を指すとして:<コード> adb shell は対話型シェルを起動します。しかし、 99887766544333 などのコマンドは、非対話型シェルを起動します。 パフォーマンス上の理由から< / a>、非対話型シェルは設定ファイルを読み取らないでください。コンフィグファイルを読み込まないため、検索パスはハードコードされています。< / P>

インタラクティブなシェルでさえも、お気に入りのおもちゃ箱があるのはいいことです。実際、そのようなシェルに利用できない場合は、混乱を招く可能性があります。だからあなたは間違いなく検索パス上の場所にTOYBOXをインストールしたいです。

しかし、Androidの 9988766544334 、<コード> 998876666544355 、およびその他の基本的なユーティリティよりも、検索パスの以前にTOYBOXシンボリックリンクを置きたくない場合があります。私はチェックされたことがないが、あなたのバージョンのAndroIDには、株式のAndroidコマンドラインユーティリティのQuirksに依存するアプリが含まれる可能性があることを理解しています。詳細については、この記事を参照してください。コマンドラインツールメンテナは、Androidがその非トイボックス<コード> 99887765544336 に搭載されていなければならなかった理由をいくつか登録しています。

Stock Androidコマンドラインユーティリティのほとんどは、 /system/bin です。 Androidシェルの検索パスの後半の唯一のディレクトリは<コード> 998877666544338

です。

それが、 9988776654439

でおもちゃボックスとそのすべてのシンボリックリンクを入れることをお勧めします。

ヒント:必要に応じて、そのパラメータをすべてToyBoxに渡すシェルスクリプトを作成できます。このシェルスクリプトに 99887766665443310 などの超短い名前を付けることができます。これにより、デバイスが株式のAndroidコマンドの代わりにおもちゃ撮り玩具を実行するように要求しやすくなります。たとえば、TOYBOX 9988766554433311 を実行するには、 9988776665443312

 

If your Android version ships with Toybox and some Toybox symlinks, you can leave those in /system/bin. But, if you're installing Toybox yourself, it might be wisest to put the freshly-installed Toybox, and all its symlinks, in /system/xbin.

Let me explain why.

As Firelord points out in his answer: adb shell starts an interactive shell. But commands such as adb shell ls start a non-interactive shell. For performance reasons, non-interactive shells never read any config files. Because they don't read any config files, their search path is hardcoded.

It's nice to have Toybox available even to non-interactive shells; in fact, if it's unavailable to such shells, it can be confusing. So you definitely want to install Toybox to a location which is on the search path.

But you might not want to put the Toybox symlinks any earlier in the search path than Android's cp, ls, and other basic utilities. I've never checked, but I theorize that your version of Android might include apps which depend on quirks of the stock Android command-line utilities. To learn more, see this post, in which the Android command-line tools maintainer explains why Android had to stick with its non-Toybox ls for some months.

Most of the stock Android command-line utilities are in /system/bin. The only directory which falls later in the stock Android shell's search path is /system/xbin.

That is why you may want to put Toybox and all its symlinks in /system/xbin.


Tip: If you want, you can create a shell script which simply passes all of its parameters to Toybox. You can give this shell script an ultra-short name such as t. This makes it easier to request that your device should run a Toybox toy instead of a stock Android command. For example, to run Toybox ls, simply enter t ls.

 
 
     
     

関連する質問

125  私の非AndroidデバイスにAndroidをインストールできますか?  ( Can i install android on my non android device ) 
多くの人が新しいAndroid携帯電話を購入せずにAndroidを試してみたい。 Nokia Symbian、Maemo、またはMeeGoを実行している現在の電話機やデバイスにAndroidをインストールするにはどうすればよいです。 Microsoft Win...

1  私はBlue Kikをダウンロードしようとしていますが、「アプリがインストールされていない」というメッセージを教えてください。  ( Im trying to download blue kik but it keeps giving me the app not installed ) 
私はTcl LXを使用しています(電話が悪いため、私は問題は問題ではないでしょう)、そして私は簡単な解決策を探しています。私はそれを複数回インストールし、APKを削除して再ダウンロードすることを試みましたが、何も機能しないようです。 ...

1  インストールループAndroid 4.4.2 Galaxy Core II  ( Install loop android 4 4 2 galaxy core ii ) 
昨日私はサムスンギャラクシーコアII(SM-G355HN)の更新を受けました。私はアップデートをダウンロードしてインストールしようとしました。約94%で、<コード> 998877666544333 を受け取りました。ハードリセットをしようとしましたが、回復モー...

13  新しいアプリをインストールしようとすると、「保存不足」  ( Insufficient storage when trying to install new app ) 
新しいアプリをインストールするたびに、メッセージが「不十分なストレージ」、およびインストールできない! Samsung GT19060を使用している私の内部メモリは8GBです。私は何もダウンロードしていませんが、私が何かをダウンロードしようとしていますが、メ...

18  インターネットを持たずにAndroidアプリをインストールする方法はありますか?  ( Is there any way to install android app without having internet ) 
サムスンギャラクシーミニSを買ったばかりですが、3GまたはWi-Fiインターネットがありません - 私は私のコンピュータ上でのみインターネットがあります。 BluetoothまたはUSBケーブルを使用して、インターネットなしでAndroidアプリをインストール...

1  Nexus 7(2013)TabletでAndroid 4.3~4.4.2をアップグレードするときのエラー  ( Error when upgrading android 4 3 to 4 4 2 on nexus 7 2013 tablet ) 
私は真新しいGoogle Nexus 7(2013)LTEタブレットと最初のものが私のデバイスのためのSYSアップデートがあるかどうかを確認することでした。そうだった。システムは4.3 - >を報告しました。 4.4.2アップデートはダウンロードしてインスト...

3  スプリットAPKを手動でインストールします  ( Install split apk manually ) 
最近、私は分割APKと呼ばれるものを知っていて、スライスを無効なAPKファイルとして見つけました。残念ながら、これは通常のデフォルトのパッケージインストーラがこれを処理できないことを意味し、そのように私はSAI、Split APKインストーラと呼ばれる別のもの...

4  内部空間とたくさんのスペースのためにフォーマットされたMarshmallow SDカードでも保管不足  ( Insufficient storage even with marshmallow sd card formatted for internal space ) 
プレイストアからアプリをインストールしようとすると、「ストレージが不十分なストレージ」メッセージが表示されていますが、内部ストレージにフォーマットされているSDカードに無料で20 GBがあります。私はMoto G 2年代の世代を使っています。新しいアプリをイン...

5  Google PlayがRPCでアプリケーションをインストールできません.S-5:AEC-0  ( Google play fails to install application with rpcs 5aec 0 ) 
誰かが私にGoogle Playでアプリケーションをインストールまたはアップグレードできないことを報告しました。それはエラーRPCで失敗しました:S-5:AEC-0 それはどういう意味ですか?これを修正する方法? ...

2  設定アプリケーションを再インストールしてください。  ( Re install settings application ) 
私はAndroidのソースコードを作成し、settings.apkを取得しました。今すぐ私は自分の携帯電話にそのアプリケーションをインストールすることができますか?私の電話で「アプリケーションをインストールできない」と言うと、そのアプリケーションをインストール...

0  AVD環境にインストールされるアプリをブロックする?  ( Blocking apps to be installed in avd environment ) 
開発者がAVDにインストールされるGoogle Playアプリをブロックすることは可能ですか、それともサポートされていないAVDプロフィールを選んでいますか私はアプリをAVDとより管理された環境でデバッグにインストールしようとしていますが、それは言う: あな...

48  私のAndroidデバイスにGoogle Appsパッケージ(Play Store、...)をインストールする方法  ( How can i install the google apps package play store on my android device ) 
最近カスタムROMをインストールし、プレイストアを見つけることができません。 Googleに属するすべてのアプリがないようです。 私のAndroidデバイスにGoogle Appsパッケージ(Play Store、...)をインストールする方法は? ...

21  ストレージが十分なストレージがあるときにアプリをインストールできないのはなぜですか?  ( Why cant i install apps when i have enough storage ) 
「設定」&gt。 「SDカード&アンプ;携帯電話記憶域」の「携帯電話記憶域設定」には、13.78MBとして「空き容量」が一覧表示されています。 2.38MBのアプリをインストールしようとしています。 「保存不足を利用可能な」というエラーメッセージが表示されるの...

6  サービスやGoogleアカウントのないAndroidにFirefoxをインストールするにはどうすればよいですか。  ( How can i install firefox on an android with no service or google account ) 
これは、モバイルGUI環境としてのみ使用されている電話機の非常に狭いユースケース用です。電話機にはサービスがありません.Googleアカウントには関連付けられていませんので、Google Playにアクセスできません。 Firefoxをインストールする方法はあ...

0  PCを介してGoogleストアからアプリをインストール/更新することは可能ですか?  ( Is it possible to install update apps from google store via pc ) 
数ヶ月前は、他のものを更新するために一部のアプリをアンインストールすることを余儀なくされました。最近、Gmailを介して電子メール通知を受け取る能力を失いました(ただし、検索作品)。ゴミアプリのためにすべてGoogle PlayとGoogle Playサービス...

関連する質問

125  私の非AndroidデバイスにAndroidをインストールできますか? 
1  私はBlue Kikをダウンロードしようとしていますが、「アプリがインストールされていない」というメッセージを教えてください。 
1  インストールループAndroid 4.4.2 Galaxy Core II 
13  新しいアプリをインストールしようとすると、「保存不足」 
18  インターネットを持たずにAndroidアプリをインストールする方法はありますか? 
1  Nexus 7(2013)TabletでAndroid 4.3~4.4.2をアップグレードするときのエラー 
3  スプリットAPKを手動でインストールします 
4  内部空間とたくさんのスペースのためにフォーマットされたMarshmallow SDカードでも保管不足 
5  Google PlayがRPCでアプリケーションをインストールできません.S-5:AEC-0 
2  設定アプリケーションを再インストールしてください。 
0  AVD環境にインストールされるアプリをブロックする? 
48  私のAndroidデバイスにGoogle Appsパッケージ(Play Store、...)をインストールする方法 
21  ストレージが十分なストレージがあるときにアプリをインストールできないのはなぜですか? 
6  サービスやGoogleアカウントのないAndroidにFirefoxをインストールするにはどうすればよいですか。 
0  PCを介してGoogleストアからアプリをインストール/更新することは可能ですか?