BusyBox в Linux: что это за проект и зачем он нужен?

Сисадмины, а также пользователи 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 команд.
В качестве примера, вот вывод shadow версии useradd —help:
-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.
Вы можете установить BusyBox в качестве оболочки с помощью команды chsh —shell. Мы храним BusyBox в /lib64, но его расположение зависит от того, где он установлен в вашем дистрибутиве.
$ which busybox
/lib64/busybox/busybox
$ chsh —shell /lib64/busybox/sh
Полная замена всех распространённых команд на BusyBox немного сложнее, потому что большинство дистрибутивов привязаны к определённым пакетам для определённых команд. Технически возможно заменить базовый init на init BusyBox, но ваш менеджер пакетов может не позволить вам удалить содержимое пакета init, из опасения, что вы сделаете вашу систему не загружаемой.
Тестируйте BusyBox
Вам не нужно менять оболочку на BusyBox, чтобы просто затестить её. Вы можете запустить приложение из текущей оболочки:
$ busybox sh
В вашей системе всё ещё будут установлены версии команд, которые не относятся к BusyBox. Поэтому, чтобы испытать новые инструменты, вы должны вводить команды в качестве аргументов для busybox исполняемого файла:
~ $ busybox echo $0
sh
~ $ busybox ls —help
BusyBox vX.YY.Z (2021-08-25 07:31:48 NZST) multi-call binary.
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 для каждой команды:
$ mkdir bbx
$ for i in $(bbx —list); do \
ln -s /path/to/busybox bbx/$i \
done
Итог
BusyBox можно использовать, в качестве:
- облегчённой среды для спасённого вами древнего компьютера,
- пользовательского пространства для встроенного устройства,
- теста новой системы инициализации или просто из любопытства.
Уже пробовали BusyBox? Поделитесь впечатлениями в комментах.
BusyBox — Для чего нужно это приложение?

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
Команды для работы с файлами
pwd – показать текущий каталог ( каталог в котором находится пользователь)
ls – вывести список файлов и каталогов
ls -al – форматированный список со скрытыми каталогами и файлами
cd /etc – сменить директорию на /etc
cd – сменить на домашний каталог
mkdir mydir – создать каталог mydir
rm file.txt – удалить file.txt
rm -r mydir – удалить рекурсивно каталог mydir
rm -f file.txt – удалить форсированно file.txt
rm -rf mydir – удалить форсированно каталог с подкаталогами mydir
cp file1 file2.txt – скопировать file1 в file2.txt
cp -r dir mydir – скопировать dir в mydir; создаст каталог mydir, если он не существует
mv file2.txt file2 – переименовать или переместить file2.txt в file2.
Если file2 существующий каталог — перемещает file2.txt в каталог file2
ln -s file filelink – создать символическую ссылку filelink к файлу file
touch myfile – создать файл myfile
cat > file.txt – направить стандартный ввод в файл file.txt
cat file.txt — вывести содержимое файла file.txt
more file.txt – вывести содержимое файла file.txt
head file.txt – вывести первые 10 строк файла file.txt на консоль
tail file.txt – вывести последние 10 строк файла file.txt на консоль
tail -f file.txt – вывести содержимое файла file.txt по мере его роста, начинает с последних 10 строк
> — Перенаправление с одного места в другое, например:
Выведем последние 10строк с файла test и вставим их в файл oktest, для этого выполним такую команду:
tail test > oktest
Если файл oktest не существовал, то он создастся.
Управление процессами в 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 – выход, то есть разлогинивание.
Это чтобы по интернету не шариться в поисках.
что такое busybox? и как им пользоваться.
здравствуйте.просветите пожалуйста,что такое BusyBox?я понял что это набор основных утилит linux вроде как,а как им пользоваться,как установить или что с ним вообще можно делать?заранее извиняюсь,если че-то не так написал.
dimitry80
29.10.10 07:27:45 MSD
busybox ps
busybox rm -rf /
и так далее.
Либо ln -s `which busybox` ps, те оно определит, какую утилиту запускать по cmdline.
Я так предположу, что man apt-get.
anon_666 ★
( 29.10.10 07:42:08 MSD )
Ответ на: комментарий от anon_666 29.10.10 07:42:08 MSD
ну я вот скачал файл busybox-1.17.3.tar.bz2 с сайта busybox.net,открыл его посмотрел..и что с ним делать надо?
dimitry80
( 29.10.10 07:54:30 MSD ) автор топика
Ответ на: комментарий от dimitry80 29.10.10 07:54:30 MSD
как-то его видимо установить надо что ли?
dimitry80
( 29.10.10 07:55:20 MSD ) автор топика
Ответ на: комментарий от dimitry80 29.10.10 07:54:30 MSD

