Как настроить смартфоны и ПК. Информационный портал

Программы для busybox. BusyBox: швейцарский нож для встраиваемых Linux-систем

Дмитрий Шурупов

BusyBox: швейцарский нож для встраиваемых Linux-систем

Системные администраторы и пользователи UNIX/Linux-систем, несомненно, привыкли к работе со своей любимой командной оболочкой и к стандартным программным средствам. Но их повсеместное использование не всегда возможно. И тогда на помощь приходит BusyBox – упрощенный shell с набором компактных системных средств.

BusyBox: что это такое и зачем вообще нужно?

Несмотря на безудержный рост графических оболочек и «дружелюбных» интерфейсов, представить себе UNIX без командной строки и основных утилит в наши дни невозможно. Многочисленные интерпретаторы и базовые системные утилиты не стоят на месте, растут и развиваются, что неизбежно ведет и к увеличению их объема. В то же время существуют сферы деятельности, в которых компактность любых приложений по очевидным причинам очень важна, например, во встраиваемых устройствах. Вместе с тем во многих случаях не требуется значительная часть той функциональности, которая присуща базовым утилитам «общего назначения».

Для решения этих проблем еще в середине 90-х Брюсом Перенсом (Bruce Perens) был создан пакет BusyBox . Сейчас проект позиционируется как «швейцарский нож для встраиваемых Linux-систем» и в первую очередь ориентирован на использование в небольших дистрибутивах GNU/Linux. Распространяется под второй версией лицензии GNU GPL.

BusyBox представляет собой единственный исполняемый файл, при запуске которого загружается полноценный командный интерфейс. Как гласит официальная документация BusyBox, для формирования минимальной версии GNU/Linux к этому достаточно добавить лишь ядро ОС и каталоги /etc, /dev.

Установка BusyBox

Бинарные пакеты с BusyBox для популярных дистрибутивов GNU/Linux доступны в соответствующих репозиториях, а архив с исходниками – на сайте проекта . В статье рассматривается релиз BusyBox v1.5.0. Одна из главных целей, которую преследуют разработчики BusyBox, – оптимизированность и компактность кода – расчет на ограниченность памяти. Это не только вновь говорит о плюсах его использования во встраиваемых устройствах, но и хорошо сочетается с другим подходом в духе UNIX way: высокий уровень настраиваемости (в бинарный файл BusyBox можно включить только необходимые компоненты).

Еще на стадии компиляции (а точнее, до самого процесса сборки) можно выбрать только те базовые утилиты, которые нужны. Реализовано это в стиле настройки ядра Linux. Вместо более распространенного среди собираемых с automake приложений способа в виде скрипта «configure» для предварительной конфигурации BusyBox нужно выполнить одну из следующих команд:

$ make config

$ make menuconfig

$ make defconfig

Аргумент «config» инициирует запуск «вопросника» со списком доступных опций и базовых утилит, предлагающего проставлять «Y» или «N» на месте нужных и ненужных возможностей соответственно.

Аргумент «menuconfig» вызывает более удобную конфигурацию в виде меню с интерфейсом на базе curses (см. рис. 1).

Аргумент «defconfig» автоматически включает все доступные опции, подготавливая к сборке BusyBox «общего назначения».

Так же, как и в случае с ядром Linux, после настройки создается конфигурационный файл.config, к которому можно затем всегда возвращаться командой:

$ make oldconfig

Это актуально при переходе на более новую версию BusyBox со старой конфигурацией (чтобы при настройке работать только с появившимися в очередном релизе опциями).

По умолчанию, если до вызова «make menuconfig» не существовал файл.config, make автоматически предварительно запускается с аргументом «defconfig». Таким образом, пользователю останется только отключить ненужные возможности. Предусмотрен и обратный вариант: запуск make с «allnoconfig» отключает все опции, чтобы после этого можно было выбрать только то, что нужно.

$ make

$ sudo make install

Работа с BusyBox

Запуск оболочки BusyBox можно осуществить командой:

$ bb

