Справочник по консольным командам Toybox для Android 12


  Ver.0.8.4     Ver.0.8.9     Pending  

Что такое Toybox

Toybox — это проект с открытым исходным кодом, созданный и поддерживаемый разработчиками-любителями (добровольцами), первоначально для Linux, но в наши дни также работающий на Android, BSD и MacOS. Проект начался в 2006 году, и его первоначальный автор (Роб Лэндли) продолжает поддерживать проект с открытым исходным кодом.

Здесь приводится краткое описание Toybox, а также справочник по командам для двух версий: самой свежей на сег одняшний день Ver. 0.8.9 и версии Ver. 0.8.4, которая испоьзована в сборке Android 12 для ТВ-боксов на основе SoC Allwinner H618.

Полное описание Toybox можно найти на сайте автора:

Toybox - это бинарный файл с многими вызовами (multicall binary), который объединяет наиболее распространенные утилиты командной строки Linux в один исполняемый файл. При этом он является простым, небольшим, быстрым, достаточно совместимым со стандартами и достаточно мощным, чтобы превратить Android в среду разработки.

Исходные тексты отдельных консольных команд Toybox находятся в папке Toys, которая содержит пять вложенных папок, в которых каждая команда представляет собой отдельный автономный файл :

  • posix - команды стандарта POSIX (Portable Operating System Interface)
  • lsb - 24 команды стандарта LSB (Linux Standard Base 4.1)
  • net - 14 сетевых команд
  • android - 7 команд, используемые Android
  • other - 106 команд, которые отсутствуют в Posix или LSB, но нужны для обеспечения среды разработки
  • pending - 78 незавершенных команд, требующих проверки

Примечания.

  • 1. Количество команд в каждой группе приведено суммарно для обеих версий
  • 2. Команды группы Android в бинарном файле Ver. 0.8.9 отсутствуют, но имеются в Ver. 0.8.4


    Как пользоваться командами Toybox

    По состоянию на текущий момент самой новой версией, доступной для загрузки в виде бинарного файла, является Ver. 0.8.9, скомпилированная для архитектуры armv7m и доступная на странице загрузок: Download toybox-armv7m

    В тоже время, в образе Android 12 для ТВ-боксов на Allwinner H618 используется более ранняя версия Ver. 0.8.4. По этой причине в представленном здесь справочнике команд информация приведена для этих двух версий раздельно, но с возможностью срвнения имеющихся различий в наборе команд и/или их параметров.

    Для каждой команды для версий 4 и 9 показана информация о её использовании (в консоли или скрипте), основанная на выводимом при запуске команды хелпе. При этом кроме исходного англоязычного дампа такого хелпа приведен его перевод на русский (естественно, гуглевский, а потому местами не очень благозвучный), местами слегка отредактированный и переформатированный. А также есть возможность познакомиться с полным исходным текстом для уточнения алгоритма работы соответствующей утилиты.

    Кроме того, в справочнике отдельно выделены команды из раздела Pending, которые в сборке бинарного файла отсутствуют, но существуют их исходные тексты. Поэтому здесь они представлены только в виде исходных текстов и хелпов из комментариев к этим текстам.

    Для вызова любой выбранной команды из Toybox Ver. 0.8.4 достаточно ввести в консоли (или скрипте) "toybox имя-команды [параметры команды]".

    Большинство команд Toybox ver. 0.8.4 ( 171 из 184) представлены в каталоге /bin в виде символических ссылок. Это означает, что при вызове консольной команды (например, ls) фактически происходит вызов команды toybox ls с соответствующим параметрами.

    Возникает вопрос: для чего нужна информация о самой последней версии Ver. 0.8.9, если она отстутствует в текущей сборке Android 12 и есть только скачанный бинарный файл Toybox-0.8.9, переименованный для краткости, например, в toyboxm ?

    На самом деле, этой версией также можно пользоваться (или попытаться воспользоваться), для этого есть такие способы (их больше, естественно):

  • 1) пересобрать образ прошивки, добавив в папку /bin этот бинарный файл toyboxm
  • 2) для версии с RW-разделом Super просто скопировать этот файл в папку /bin
  • 3) создать в каталоге Data папку с любым простым именем и скопировать в неё файл toyboxm (и запускать команду непосредственно из этой папки или с указанием полного пути).

    Разумеется, нет никаких гарантия, что при таком подходе будут нормально выполняться все имеющиеся в toybox команды, со всеми параметрами и функционалом. Поэтому использование версии Ver. 0.8.9, вероятно, будет иметь скорее экспериментальный или тестовый характер.