Onde devo instalar a Toybox? -- installation campo com file-system campo com command-line camp android Relacionado O problema

Where should I install Toybox?


3
vote

problema

português

Eu possuo um raízes Samsung Galaxy S Relay 4G Running Stock Android 4.1.2.

Se você tem o Android 6.0 "Marshmallow" ou melhor, então você tem Toybox . Este é um pacote de ferramentas de linha de comando, acessível para usuários avançados que às vezes usam um emulador de terminal. Infelizmente, o Android 4.1.2 não inclui a ToyBox. Em vez disso, inclui algumas outras ferramentas que não são tão boas para usar.

Às vezes eu uso o emulador de terminal escrito por Jack Palevich; Outras vezes eu uso adb shell de um laptop.

    .
  1. faria mais sentido instalar a ToyBox na minha partição do sistema, ou para minha partição de dados? Ambas as divisórias têm muito mais do que suficiente espaço livre.

  2. Quando um comando é fornecido tanto pelo Android quanto pela ToyBox, eu quero que a versão ToyBox ganhe. No Linux, posso instalar o ToyBox para /home/unforgettableid/bin ou /usr/local ou /opt . Você poderia, por favor, sugerir um lugar sensato para mim para instalar o toybox (e sua grande coleção de links simpáticos) no meu telefone?

[strong> editar : Eu me pergunto quais são os vários instaladores do busybox. Além disso, imagino como Android define a variável de ambiente de caminho. Além disso, também me pergunto se há ou não uma maneira de mudar essa variável e fazer minha mudança persistir em reinicializações. Finalmente, eu me pergunto se ou não colocar as ferramentas de caixa de brinquedo primeiro no meu caminho seria provável quebrar as coisas de maneiras não óbvias.]


possivelmente relacionado: "hierarquia de pasta Android" .

Inglês Original

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".

        

Lista de respostas

5
 
vote

onde devo instalar a Toybox?

.

Fazer mais sentido instalar a Toybox na minha partição do sistema, ou para minha partição de dados?

depende. Se você não planejar a redefinição de fábrica, você pode escolher a partição de dados, mais, escolher partição do sistema.

.

Quando um comando é fornecido tanto pelo Android quanto pela ToyBox, quero que a versão ToyBox ganhe.

o caminho Variável contém a localização dos diretórios que contêm binários executáveis. Se você decidir manter um diretório separado para seus links symlinks, configure $ caminho para pesquisar um comando em seu diretório primeiro. Se encontrar um, ele irá executá-lo.

.

No Linux, posso instalar o toybox para /home/unforgettableid/bin ou /usr/local ou /opt . Você poderia, por favor, sugerir um lugar sensato para mim para instalar o toybox (e sua grande coleção de links sylinks) no meu telefone?

Todos esses locais não existem para o Android. Desde que você está usando o Android 4.1.2, suponho que você estaria tendo seu cartão SD externo formatado com um sistema de arquivos de gordura. Os symlinks não funcionam em sistemas de arquivos de gordura (não no FAT32 ou no VFAT pelo menos) para que sua melhor aposta seja instalada em ABCDEFGHIJKLMNABCDEFGHIJKLMN7 ou ABCDEFGHIJKLMNABCDEFGHIJKLMN8 .

Alternativamente, você pode criar uma imagem sob o seu cartão SD externo, formatar essa imagem com um sistema de arquivos suportado pelo kernel do seu Android (frequentemente ext2, ext3) e, em seguida, montá-lo no dispositivo em qualquer lugar no modo de loopback. Eu não tentei este método embora.

.

Eu me pergunto quais os vários instaladores do busybox fazem

busybox ( por stericson ) coloca o busybox binário em /system/xbin e cria symlink para seus applets ao seu binário sob o mesmo diretório.

.

Também me pergunto como Android define a variável de ambiente de caminho. Além disso, também me pergunto se há ou não uma maneira de mudar essa variável e fazer minha mudança persistir em reinicializações

Eu não sei quando o Android define $ caminho. No entanto, o shell que você está usando seria provavelmente ter um arquivo de configuração.

  • mksh ( mirbsd korn shell ; o Shell padrão no Android) possui um arquivo de configuração data/misc/wifi/wpa_supplicant.conf0 in < CÓDIGO> ABCDEFGHIJKLMNABCDEFGHIJKLMN11 . Você pode definir $ caminho lá e a mudança seria persistente entre reinicializações.
  • para bash shell, o arquivo de configuração é data/misc/wifi/wpa_supplicant.conf2 localizado sob data/misc/wifi/wpa_supplicant.conf3 .

Parece que ambos os arquivos são Só para sessões interativas Só se você tentar usar o ADB para acessar um Toybox ou a sua ligação simbólica que não é colocada sob data/misc/wifi/wpa_supplicant.conf4 , data/misc/wifi/wpa_supplicant.conf5 , data/misc/wifi/wpa_supplicant.conf6 , data/misc/wifi/wpa_supplicant.conf7 ou data/misc/wifi/wpa_supplicant.conf8 (os locais padrão no caminho de $), você receberia um erro "comando: não encontrado". Isso ocorre porque o caminho $ $ seria usado em vez disso.