darth-nerd ★
( 29.10.10 07:57:13 MSD )
Ответ на: комментарий от darth-nerd 29.10.10 07:57:13 MSD
Это ты зря, тред теперь затянется..
anon_666 ★
( 29.10.10 07:58:40 MSD )
Ответ на: комментарий от dimitry80 29.10.10 07:54:30 MSD
Какая у вас система(дистрибутив)?
anon_666 ★
( 29.10.10 07:59:33 MSD )
Это для очень маленьких инсталляций, где каждый килобайт на вес золота. Также часто используется в initrd. Для десктопа/полноценного сервера не нужно. Если вы не понимаете, зачем оно надо, вам оно не надо.
Legioner ★★★★★
( 29.10.10 08:00:21 MSD )
Ответ на: комментарий от dimitry80 29.10.10 07:54:30 MSD

>ну я вот скачал файл busybox-1.17.3.tar.bz2 с сайта busybox.net,открыл его посмотрел..и что с ним делать надо?
вот смотри. распакуй его. там есть такой файлик README. в переводе на наш язык «ЧИТАЙМЕНЯ». В нем есть все инструкции. А большими буквами он написан для того, чтобы такие как ты его не пропускали, но походу там откуда вы приходите ни глаза, ни внимательность не выдают.
зы там есть еще файлик INSTALL
gear ★★★
( 29.10.10 10:29:02 MSD )
Ответ на: комментарий от gear 29.10.10 10:29:02 MSD
после выполнения команд make menuconfig (создал,настроил что надо) и команды make мне в этой же директории откуда я запускал эти команды создался файлик busybox. я понимаю что могу его использовать для выполнения разных команд в формате,например: ./busybox uname -a и напишется мне версия ядра..а как вообще его этот файлик надо в дальнейшем использовать правильно? он по сути может заменить содержимое папки bin? (ну если ссылаться на него всегда?)
dimitry80
( 29.10.10 11:35:15 MSD ) автор топика
Ответ на: комментарий от dimitry80 29.10.10 11:35:15 MSD
Введите
busybox —help
Оно покажет, какие команды(утилиты) доступны.
anon_666 ★
( 29.10.10 11:47:40 MSD )
Ответ на: комментарий от dimitry80 29.10.10 11:35:15 MSD
>по сути может заменить содержимое папки bin?
Встроенные в busybox утилиты малофункциональны по сравнению с coreutils, так что не совсем.
anon_666 ★
( 29.10.10 11:50:13 MSD )
Ответ на: комментарий от anon_666 29.10.10 11:50:13 MSD

не соглашусь насчет «малофункциональны», они скорее минимально-необходимо функциональны )
они предельно упрощены и не включают многие опции, в отличие от их полнофункциональных аналогов из coreutils, util-linux и других пакетов, но все же типичные ключи использования там есть , для типичного применения их вполне хватает.
Sylvia ★★★★★
( 29.10.10 11:55:11 MSD )
Ответ на: комментарий от dimitry80 29.10.10 11:35:15 MSD

>может заменить содержимое папки bin
частично, хотя в типичном дистрибутиве в /bin можно найти гораздо больше чем предоставляет busybox
cфера применения — в системах где мало памяти и дискового пространства (роутеры, embedded) , второй вариант — если вы в системе что-то поломали, то для восстановления можно использовать альтернативный вариант в виде busybox , особенно если он слинкован статически.
Sylvia ★★★★★
( 29.10.10 11:58:20 MSD )
Ответ на: комментарий от Sylvia 29.10.10 11:55:11 MSD