Для разового вызова какой-либо функции (как правило, одна функция BusyBox ограниченно реализует возможности одной из утилит из состава GNU coreutils, util-linux и других стандартных пакетов) можно воспользоваться командой:

$ busybox <функция> [аргументы]

То есть, например:

$ busybox ls -l /

покажет в текущей оболочке (например, bash) результат выполнения команды «ls -l /» в BusyBox (см. рис.2).

Полный список доступных функций в установленной версии BusyBox можно посмотреть в выводе команды «busybox» без аргументов. Просмотр помощи по конкретной функции осуществляется так:

$ busybox --help <функция>

Это приобретает особую актуальность ввиду того, что базовые утилиты в составе BusyBox ограничены в своих возможностях, поэтому список доступных флагов будет отличаться от тех, что все привыкли видеть в стандартных средствах.

Начинка BusyBox

Помимо альтернативного набора coreutils (ls, cat, mv, cp, rm, chmod, df, ln, date, wc, nice, test...) в состав BusyBox входит и множество других программ.

Среди них, во-первых, стоит выделить наличие нескольких минималистских командных оболочек: ash (60 Кб; ответвление от dash из Debian, основанного на ash из NetBSD; рекомендован для использования с BusyBox), hush (18 Кб; понимает грамматику Bourne shell), lsh (всего 10 Кб; только самый простой функционал), msh (30 Кб; minix shell).

Для работы с архивами есть такие утилиты, как tar, gzip, bzip2, ar, zip, rpm, dpkg. Для обработки содержимого файлов есть как awk, sed, patch, так и текстовые редакторы ed и vi.

Широко представлены сетевые средства: и клиентские, и серверные. Среди демонов выделю httpd (с поддержкой авторизации, CGI), dnsd, telnetd, inetd, udhcpd. Для FTP есть ftpget, ftpput и клиент tftp. Кроме того, присутствует и собственная версия GNU wget. Из прочих стандартных утилит: ifconfig, route, traceroute, ping/ping6, netstat, nslookup, arp и arping.

Кроме того, примечательны реализации hdparm для просмотра/установки параметров жесткого диска, syslogd для ведения логов, средств работы с системными учетными записями (adduser/addgroup, deluser/delgroup, login, passwd, su), системы init.

Особого смысла в перечислении всех функций BusyBox не вижу, поэтому ограничусь простой статистикой. В моей сборке BusyBox из портежа Gentoo Linux представлена 241 функция (но в нее входит далеко не все, что реализовано в рамках этого проекта). Если рассматривать для примера ls, то в версии BusyBox для этой утилиты доступно 26 флагов, а в оригинальной в моем случае (ls из GNU coreutils 6.7) – 55 (не считая «помощи» и «версии»). Среди отсутствующих флагов в первой можно выделить: -Q (названия в кавычках), -m (список через запятую), -U и -f (вывод списка без сортировки). Другие, на мой взгляд, еще менее значительны. Общие тенденции, думаю, очевидны.

Подводя итоги

Насколько существенно отсутствие тех или иных возможностей, определяется общими предъявляемыми требованиями и конкретными задачами. По субъективным же впечатлениям, в BusyBox-редакциях базовых утилит представлены все основные, т.е. повседневно используемые (большинством в большинстве же случаев) возможности. Конечно, большинство – не все, и задачи бывают разные, но в целом – заслуга авторов налицо. Им действительно удалось отобрать необходимое.

При этом важно учитывать специфику BusyBox, а именно – его позиционируемое и фактическое ключевое предназначение: использование в окружениях с серьезными ограничениями в памяти, не нуждающихся в той расширенной функциональности, которую представляют современные базовые системные утилиты.

И со своими задачами BusyBox справляется отлично. Вместе с тем проект активно развивается: с января 2006 года уже вышло 16 релизов, в 5 из которых были представлены значительные нововведения (версии 1.x.0). Другим показателем роста BusyBox является тот факт, что все больше разработчиков в своих продуктах предпочитают его применение другим возможным вариантам.

Приложение

Где используется BusyBox

