Busybox что это linux

Обновлено: 02.07.2024

Содержание

История

Происхождение

BusyBox поддерживался Энрике Занарди и был ориентирован на потребности Debian. загрузочные дискеты до начала 1998 года, когда Дэйв Синеж взял на себя Проект маршрутизатора Linux (LRP). Cinege внесла несколько дополнений, создала модульную среду сборки и сместила фокус BusyBox на общие высокоуровневые встроенные системы. Поскольку в 1999 году развитие LRP замедлилось, Эрик Андерсен, в то время Lineo, Inc., взял на себя управление проектом и стал официальным сопровождающим в период с декабря 1999 года по март 2006 года. За это время рынок встраиваемых систем Linux резко вырос, и BusyBox значительно повзрослел, расширив как свою базу пользователей, так и функциональность. Роб Лэндли был сопровождающим с 2005 года до конца 2006 года, затем Денис Власенко занял его место в качестве текущего сопровождающего.

Споры о GPLv2 / GPLv3

Иски по GPL

особенности

Поскольку это полная система начальной загрузки, она в дальнейшем заменит демон инициализации и udev (или в последнее время systemd) используя себя, чтобы называться в этом при запуске и mdev во время горячего подключения.

Одиночный двоичный

Команды

В официальной документации BusyBox представлен обзор доступных команд и их параметров командной строки.

Примеры

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

/ bin / busybox ls

Чаще всего имена желаемых команд связаны (используя жесткий или символический ссылки) на исполняемый файл BusyBox; BusyBox читает argv [0] найти имя, по которому он вызывается, и запускает соответствующую команду, например, просто

после / bin / ls связан с / bin / busybox. Это работает, потому что первым аргументом, передаваемым программе, является имя, используемое для вызова программы, в этом случае аргумент будет «/ bin / ls». Busybox увидит, что его «имя» - «ls», и будет действовать как программа «ls».

Техника и прием

BusyBox также является важным компонентом VMware ESXi.

Он необходим для нескольких корневых приложений на Android, а также предустановлен с некоторыми решениями "1 Tap Root", такими как Kingo Root.

Споры по поводу Toybox

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

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

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

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

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

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

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

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

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

Рисунок 1. Установка BusyBox: «make menuconfig» на манер Linux-ядра

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

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

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

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

Далее все традиционно:

$ sudo make install

Работа с BusyBox

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

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

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

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

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

Рисунок 2. BusyBox в работе: ls

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

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

Это приобретает особую актуальность ввиду того, что базовые утилиты в составе 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.

Рисунок 3. Исполнение элементарных скриптов в BusyBox

Кроме того, примечательны реализации 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 (вывод списка без сортировки). Другие, на мой взгляд, еще менее значительны. Общие тенденции, думаю, очевидны.

Рисунок 4. Сетевые средства в «make menuconfig» BusyBox

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

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

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

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

BusyBox нашел применение в таких системах, как Familiar Linux (для КПК) и MoviX (популярный компактный дистрибутив с набором мультимедийных Open Source-решений), в установщиках Debian, Gentoo, Red Hat, Mandriva и других проектов, а также во многих Linux-основанных устройствах (Sharp Zaurus, роутеры, AP. ).

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

Для функционирования программы необходимы права root пользователя.

Мини-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) Убедительно советую перед установкой делать android бэкап системного раздела.
4) Прочитать перед установкой:

Требования

Должно быть 3 мегабайта свободного места в каталоге /system
Если вы не в курсе, не делаете этого, так как вам это 100% не нужно!
Этот busybox исключительно для профи.

Чистая установка или если программа уже стоит

