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.

 
 
     
     

関連する質問

24  根ざしたAndroid携帯電話で利用可能なコマンドラインSSHクライアントはありますか?  ( Are there any command line ssh clients available for rooted android phones ) 
私はコネコンボットを持っていますが、私はスクリプトできるものを探しています。 編集:ここで説明するには、 スクリプトをターミナルから興味を持っていません。私がやりたいことは、自動化/スケジュールされた方法でsshコマンドを実行することです。 TaskerとL...

9  SDカードのスワップパーティションのパス名を見つける方法は?  ( How to find the pathname of the swap partition on sd card ) 
real="nonofollownoreferrer">この< / A>警告、あなたは間違ったパーティションをスワップを有効にしないでください、またはあなたの電話を破壊することができます: それ以上進む前にOK!前の電話機のパーティションレイアウトは、M...

3  TOYBOXをインストールすればいいですか?  ( Where should i install toybox ) 
私は根ざしたサムスンギャラクシーSリレー4GランニングのAndroid 4.1.2。 Android 6.0 "Marshmallow"以上の場合、 。これは、ターミナルエミュレータを使用することがある上級ユーザーに便利なコマンドラインツールのパッケージです...

1  メモリ使用量を調査する方法  ( How do i investigate the memory usage ) 
私は(根)Android 4.2.2を搭載したMicroMax A74。最近、私はいくつかのアプリケーションのクラッシュに直面し、RAMの使用量を分析し始めました。 設定&gt; apps&gt;実行は役に立ちません: 私は2 MBの無料でわずか2 MB...

24  コマンドラインから「USBテザリング」Android設定を有効にすることは可能ですか?  ( Is it possible to activate the usb tethering android setting from the command ) 
Bashスクリプト内から「USBテザリング」を有効にしたいので、 99887765544331 でコマンドラインを実行する可能性はありますか? edit1 : 次のコマンドは必要な設定を開きますが、一人では変更しないでください。 <事前> <コード> a...

3  受信したデバイス用の追加の端末コマンドのバンドルをインストールする方法  ( How to install bundles of additional terminal commands for rooted devices ) 
最近HTC野生銃の装置を根ざして、Android 4.1.2 AOKP Jelly BeanのカスタムROMを点滅させました。 1つの利点は私が今ターミナルを使うことができるということです。 私はデスクトップマシンのターミナルエミュレータを使用するのに少し慣れ...

0  mount: 'remount' - > '/ system':そのようなファイルまたはディレクトリがない方法を修正する方法  ( How to fix mount remount system no such file or directory ) 
<事前> <コード> 9988776655443330 私が私の電話でKali Linuxで試すとき: <事前> <コード> 9988776655443331 私は何かが足りない? ...

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

7  再起動なしでADBを使用して「優先ネットワークモード」を変更する方法  ( How to change preferred network mode using adb without reboot ) 
「GSM / WCDMA」(0)から「WCDMAのみ」(2)までの携帯電話(CM 12、Stock 4.2、両方の根本的なネットワークモード)を変更しようとしています。コマンドラインのみを使用するだけです。この回答コマンドを使用して 9988776654433...

1  Androidに "IPROUTE2"をインストールすることは可能ですか?  ( Is it possible to install iproute2 on android ) 
Googlesourceのページで<コード> 99887766544332 を使用しようとしましたが、それほど多くはありませんでした。 99887766544333 コマンドをパッケージから使用したいが、インストール方法がわかりません。私の電話は腕の32ビ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有