Примеры практического использования BusyBox при создании дистрибутива вы можете найти в статье Всеволода Стахова «Создание загрузочных дискет и CD-дисков Linux» в №6 за 2003 г. или классических публикациях Брюса Перенса (Bruce Perens) «Building Tiny Linux Systems with Busybox», доступных в Интернете (часть 1: http://www.linuxjournal.com/article/4335

Так и не понял что такое busybox, объясните что это и для чего нужен на андроде?

Ответы (3 )

  1. BusyBox является свободным программным обеспечением, выпускаемым в соответствии с условиями GNU General Public License, которая предоставляет ряд инструментов Unix в одном исполняемом файле.

    Многие из инструментов, предоставляемых BusyBox, предназначены для работы с интерфейсами, связанными с ядром Linux. BusyBox может работать в различных операционных системах, например, Linux и Android.

    Он используется несколькими операционными системами, выполняющимися во встроенных системах. Был специально разработан для встраиваемых операционных систем, которые имеют ограниченные ресурсы.

    Совместное использование общего кода между приложениями и оптимизированными по размеру подпрограммами позволяет BusyBox быть намного меньше, чем система с полными версиями утилит.

  2. Быстрый ответ: BusyBox представляет собой набор мощных инструментов командной строки в одном двоичном исполняемом файле, который может быть запущен для систем на базе UNIX, в том числе Android.

    Набор доступных инструментов зависит от того, как был построен двоичный файл BusyBox, а исходный код-GPLv2 с открытым исходным кодом, доступный на busybox.net. Многие из инструментов не делают ничего полезного без root.

    Какие манипуляции можно производить на смартфоне? Например, есть возможность записи данных непосредственно в любой раздел на вашем устройстве. Многие сторонние прошивки, включая Cyanogenmod широко используют BusyBox.

    Преимуществами этого приложения являются малый размер и низкие требования к аппаратуре. Оно представляет собой единый файл (это позволяет сэкономить дисковое пространство).

  3. Какие есть основные команды для busybox?
    вот список команд на русском:
    ash - командная оболочка
    awk - язык обработки строк по шаблонам
    cat - прочитать файл
    chmod - сменить права
    cp - копировать
    date - текущие дата и/или время
    dd - копировать файл с конвертированием и форматированием
    df - вывести статистику использования файловой системы
    dmesg - вывод буфера сообщений ядра
    echo - вывести строку
    egrep - grep с поддержкой расширенных регулярных выражений
    fgrep - grep с оптимизированным поиском фиксированной строки
    grep - искать по шаблону в каждом файле или стандартном вводе
    gunzip - распаковать из gzip
    gzip - упаковать в gzip
    kill - завершить процесс
    ln - создать ссылку с именем ИМЯ_ССЫЛКИ или КАТАЛОГ на указанную ЦЕЛЬ.
    login - начать новый сеанс в системе
    ls - вывести список файлов или каталогов
    mdu
    mkdir - создать каталог
    more - постраничный просмотр текстовых файлов
    mount - монтирование файловых систем
    mv - переместить файл
    netstat - информация о сетевых настройках и подключениях
    ntpc - клиент синхронизации времени по протоколу NTP
    ntpsync
    nvram
    pidof - вывести список PID всех процессов, имена которых совпадают с ИМЕНЕМ
    ping - отправить сетевым узлам пакеты ICMP ECHO_REQUEST
    ps - информация о процессах
    pwd - вывести рабочий каталог
    rm - удаление файлов или каталогов
    rmdir - удаление пустых каталогов
    rstats - авторские права
    sed - преобразование текстовых потоков
    sh - интерпретатор команд
    sleep - пауза N секунд
    sync - записать все буферизированные блоки файловой системы на диск
    tar - работа с архивами формата tar
    touch - обновить дату последнего изменения на данного файла или файлов
    umount - отмонтирование файловых систем
    uname - информация о системе
    usleep - пауза N микросекунд
    vi - редактировать файл
    watch - исполнять программу периодически
    zcat - распаковать в стандартный вывод
    Смотрите видео в нем показывается как установить BusyBox

Это приложение для установки BusyBox на большинство устройств с последующим его обновлением до актуальной версии. Busybox по сути является набором консольных утилит Linux систем. Необходим, например, для работы app2sd или программ для разгона или чего-нибудь подобного, что требует подключения сторонних модулей ядра. В большинстве кастомных прошивок он уже встроен.

FAQ ПО ПРОГРАММЕ:

Как с помощью этой программы разогнать процессор?
Никак. Busybox нужен для некоторых программ, выполняющих разгон. Вопросы по разгону задавайте в топике своего аппарата.

Как узнать установлен ли Busybox и какая версия?
Устанавливаем Android Terminal Emulator, пишем в нем busybox, если он установлен, то будет написана версия и выйдет краткая справка по коммандам.

-Для чего нужны команды busybox и что такое "Терминал"
Если вы не в курсе, что это такое, то вам это не нужно, поверьте на слово. Но для развития полезно. Android Terminal Emulator . Для более продвинутых - Better Terminal - освоить сложней, но больше полезностей. Есть еще терминал основанный на собственном методе Кевина Бона, использующий не busybox, а kbox, никому пока ранее неизвестный автор сделал нечто новое и привлекательное, так как его терминал работает на девайсах без рута. По поводу команд... Если вы новичок, то стоит заглянуть в гугл-поиск и вбить - "команды
терминала linux" или android. Команды нужны исключительно для удобства управления системой и если вы обычный пользователь, вам это не нужно в повседневной жизни. Но сам busybox необходим в основном программам требующих рут права, для правильного функционирования.

-Можно ли удалить приложение после установки busybox?
Да.

Внимание!
1) В CyanogenMod и MIUI BusyBox уже установлен.
2) Почти во всех кастомных прошивках BusyBox уже установлен. В редких случаях обновление busybox может убить прошивку или привести к неработоспособности некоторых функций, программ.
3) Убедительно советую перед установкой делать nandroid бэкап системного раздела.