Интересно бывают десктопные дистры с busibox на борту? и уж тогда и uGlibc (правильно назвал?) Может для большинства пользователей уже busibox достаточно?
baaba ★★★
( 29.10.10 11:59:52 MSD )
Ответ на: комментарий от Sylvia 29.10.10 11:55:11 MSD
Даже в слаке init-скрипты написаны с использованием башизмов,
те, в busybox они не отработают.
Ну и тд.
anon_666 ★
( 29.10.10 12:04:08 MSD )
Ответ на: комментарий от baaba 29.10.10 11:59:52 MSD

uclibc не полностью способна заменить glibc для всех приложений,
интересно бы было узнать. а удавалось ли кому собрать полнофунциональный десктоп на uClibc, с кде, гномом и прочими делами ? в генте есть профиль для uClibc , для желающих экспериментировать.
дистры бывают, особенно минималистичные типа tinycore, «большие» дистрибутивы тоже могли бы использовать, но если дистр при установке занимает 3 Gb и около 200-300 мб в памяти после загрузке, то нет смысла экономить на мелочах типа coreutils или util-linux, там уже ставятся полные версии.
Sylvia ★★★★★
( 29.10.10 12:05:19 MSD )
Ответ на: комментарий от anon_666 29.10.10 12:04:08 MSD