0. Удалить на карте файлы: "busybox-stericson" "toolbox-stericson", stericson-ls если есть. Зайти в приложения/управление/сделать остановку программы/удалить данные.
1. Установите программу busybox по ссылке внизу или если имеется более новую. Сам инсталлятор.
2. Положите busybox на карту памяти в любое, удобное для вас место. Запустите программу и дождитесь окончания сканирования.
3. Выберите кастомную установку и укажите путь у файлу.
4. Выберите обязательно каталог /system/bin
5. Поставьте галочку на чеке: Clean Mode
6. Выберите Install, а затем Smart install
7. Дождитесь конца установки и перезагрузите аппарат
8. Зайдите снова в программу и дождитесь окончания сканирования.
9. Поставьте галочку на чеке: Replace All
10. Выберите Install, а затем Smart install.
11. Перезагрузить телефон. И удалить лишнее руками (профи знают)

Простая установка

1. Установите программу busybox из шапки или если имеется более новую. Сам инсталлятор.
2. Положите busybox на карту памяти в любое, удобное для вас место.
3. Запустите программу и дождитесь окончания сканирования.
4. Выберите кастомную установку и укажите путь у файлу
5. Выберите Install, а затем Normal install
6. Нужные аплеты добавить в командной строке или рут эксплорером создать симлинки.

Что такое симлинк?

Симлинк это - символическая ссылка на указанный файл, то есть ярлык для выполнения команд системы. Как выглядит симлинк на busybox ? - смотрим скриншот, если заглянуть в папку system/xbin у файлов есть стрелка вправо указывающая на busybox - это и есть симлинк.


Какие симлинки должны быть в папке system/bin и как их восстановить?

Раз у многих стоят проблемные моды, проверяем наличие основных команд toolbox в папке system/bin Если нет симлинка, восстанавливаем командой:

ln -s toolbox /system/bin/ симлинк

в adb или через терминал на телефоне. Пример:

ln -s toolbox /system/bin/chown

Если вам не удобно удалять лишние симлинки busybox руками, это можно сделать, так же командой:

rm /system/xbin/ симлинк

смотрим путь. В данном случае симлинк удаляется из папки xbin. Можно в команде изменить путь на bin.
Так же, напоминаю тем, кто не знает: Команды busybox не должны повторять команды toolbox. Это означает, что если команда busybox имеется, то ее надо удалить. Основные команды прошивок читайте или спрашивайте в темах своей модели аппарата.

Основные команды андройда - Симлинки

cat
chmod
chown
cmp
date
dd
df
dmesg
getevent
getprop
hd
id
ifconfig
iftop
insmod
ioctl
ionice
kill
ln
log
ls
lsmod
mkdir
mount
mv
nandread
netstat
newfs_msdos
notify
printenv
ps
reboot
renice
rm
rmdir
rmmod
route
schedtop
sendevent
setconsole
setprop
sleep
smd
start
stop
sync
top
umount
vmstat
watchprops
wipe

Основные команды для работы с BusyBox

Команды для работы с файлами

Управление процессами в BusyBox

ps – вывести текущие пользовательские активные процессы
top – показать все запущенные процессы и краткую информацию о ресурсах системы
kill pid – убить процесс id которого pid
killall proces – убить все процессы с именем proces
bg – список остановленных и фоновых задач; продолжить выполнение остановленной задачи в фоне
fg – выносит на передний план последние задачи
fg n – вынести задачу n на передний план

Права доступа на файлы в BusyBox

chmod 640 file – замена прав доступа файла file на 640. Права назначаются раздельно для пользователя,
группы и для всех остальных сложением:
4 – чтение ®
2 – запись (w)
1 – исполнение (x)

chmod 777 – чтение, запись, исполнение для всех пользователей
chmod 751 – чтение, запись, исполнение для владельца; чтение, исполнение для группы;
и только исполнение для остальных пользователей.

Дополнительные опции можно посмотреть набрав команду - man chmod

Системная информация в BusyBox

