Команда busybox в терминале возвращает список встроенных утилит — это первое действие, которое стоит выполнить после установки пакета, чтобы убедиться, что бинарный файл работает корректно. Если вместо списка появляется ошибка not found или permission denied, проблема почти всегда связана с отсутствием прав на исполнение или с неправильным путём установки.
BusyBox — это набор стандартных UNIX-утилит, собранных в один исполняемый файл. Он применяется во встраиваемых системах, на роутерах, в кастомных прошивках Android и в минимальных Linux-окружениях, где полноценные GNU coreutils недоступны. Ниже разберём, как установить BusyBox, вызывать его команды и избегать типичных ошибок.
Что такое BusyBox и зачем он нужен
BusyBox объединяет сотни стандартных команд — ls, cp, grep, mount, wget и другие — в одном компактном бинарнике. Каждая утилита внутри него называется апплетом. Вызвать апплет можно двумя способами: напрямую через имя busybox или через символическую ссылку с именем нужной команды.
На Android BusyBox чаще всего требуется для работы рут-приложений, скриптов автоматизации и терминальных эмуляторов. На роутерах и встраиваемых устройствах он обычно уже предустановлен производителем и обеспечивает базовую командную оболочку системы.
Установка BusyBox на Android
Для установки на Android требуется root-доступ, поскольку бинарный файл размещается в системном разделе — обычно в /system/xbin или /system/bin. Существует несколько способов установки:
- 📦 Через приложение-установщик из магазина приложений — самый простой вариант, программа сама подберёт версию под архитектуру процессора.
- 🔧 Через модули Magisk, если на устройстве используется этот способ получения root.
- 💾 Вручную через recovery или ADB — копирование бинарника и выставление прав.
- 🖥️ Через терминал командой
busybox --installпосле размещения файла в системе.
⚠️ Внимание: перед ручной установкой убедитесь, что бинарный файл собран именно под архитектуру вашего процессора (ARM, ARM64, x86). Запуск несовместимой версии приведёт к ошибке, а запись в системный раздел без понимания процесса может нарушить работу устройства. При сомнениях используйте установщик с автоматическим определением архитектуры.
После установки проверьте результат командой в терминале:
busybox | head -1
Вывод версии подтверждает, что бинарный файл исполняется. Если появляется permission denied, проверьте права на файл — должен быть установлен бит исполнения.
☑️ Проверка установки BusyBox
Базовые команды и синтаксис
Общий формат вызова выглядит так: busybox [апплет] [аргументы]. Например, чтобы посмотреть содержимое каталога через апплет ls, выполните:
busybox ls -la /system
Посмотреть полный перечень доступных апплетов в вашей сборке можно командой busybox --list. Набор утилит зависит от конфигурации сборки — в урезанных версиях часть команд может отсутствовать. Справку по конкретному апплету выводит конструкция busybox апплет --help, если она поддерживается в данной сборке.
Если апплеты установлены как символические ссылки, команды вызываются напрямую без префикса busybox — система сама перенаправляет вызов на нужный апплет. Именно так работает большинство встраиваемых систем.
Работа с апплетами: практические примеры
Рассмотрим несколько типовых задач. Копирование файла выполняется знакомой командой busybox cp источник назначение, а просмотр текстового файла — busybox cat /путь/к/файлу. Синтаксис апплетов в целом повторяет поведение классических утилит, но с урезанным набором опций.
Для сетевой диагностики в составе BusyBox обычно доступны ping, wget, ifconfig и netstat. Например, скачать файл можно так:
busybox wget -O /sdcard/file.zip https://example.com/file.zip
| Задача | Апплет | Пример вызова |
|---|---|---|
| Список файлов | ls | busybox ls -la /data |
| Поиск текста | grep | busybox grep "error" log.txt |
| Монтирование раздела | mount | busybox mount -o remount,rw /system |
| Просмотр процессов | ps | busybox ps |
| Архивация | tar | busybox tar -cf backup.tar /sdcard/docs |
Типичные ошибки и их решение
Ошибка applet not found означает, что запрошенная утилита не включена в вашу сборку BusyBox. Решение — использовать сборку с расширенным набором апплетов или найти альтернативную команду из доступных. Проверить наличие конкретного апплета поможет busybox --list | grep имя.
Сообщение permission denied при вызове самого бинарника указывает на отсутствие права исполнения. Исправляется командой chmod 755 /путь/к/busybox, выполненной с правами root. Если же ошибка возникает при работе конкретного апплета — например, при записи в системный раздел — вероятно, раздел смонтирован только на чтение и его нужно перемонтировать.
⚠️ Внимание: перемонтирование системного раздела в режим записи (mount -o remount,rw) — потенциально рискованная операция. На современных версиях Android с защитой Verified Boot изменение системного раздела может привести к отказу загрузки. Выполняйте такие действия только если понимаете последствия и имеете резервную копию.
Почему команды BusyBox отличаются от привычных
Апплеты BusyBox реализуют упрощённые версии утилит: многие опции GNU-версий не поддерживаются. Например, расширенные ключи сортировки в ls или часть выражений в find могут отсутствовать. Если скрипт, написанный для полноценного Linux, не работает, сверяйте каждую опцию с выводом busybox апплет --help.
BusyBox в скриптах и автоматизации
В shell-скриптах для встраиваемых систем принято явно указывать вызов через busybox — это гарантирует, что будет использован именно его апплет, а не отсутствующая в системе полноценная утилита. Строка #!/system/bin/sh в начале скрипта на Android определяет интерпретатор, и без корректного shebang скрипт просто не запустится.
При переносе скриптов с десктопного Linux заменяйте неподдерживаемые опции на совместимые конструкции. Там, где апплет не справляется, иногда проще установить отдельную полноценную утилиту, если позволяет окружение.
Удаление и обновление BusyBox
Если BusyBox установлен через приложение-установщик или модуль Magisk, удаляйте его тем же способом — это корректно уберёт бинарник и симлинки. При ручной установке потребуется удалить сам файл и созданные символические ссылки из каталога установки.
Обновление сводится к замене бинарного файла на новую версию с сохранением прав доступа. Перед заменой запишите текущую версию (busybox | head -1), чтобы при проблемах можно было вернуть прежний файл.
Частые вопросы
Нужен ли root для BusyBox на Android?
Для установки в системный раздел — да. Однако бинарный файл можно запустить и без root, если разместить его в каталоге, доступном приложению или пользователю, например через терминальный эмулятор в его собственной директории. Возможности при этом будут ограничены правами текущего пользователя.
Чем BusyBox отличается от Toybox?
Обе реализации объединяют UNIX-утилиты в одном бинарнике. Toybox используется в стандартной поставке Android начиная с определённых версий, а BusyBox чаще ставят дополнительно ради более широкого набора апплетов. Синтаксис вызова у них схож.
Почему команда работает на ПК, но не работает через BusyBox?
Наиболее вероятная причина — апплет не поддерживает конкретную опцию или сам апплет отсутствует в сборке. Проверьте busybox --list и справку по апплету, затем перепишите команду с использованием поддерживаемых ключей.
Как узнать версию установленного BusyBox?
Выполните в терминале busybox без аргументов или busybox | head -1 — первая строка вывода содержит номер версии.
Безопасно ли устанавливать BusyBox из сторонних источников?
Скачивайте бинарные файлы только из доверенных источников: официальные сборки, проверенные репозитории, известные модули. Исполняемый файл с root-доступом из неизвестного источника — серьёзный риск для безопасности устройства.