башизмы это отдельная тема вообще )
кстати slackware rescue (12-13.0) базировалась на busybox , что доставляло определенные неудобства, например с tar, который в busybox не совсем корректно сохраняет права доступа
BusyBox — BusyBox
BusyBox — это программный пакет, который предоставляет несколько утилит Unix в одном исполняемом файле . Он работает в различных средах POSIX, таких как Linux, Android и FreeBSD, хотя многие из предоставляемых им инструментов разработаны для работы с интерфейсами, предоставляемыми ядром Linux. Он был специально создан для встроенных операционных систем с очень ограниченными ресурсами. Авторы окрестили его «швейцарским армейским ножом из встроенного Linux », поскольку единственный исполняемый файл заменяет основные функции более 300 общих команд. Оно выпущено как бесплатное программное обеспечение в соответствии с условиями Стандартной общественной лицензии GNU, версия 2.
- 1 История
- 1.1 Происхождение
- 1.2 GPLv2 Споры по / GPLv3
- 1.3 Судебные процессы по GPL
- 2.1 Одинарный двоичный код
- 2.2 Команды
История
Origins
Первоначально написано Брюсом Перенсом в 1995 году и объявлено завершенным для своего предполагаемого использования в 1996 году BusyBox изначально стремился поместить полную загрузочную систему на единственную гибкую дискету, которая служила бы как аварийным диском, так и установщиком для дистрибутива Debian. С тех пор он был расширен, чтобы стать стандартным де-факто ядром набором инструментов пользовательского пространства для встроенных устройств Linux и установщиков дистрибутивов Linux. Поскольку для каждого исполняемого файла Linux требуется несколько килобайт служебных данных, использование программой BusyBox, объединяющей более двухсот программ, часто позволяет сэкономить значительное дисковое пространство и системную память.
BusyBox поддерживался Энрике Занарди и был ориентирован на потребности системы установки Debian boot-floppies до начала 1998 года, когда Дэйв Синедж взял его на себя для проекта Linux Router Project (LRP). Cinege внесла несколько дополнений, создала модульную среду сборки и сместила фокус BusyBox на общие высокоуровневые встроенные системы. Поскольку в 1999 году разработка LRP замедлилась, Эрик Андерсен, тогда из Lineo, Inc., взял на себя управление проектом и стал официальным сопровождающим с декабря 1999 года по март 2006 года. В это время рынок встроенных систем Linux стремительно развивался., и BusyBox значительно повзрослел, расширив как свою пользовательскую базу, так и функциональность. Роб Лэндли был сопровождающим с 2005 года до конца 2006 года, затем Денис Власенко занял его место в качестве текущего сопровождающего.
Споры относительно GPLv2 / GPLv3
В сентябре 2006 года, после тяжелых дискуссий и разногласий между сопровождающим проекта Робом Лэндли и Брюсом Перенсом, проект BusyBox решил не принимать общественную лицензию GNU. Версия 3 (GPLv3 ); было уточнено, что лицензия BusyBox относится только к GPL версии 2 (GPLv2 ).
С октября 2006 года Денис Власенко взял на себя поддержку BusyBox от Роба Лэндли, который основал Toybox, также в результате разногласий по поводу лицензии.
Судебные процессы по GPL
В конце 2007 года BusyBox также получил известность благодаря активному преследованию за нарушение условий лицензии (GPL) в Окружном суде Соединенных Штатов по Южному округу Нью-Йорка.
Первым иском в США по поводу нарушения GPL было заявлено об использовании BusyBox во встроенном устройстве. Иск, дело 07-CV-8205 был подан 20 сентября 2007 г. Юридическим центром свободы программного обеспечения (SFLC) от имени Андерсена и Лэндли против Monsoon Multimedia Inc., после Код BusyBox был обнаружен при обновлении прошивки, и попытки связаться с компанией, очевидно, не увенчались успехом. Дело было урегулировано путем опубликования версии источника для сезонных дождей и выплаты нераскрытой суммы денег Андерсену и Лэндли.
21 ноября 2007 года SFLC подало два аналогичных иска от имени Андерсена и Лэндли. против еще двух компаний (дело 07-CV-10455) и (дело 07-CV-10456). Дело Xterasys было урегулировано 17 декабря в связи с выпуском использованного исходного кода и нераскрытым платежом, а дело с High-Gain Antennas — 6 марта 2008 г. в связи с действующим лицензионным соответствием и нераскрытым платежом. 7 декабря 2007 г. было возбуждено дело против Verizon Communications за распространение прошивки для маршрутизаторов Actiontec; это дело было урегулировано 17 марта 2008 г. при условии соблюдения лицензионных требований, назначения сотрудника для надзора за соблюдением в будущем лицензий свободных программ и выплаты нераскрытой суммы. Дальнейшие иски были поданы 9 июня 2008 г. против (дело 08-CV-5270) и SuperMicro (дело 08-CV-5269), дело Super Micro было урегулировано 23 июля 2008 г. BusyBox и Bell 17 октября Microproducts также урегулировала спор во внесудебном порядке.
14 декабря 2009 г. был подан новый иск, в котором были указаны четырнадцать ответчиков, включая Best Buy, JVC, Samsung и другие. В феврале 2010 года Samsung выпустил свою прошивку для телевизора LN52A650 под лицензией GPLv2, которая позже использовалась в качестве справочной в проекте сообщества.
Примерно 3 августа 2010 года BusyBox выиграл у Westinghouse решение по умолчанию. о тройном возмещении ущерба в размере 90 000 долларов и судебных издержках и гонорарах в размере 47 865 долларов, а также о владении «предположительно большим количеством телевизоров с высоким разрешением» в качестве оборудования, нарушающего авторские права в судебном процессе Software Freedom Conservancy v. Best Buy и др., Дело о нарушении GPL, упомянутое в параграфе выше.
Никакие другие разработчики, включая первоначального автора Брюса Перенса и сопровождающего Дэйва Синежа, не были представлены в этих действиях или участвовали в урегулировании споров. 15 декабря 2009 г. Перенс опубликовал заявление, в котором выразил свое недовольство некоторыми аспектами правовой ситуации и, в частности, утверждал, что нынешние разработчики BusyBox «по-видимому, удалили некоторые заявления об авторских правах других разработчиков Busybox и, похоже, изменили условия лицензии «.
Возможности
BusyBox можно настроить для предоставления подмножества из более чем двухсот утилит. Он может предоставить большинство утилит, указанных в Single Unix Specification (SUS), а также многие другие, которые пользователь ожидает увидеть в системе Linux. BusyBox использует оболочку Almquist, также известную как A Shell, ash и sh. Альтернативой для настройки является меньшая «тишина» оболочки. Раньше были доступны «Msh» и «lash».
Поскольку это полная система начальной загрузки, она в дальнейшем заменит демон init и udev (или last-day systemd ), который будет вызываться как init при запуске и mdev при горячем подключении.
Веб-сайт BusyBox предоставляет полный список реализованных утилит.
Одинарный двоичный
Типичные компьютерные программы имеют отдельный двоичный файл (исполняемый файл ) для каждого приложения. BusyBox — это отдельный двоичный файл, который представляет собой конгломерат многих приложений, к каждому из которых можно получить доступ, вызвав один двоичный файл BusyBox с различными именами (поддерживается наличием символической ссылки или жесткой ссылки для каждого другого имени) определенным образом с соответствующими аргументами.
BusyBox выигрывает от единого двоичного подхода, так как он снижает накладные расходы, связанные с форматом исполняемого файла (обычно ELF ), и позволяет совместно использовать код между несколькими приложениями без необходимости библиотека. Этот метод аналогичен тому, что предоставляется командой crunchgen в FreeBSD, разница в том, что BusyBox предоставляет упрощенные версии утилит (например, команду ls без возможности сортировки файлов), а сгенерированная crunchgen сумма всех утилит предложит полностью функциональные версии.
Совместное использование общего кода вместе с подпрограммами, написанными с учетом оптимизации размера, может заставить систему BusyBox использовать гораздо меньше места для хранения, чем система, построенная с соответствующими полными версиями утилит, замененными BusyBox. Исследование, в котором сравнивались реализации стандартных команд Unix GNU, BusyBox, asmutils и Perl, показало, что в некоторых ситуациях BusyBox может работать быстрее, чем другие реализации, но не всегда.
Команды
В официальной документации BusyBox приводится обзор доступных команд и их параметров командной строки.
Список команд BusyBox
Примеры
Программы, включенные в BusyBox, можно запускать просто путем добавления их имени в качестве аргумента в исполняемый файл BusyBox:
/ bin / busybox ls
Чаще, требуемые имена команд связаны (с использованием жестких или символических ссылок) с исполняемым файлом BusyBox; BusyBox читает argv [0], чтобы найти имя, по которому он вызван, и запускает соответствующую команду, например, просто
после того, как / bin / ls связан с / bin / busybox. Это работает, потому что первым аргументом, передаваемым программе, является имя, используемое для вызова программы, в этом случае аргумент будет «/ bin / ls». Busybox увидит, что его «имя» — «ls», и будет действовать как программа «ls».
Устройства и прием
BusyBox используется несколькими операционными системами, работающими на встроенных системах, и является важным компонентом таких дистрибутивов, как OpenWrt, OpenEmbedded (включая Yocto Project ) и Buildroot. Sharp Zaurus широко использует BusyBox для обычных Unix-подобных задач, выполняемых в системной оболочке.
BusyBox также является важным компонентом VMware ESXi.
Он необходим для нескольких корневых приложений на Android, а также предустановлен с некоторыми решениями «1 Tap Root», такими как Kingo Root.
Споры по поводу Toybox
Toybox были начаты в начале 2006 года в рамках Стандартная общественная лицензия GNU, выданная бывшим сопровождающим Busybox Робом Лэндли в результате разногласий вокруг обсуждений GPLv3 / GPLv2. В конце 2011 года он был повторно лицензирован под лицензией BSD после того, как проект был приостановлен. 11 января 2012 года Тим Берд, сотрудник Sony, предложил создать альтернативу BusyBox, которая не будет подпадать под Стандартную общественную лицензию GNU. Он предположил, что в основе его лежит бездействующий ящик с игрушками. В январе 2012 года предложение о создании лицензированной BSD альтернативы проекту BusyBox с лицензией GPL вызвало резкую критику со стороны Мэтью Гарретта за то, что он убрал единственный подходящий инструмент для защиты авторских прав группы Software Freedom Conservancy. Начальник судебных процессов на основе BusyBox, Роб Лэндли, ответил, что это было намеренно, поскольку он пришел к выводу, что судебные процессы не привели к ожидаемым положительным результатам, и он хотел остановить их «любым способом, который я считаю нужным».
См. Также
- Портал бесплатного программного обеспечения с открытым исходным кодом
- GNU Core Utilities
- util-linux, iproute2, ethtool
- Linux во встроенных системах
- Linux для мобильных устройств
Ссылки
Дополнительная литература
- Перенс, Брюс (1 ноября 2000 г.). «Создание миниатюрных систем Linux с помощью BusyBox — Часть I». Журнал Linux. Архивировано из оригинала 22 ноября 2015 г. Получено 22 ноября 2015 г.
- Джонс, М. Тим (15 августа 2006 г.). «Busybox упрощает встраиваемые системы Linux». Разработчик работает. IBM.
Внешние ссылки
В Wikibook Learning the vi Editor есть страница по теме: BusyBox vi