date – вывести текущую дату и время роутера
cal – вывести календарь на текущий месяц
uptime – показать текущий аптайм (время работы системы с момента её загрузки)
w – показать пользователей онлайн
whoami – имя, под которым вы залогинены
finger user – показать информацию о пользователе user
uname -a – показать информацию о ядре
cat /proc/cpuinfo – информация о процессоре
cat /proc/meminfo – информация о памяти
man command – показать мануал для команды command
df – показать информацию о использовании дисков
du dir – вывести “вес” каталога dir
free – использование памяти и swap
whereis app – возможное расположение программы app
which app – какая app будет запущена по умолчанию

Использование SSH в BusyBox

ssh user@host – подключится к host как пользователь user
ssh -p port user@host – подключится к узлу host на порт port как пользователь user
ssh-copy-id user@host – добавить ваш ключ на узел host для пользователя user чтобы включить вход
логина без пароля и по ключам

Как осуществляется поиск в BusyBox

grep pattern files – искать pattern в файле files
grep -r pattern dir – искать рекурсивно pattern в директории dir
command | grep pattern – искать pattern в выводе command
locate file – найти все файлы с именем file

Процессы архивации при наличии установленных tar и gzip пакетах в BusyBox

tar cf file1.tar files1 – создать tar-архив с именем file1.tar содержащий файл files1
tar xf file1.tar – распаковать архив file1.tar
tar czf file1.tar.gz files1 – создать архив file1.tar.gz со сжатием Gzip
tar xzf file1.tar.gz – распаковать архив tar с Gzip сжатием
tar cjf file1.tar.bz2 – создать архив file1.tar.bz2 со сжатием Bzip2
tar xjf file1.tar.bz2 – распаковать архив tar с Bzip2 сжатием
gzip file1 – сжать file1 и переименовать в file1.gz
gzip -d file1.gz – разжать file1.gz в file1

Настройка сети в BusyBox

ifconfig – показать настройки найденных сетевых интерфейсов
ping host – пропинговать узел host и вывести результат
whois domain – получить информацию whois для домена domain
dig domain – получить DNS информацию для домена domain
dig -x host – реверсивно искать информацию DNS об узле host
wget file – скачать файл file
wget -c file – продолжить остановленную или оборванную закачку файла file

Установка\удаление программ из пакетов в BusyBox

/opt/bin/ipkg-opt install название программы/пакета (установка)
/opt/bin/ipkg-opt remove название программы/пакета (удаление)
dpkg -i pkg.deb – установка пакета (Debian)
rpm -Uvh pkg.rpm – установка пакета (RPM)

Установка из исходников

cd application-1.0.2
./configure
make
make install

Быстрые короткие команды

Ctrl+C – завершить текущую команду
Ctrl+Z – остановить текущую команду, продолжть с fg на переднем плане или bg в фоне
Ctrl+D – разлогиниться, тоже самое, что и exit
Ctrl+W – удалить одно слово в текущей строке
Ctrl+U – удалить строку
!! - повторяет выполнение последней введенной команды.
exit – выход, то есть разлогинивание.
Это чтобы по интернету не шариться в поисках.


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

Команды Linux поставляются вместе с системой при установке дистро. Некоторые из основных команд, такие как cd, kill и echo, фактически встроены в вашу оболочку. Другие, например ls, mv и cat — часть основного пакета служебных программ. Но в мире открытого кода всегда есть альтернативы, и одна из самых интересных — BusyBox.

* BusyBox — это проект, который обеспечивает простую реализацию почти 400 распространенных команд. Этот набор UNIX-утилит командной строки имеет открытый исходный код (GPL — лицензия на свободное ПО).

Подробнее о BusyBox в Linux

BusyBox реализовывает почти 400 общих команд, в том числе ls, mv, ln, mkdir, more, ps, gzip, bzip2, tar и grep. Он также содержит версию языка программирования awk, редактор потока sed, средство проверки файловой системы fsck, пакеты менеджеров rpm и dpkg. Также у BusyBox есть оболочка (sh), которая обеспечивает лёгкий доступ ко всем этим командам. Проект содержит все основные команды, необходимые интерфейсу портативных операционных систем POSIX, чтобы выполнить общие задачи обслуживания системы.