Eu não encontrei uma solução para este problema ainda, mas veja os comentários abaixo esta resposta.

De qualquer forma, vamos instalar a Toybox por enquanto.


Como faço para instalar a Toybox em um dispositivo Android?

Nota: A solução pressupõe que o seu Android está enraizado, que ADB é configuração no PC, e que seu dispositivo está conectado a um PC com Depuração USB habilitada .

Instalação na partição do sistema

Nenhuma mudança no caminho é necessária se você escolher um local padrão. Busybox prefere data/misc/wifi/wpa_supplicant.conf9 .

  • Remount a partição do sistema no modo rw . Se necessário, consulte não pode remontar / sistema em rw
  • policial O ToyBox Binário para ABCDEFGHIJKLMNABCDEFGHIJKLMN20 e dar permissão executável para ele. (As permissões padrão definidas para outros binários são network1 .)

    Você pode fazer isso usando chmod

      network2   
  • Crie symlinks para várias ferramentas acessíveis por ToyBox binário. Cabe a você como você os cria.

    Eu usei um método muito simples, mas requer um sistema * nix

      network3   

    Tudo o que estou fazendo aqui é executando o ToyBox binário, substituindo os espaços brancos por uma nova linha para que cada ferramenta apareça em uma nova linha. Mais tarde, estou removendo a última linha (estava em branco na saída), removendo Retorno de carro Convenientemente Coloque por ADB e, em seguida, para cada linha de saída, estou criando um symlink para toybox binário com o nome da ferramenta, no mesmo diretório.

    Você pode Use este método se você não tiver um sistema operacional * NIX no PC:

      network4   

Feito! Sua caixa de brinquedo e seus applets estão prontos para serem executados.

Instalação na partição de dados

    .
  1. Criar um diretório em ABCDEFGHIJKLMNABCDEFGHIJKLMN25 ( ABCDEFGHIJKLMNABCDEFGHIJKLMN26 daqui em diante)
  2. Copie o ToyBox binário para network7 e dar permissão executável a ele. (As permissões padrão definidas para outros binários são network8 .)

      network9   
  3. Crie symlinks para várias ferramentas acessíveis por ToyBox binário. Cabe a você como você os cria.

    Eu usei um método muito simples, mas requer um sistema * nix

      network={     ssid="Telekom"     key_mgmt=NONE     priority=42 } 0   

    Apenas a localização foi alterada, o restante do procedimento é igual a um seguido para instalação na partição do sistema

  4. Edite seu arquivo de configuração padrão do shell e adicione

      network={     ssid="Telekom"     key_mgmt=NONE     priority=42 } 1   

    Isso faria com que a concha olhe para network={ ssid="Telekom" key_mgmt=NONE priority=42 } 2 primeiro e execute o binário, se disponível.

Feito! Aproveite sua Toybox e seus applets.

 

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
Melhor resposta
 

Se a sua versão Android é enviada com Toybox e alguns links de toybox, você pode deixar aqueles em /system/bin . Mas, se você está instalando a ToyBox, pode ser mais sábio colocar a caixa de brinqueda recém-instalada e todos os seus links simbólicos, em /system/xbin .

Deixe-me explicar por quê.

Como Firelord aponta em sua resposta: ABCDEFGHIJKLMNABCDEFGHIJKLMN2 Inicia um Shell Interativo. Mas comandos como adb shell ls inicie um shell não interativo. Para motivos de desempenho < / a> Shell não interativo Nunca leu todos os arquivos de configuração. Porque eles não lêem quaisquer arquivos de configuração, seu Path de pesquisa é hardcoded. < / p >.

É bom ter toybox disponível até mesmo para conchas não interativas; Na verdade, se estiver indisponível para essas conchas, pode ser confuso. Então você definitivamente quer instalar a ToyBox para um local que está no caminho de pesquisa.

Mas você pode não querer colocar os links de toybox mais cedo no caminho de pesquisa do que o do Android ABCDEFGHIJKLMNABCDEFGHIJKLMN4 , ABCDEFGHIJKLMNABCDEFGHIJKLMN5 e outros utilitários básicos. Eu nunca verifiquei, mas teorize que sua versão do Android pode incluir aplicativos que dependem de quirks dos utilitários de linha de comando Android. Para saber mais, veja este post , em que o Android Mantenedor de ferramentas de linha de comando explica por que o Android tinha que ficar com sua não-toybox ls por alguns meses.

A maioria dos utilitários de linha de comando Android são em /system/bin . O único diretório que cai mais tarde no caminho de pesquisa do Show do Android do estoque é /system/xbin .

É por isso que você pode querer colocar a Toybox e todos os seus links simbólicos em /system/xbin .


Dica: Se quiser, você pode criar um script de shell que simplesmente passa todos os parâmetros para o ToyBox. Você pode dar a este script shell um nome ultra-curto, como /system/xbin0 . Isso facilita a solicitação de que seu dispositivo deve executar um brinquedo de toybox em vez de um comando Android. Por exemplo, para executar o toybox /system/xbin1 , basta digitar /system/xbin2 .

 

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.

 
 
     
     

Perguntas relacionadas

0  Bloqueio de aplicativos a serem instalados no ambiente AVD?  ( Blocking apps to be installed in avd environment ) 
É possível que os desenvolvedores bloqueiem seus aplicativos do Google Play a serem instalados na AVD ou estou apenas pegando o perfil AVD sem suporte? Estou ...

48  Como posso instalar o pacote do Google Apps (Play Store, ...) no meu dispositivo Android?  ( How can i install the google apps package play store on my android device ) 
Recentemente, instalei uma ROM personalizada e não consigo encontrar a Play Store. Parece que todos os aplicativos que pertencem ao Google estão faltando. ...

1  Erro ao atualizar o Android 4.3 a 4.4.2 no tablet Nexus 7 (2013)  ( Error when upgrading android 4 3 to 4 4 2 on nexus 7 2013 tablet ) 
Eu tenho um novo Google Nexus 7 (2013) Tablet LTE e primeira coisa que fiz, foi para verificar se há qualquer atualização do SYS para o meu dispositivo. Era. ...

1  Instalar Loop Android 4.4.2 Galaxy Core II  ( Install loop android 4 4 2 galaxy core ii ) 
ontem recebi uma atualização para o meu Samsung Galaxy Core II (SM-G355HHN). Eu baixei a atualização e tentei instalá-lo. Em cerca de 94% recebi um error cod...

6  Como posso instalar o Firefox em um Android sem serviço ou Conta do Google?  ( How can i install firefox on an android with no service or google account ) 
Isto é para um caso de uso muito estreito com um telefone usado como um ambiente de GUI móvel apenas. O telefone não tem serviço e não está associado a uma co...

4  Armazenamento insuficiente mesmo com cartão SD Marshmallow formatado para espaço interno e muito espaço  ( Insufficient storage even with marshmallow sd card formatted for internal space ) 
Quando tento instalar um aplicativo da Play Store, estou recebendo a mensagem "insuficiente", mas tenho 20 GB grátis no meu cartão SD formatado para armazenam...

2  Reinstale a aplicação de configurações  ( Re install settings application ) 
Eu compilei códigos de origem Android e recebo configurações.apk agora eu me pergunto Posso instalar esse aplicativo no meu telefone? Quando tento fazer que m...

21  Por que não posso instalar aplicativos quando tenho armazenamento suficiente?  ( Why cant i install apps when i have enough storage ) 
em "Configurações" & gt; "SD Card & Amp; Configurações de armazenamento do telefone" em "Armazenamento interno do telefone", lista "espaço disponível" como 13...

0  É possível instalar / atualizar aplicativos da Google Store via PC?  ( Is it possible to install update apps from google store via pc ) 
Alguns meses atrás, fui forçado a desinstalar alguns aplicativos para atualizar outros. Recentemente, perdi a capacidade de receber notificações por e-mail vi...

18  Existe alguma maneira de instalar o aplicativo Android sem ter internet?  ( Is there any way to install android app without having internet ) 
Acabei de comprar um Samsung Galaxy Mini S, mas não tenho 3G ou Internet Wi-Fi - eu tenho internet apenas no meu computador. Existe alguma maneira de instalar...

13  "Armazenamento insuficiente" ao tentar instalar o novo aplicativo  ( Insufficient storage when trying to install new app ) 
Toda vez que eu vou instalar um novo aplicativo, recebo a mensagem "armazenamento insuficiente" e um incapaz de instalar qualquer coisa ! Eu estou usando a...

3  Instalar split apk manualmente  ( Install split apk manually ) 
Recentemente eu tenho que saber uma coisa chamada Split APKS, e encontrei as fatias como arquivos APK inválidos, apenas a base é. Infelizmente, isso significa...

1  Eu estou tentando baixar o azul kik, mas continua me dando mensagem 'aplicativo não instalado'  ( Im trying to download blue kik but it keeps giving me the app not installed ) 
Estou usando um TCL LX (que eu não duvidaria é o problema, devido a quão ruim o telefone é) e estou procurando uma solução simples. Eu tentei instalá-lo vária...

125  Posso instalar o Android no meu dispositivo não Android?  ( Can i install android on my non android device ) 
Muitas pessoas querem tentar / usar Android sem comprar um novo telefone Android. Como posso instalar o Android no meu telefone ou dispositivo atual executand...

5  O Google Play não instala o aplicativo com RPC: S-5: AEC-0  ( Google play fails to install application with rpcs 5aec 0 ) 
Alguém relatou-me que ele não pode instalar ou atualizar aplicativos no Google Play. Falha com o erro RPC: S-5: AEC-0 O que isso significa? Como consertar i...




© 2021 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.