Скачать BusyBox Pro на Андроид бесплатно вы можете по ссылке ниже.

Сегодня мы поговорим об еще одной системной утилите BusyBox. Она позволяет успешно запускать и работать приложениям, включающим в себя функции обращения к ядру системы Android после рутирования мобильного гаджета.

Для чего Андроиду нужен BusyBox и что он собой представляет?

После предоставления устройству расширенных прав (другим словом, root-доступа), задействующие их приложения нередко обращаются к ядру вашей android-прошивки, что порой может привести к непредсказуемым результатам, поскольку при запуске системных библиотек из внешнего приложения напрямую с помощью определенных команд может произойти потеря данных, взлом или сбой в работе ОС. Для надежного и бесперебойного обращения таких приложений к ядру системы нужно позаботиться о надежном канале обмена данными (или интерфейсе) между пользователем и файловой системой. Такой интерфейс и обеспечивается набором консольных библиотек для Андроид под названием BusyBox.

Вдобавок, планка функциональности, удобства и производительности приложений с root-привилегиями заведомо понижается вследствие того, что движки к большей части таких программ были написаны на высокоуровневых языках программирования. И здесь БизиБокс предстает перед нами в самом выгодном свете, - ведь при его разработке использовался исключительно C.

Какие приложения требуют наличия Busybox?

К разряду приложений, нуждающихся в связке с представленным пакетом, относятся:

  1. Файловые менеджеры
  2. Средства для восстановления данных и очистки кэша
  3. Инструменты для переноса ресурсов на внешние карты памяти
  4. Утилиты для разгона ARM-процессора или видеочипа.

Для их оптимальной работы желательно также наличие , поскольку именно этот мобильный апплет в силах грамотно обеспечивать контроль root-привилегий для каждой индивидуальной программы.

Как работать с пакетом?

По сути, BusyBox – это даже не программа, а унифицированный набор средств для передачи и приема данных от системного приложения к ядру среды и наоборот. Чтобы работать с пакетом, не нужно делать никаких манипуляций. Если системное приложение с root-правами затребует БизиБокс, перед вами тут же появится уведомление о необходимости инсталляции пакета, после чего в результате подтверждения установка произойдет автоматически.

При желании скачать BusyBox из Плей Маркета вручную, вы также вправе это сделать. Несколько версий BusyBox для Андроид имеется на популярном мобильном форуме 4pda. Помимо прочего, на 4pda.ru также выложена расширенная, платная, редакция root-менеджера под названеим busybox pro.

Установка рут-прав посредством приложения может быть выполнена несколькими способами: как интеллектуальная (smart) и обычная.

Выбор метода инсталляции апплета android busybox

Smart-инсталляция BusyBox"а предоставляет возможность гибко кастомизировать развертку каждого индивидуального составного апплета, но такая функция доступна лишь в профессиональной версии BusyBox Pro .

Что включает в себя root-менеджер BusyBox?

Данный пакет состоит из нескольких десятков утилит, упрощающих доступ к данным на рутированном устройстве. Посмотреть на их список можно на одной из вкладок после инсталляции.

Список составных утилит инструментария busybox для android

Как обращаться к программе?

Ручной доступ к вложенным утилитам обеспечивается при помощи эмулятора терминала командной строки Андроид, который можно скачать вот . Со списком доступных команд можно ознакомиться на страничке проекта в wiki .

Резюме. Программа busybox для Андроид станет ценным приобретением для пользователей файл-менеджеров с функциями обращения к ядру системы и любителей аппаратного разгона своего мобильного коммуникатора. Если вы пользуетесь кастомной прошивкой (MIUI, CyanogenMod), BusyBox вшит в нее по умолчанию. Перед инсталляцией советуем создавать резервную копию системного раздела во избежание сбоев или неработоспособности некоторых программ.

BusyBox (Бизибокс) . Данное приложение представляет собой инсталлятор BusyBox для Андроид. BusyBox содержит крошечные версии многих утилит UNIX в одном маленьком исполняемом файле. Он обеспечивает замену для большинства утилит, которые можно найти в GNU fileutils, shellutils и др. Утилиты BusyBox обычно имеют меньше возможностей, чем их полнофункциональные собратья GNU, однако те функции, которые включены в BusyBox, совместимы с аналогичными функциями утилит GNU. BusyBox предоставляет довольно полное окружение для любых мобильных или встраиваемых систем.

Приложение содержит сборку BusyBox для платформ ARM, x86 или MIPS, поддерживается 334 апплета, является сборкой с наиболее полным набором функций. Поддерживается установка и удаление BusyBox через приложение, и установка через zip-архив для рекавери, который можно сохранить на карту памяти из меню приложения (Меню -> Zip-архив ). Архив сохраняется с версией BusyBox, совместимой именно с текущей системой, и может не работать на других устройствах.

Для установки BusyBox в систему требуются права суперпользователя (root) , однако можно использовать утилиты busybox и без прав суперпользователя. Для этого достаточно в любом терминале Android ввести следующую команду:

export PATH=/data/data/ru.meefik.busybox/files/bin:$PATH

После этого в том же терминале можно будет пользоваться утилитами из пакета busybox. Перед использованием этой возможности данное приложение должно быть хоть раз запущено после установки на устройство.

Описание процедуры установки .

Скачиваете и устанавливаете программу. Запускаете ее, заходите в (Настройки) , нажав в левом нижнем углу на кнопку вашего устройства Андроид...В Настройках, ставите галку на (Заменить апплеты)..Выходите из (Настроек) и нажимайете на (Установить), после нажатия BusyBox потребует предоставления прав SuperSu, соглашаетесь и начнется установка - в 3 сек.. Если установка пройдет успешно, везде будет написано-(done),то есть готово. Далее перезагружаете устройво и после перезагрузки, можно уже удалить и саму программу установки BusyBox.

Скачать приложение BusyBox (Бизибокс) на Андроид вы можете по ссылке ниже.

Лучшие статьи по теме