У BusyBox есть команда init, которую можно запустить как PID 1, чтобы она служила родительским процессом для всех других системных служб. Другими словами, проект можно использовать как альтернативу systemd, OpenRC, sinit, init и другим демонам запуска.

BusyBox очень маленький, менее 1 МБ, поэтому он так популярен в граничных вычислениях, встроенных системах и IoT, где дисковое пространство на вес золота. В мире контейнеров и облачных вычислений он также пользуется спросом, как основа для создания минимальных образов контейнеров Linux.

Минимализм в действии

BusyBox привлекателен из-за его минимализма, который так ценит сообщество. Все его команды собраны в один двоичный файл (busybox), а его руководство занимает всего 81 страницу, но охватывает почти 400 команд.

-b, --base-dir BASE_DIR base directory for home

-c, --comment COMMENT GECOS field of the new account

-d, --home-dir HOME_DIR home directory of the new account

-D, --defaults print or change the default config

-e, --expiredate EXPIRE_DATE expiration date of the new account

-f, --inactive INACTIVE password inactivity

-g, --gid GROUP name or ID of the primary group

-G, --groups GROUPS list of supplementary groups

-h, --help display this help message and exit

-k, --skel SKEL_DIR alternative skeleton dir

-K, --key KEY=VALUE override /etc/login.defs

-l, --no-log-init do not add the user to the lastlog

-m, --create-home create the user's home directory

-M, --no-create-home do not create the user's home directory

-N, --no-user-group do not create a group with the user's name

-o, --non-unique allow users with non-unique UIDs

-p, --password PASSWORD encrypted password of the new account

-r, --system create a system account

-R, --root CHROOT_DIR directory to chroot into

-s, --shell SHELL login shell of the new account

-u, --uid UID user ID of the new account

-U, --user-group create a group with the same name as a user

А вот версия той же команды для BusyBox:

-h DIR Home directory

-g GECOS GECOS field

-s SHELL Login shell

-G GRP Group

-S Create a system user

-D Don't assign a password

-H Don't create home directory

-u UID User id

-k SKEL Skeleton directory (/etc/skel)

Это различие — преимущество или ограничение? Зависит от ваших предпочтений. Вы хотите иметь 20 или 10 вариантов команд? Для многих пользователей минимализм BusyBox оптимален. В целом, это хорошая минимальная среда, которую можно использовать в качестве запасного варианта или для установки более надёжных инструментов, таких как Bash, Zsh, GNU Awk и т.д.

Инсталляция BusyBox

В Linux вы можете установить BusyBox с помощью диспетчера пакетов. Например, в

Fedora и подобных:

$ sudo dnf install busybox

На Debian и производных:

$ sudo apt install busybox

В macOS используйте MacPorts или Homebrew. В Windows используйте Chocolatey.

$ which busybox

/lib64/busybox/busybox

$ chsh --shell /lib64/busybox/sh

Полная замена всех распространённых команд на BusyBox немного сложнее, потому что большинство дистрибутивов привязаны к определённым пакетам для определённых команд. Технически возможно заменить базовый init на init BusyBox, но ваш менеджер пакетов может не позволить вам удалить содержимое пакета init, из опасения, что вы сделаете вашу систему не загружаемой.

Тестируйте BusyBox

Вам не нужно менять оболочку на BusyBox, чтобы просто затестить её. Вы можете запустить приложение из текущей оболочки:

$ busybox sh

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

sh

Usage: ls [-1AaCxdLHRFplinshrSXvctu] [-w WIDTH] [FILE].

List directory contents

-1 One column output

-a Include entries that start with .

-A Like -a, but exclude . and ..

-x List by lines

Для “полного” взаимодействия с BusyBox вы можете создавать символические ссылки busybox для каждой команды:

Читайте также: