BusyBox - BusyBox

BusyBox
BusyBoxLogo.png
Busybox DG834Gt.PNG
Автор (ы) оригинала Брюс Перенс
Разработчики) Эрик Андерсен, Роб Лэндли, Денис Власенко и другие
Первый выпуск 4 ноября 1999 г . ; 21 год назад ( 1999-11-04 )
Стабильный выпуск 1.33.1 (3 мая 2021 г . ; 4 месяца назад ) [±] ( 2021-05-03 )
Репозиторий
Написано в C
Операционная система Unix-подобный
Размер 2,1 МБ (сжатый tar.bz2)
Тип
Лицензия Начиная с 1.3.0: только GPL-2.0.
До 1.2.2.1: GPL-2.0 или новее.
Веб-сайт www .busybox .net

BusyBox - это программный пакет, который предоставляет несколько утилит Unix в одном исполняемом файле . Он работает в различных средах POSIX, таких как Linux , Android и FreeBSD , хотя многие из предоставляемых им инструментов предназначены для работы с интерфейсами, предоставляемыми ядром Linux. Он был специально создан для встроенных операционных систем с очень ограниченными ресурсами. Авторы назвали это « швейцарский армейский нож от встраиваемых Linux », как единый исполняемый Заменяет основные функции более 300 общих команд. Он выпущен как бесплатное программное обеспечение в соответствии с условиямиСтандартная общественная лицензия GNU , версия 2.

История

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

Первоначально написанный Брюсом Перенсом в 1995 году и объявленный готовым к использованию по назначению в 1996 году, BusyBox изначально стремился поместить полную загрузочную систему на одну дискету , которая служила бы как аварийным диском, так и установщиком для дистрибутива Debian . С тех пор он был расширен, чтобы стать де-факто стандартным набором основных инструментов пользовательского пространства для встроенных устройств Linux и установщиков дистрибутивов Linux. Поскольку для каждого исполняемого файла Linux требуется несколько килобайт служебных данных, использование программой BusyBox, объединяющей более двухсот программ, часто позволяет сэкономить значительное дисковое пространство и системную память.

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

Споры о GPLv2 / GPLv3

В сентябре 2006 года, после тяжелых дискуссий и разногласий между сопровождающим проекта Робом Лэндли и Брюсом Перенсом , проект BusyBox принял решение не принимать версию 3 публичной лицензии GNU ( GPLv3 ); было уточнено, что лицензия BusyBox предназначена только для GPL-2.0 .

С октября 2006 года Денис Власенко взял на себя поддержку BusyBox у Роба Лэндли, который основал Toybox , также в результате разногласий по поводу лицензии.

Иски по GPL

В конце 2007 года BusyBox также получил известность благодаря активному преследованию за нарушения условий его лицензии (GPL) в Окружном суде Соединенных Штатов по Южному округу Нью-Йорка .

То, что было объявлено первым судебным процессом в США по поводу нарушения GPL, касалось использования BusyBox во встроенном устройстве. Иск, дело 07-CV-8205, был подан 20 сентября 2007 года Центром права свободы программного обеспечения (SFLC) от имени Андерсена и Лэндли против Monsoon Multimedia Inc. после того, как код BusyBox был обнаружен при обновлении прошивки и попытался связаться с компания явно потерпела крах. Дело было урегулировано выпуском версии Monsoon источника и выплатой нераскрытой суммы денег Андерсену и Лэндли.

21 ноября 2007 года SFLC подала два аналогичных иска от имени Андерсена и Лэндли против еще двух компаний, Xterasys (дело 07-CV-10455) и High-Gain Antennas (дело 07-CV-10456). Дело Xterasys было урегулировано 17 декабря в связи с выпуском использованного исходного кода и нераскрытым платежом, а дело Xterasys - 6 марта 2008 г. в связи с действующим лицензионным соответствием и нераскрытым платежом. 7 декабря 2007 г. против Verizon Communications было возбуждено дело за распространение прошивки для маршрутизаторов Actiontec; это дело было урегулировано 17 марта 2008 г. при условии соблюдения лицензионных требований, назначения сотрудника для надзора за соблюдением в будущем лицензий свободных программ и выплаты нераскрытой суммы. Дальнейшие иски были поданы 9 июня 2008 г. против Bell Microproducts (дело 08-CV-5270) и SuperMicro (дело 08-CV-5269), дело Super Micro было урегулировано 23 июля 2008 г. BusyBox и Bell Microproducts также урегулировали свои дела. суда 17 октября.

14 декабря 2009 года был подан новый иск, в котором были указаны четырнадцать ответчиков, в том числе Best Buy , JVC , Samsung и другие. В феврале 2010 года компания Samsung выпустила прошивку для телевизора LN52A650 под лицензией GPLv2, которая позже использовалась в качестве ссылки в проекте сообщества SamyGO .

Примерно 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. Альтернативой для настройки является меньшая по размеру оболочка «тишина». Раньше были доступны «мш» и «плеть».

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

На сайте BusyBox представлен полный список реализованных утилит.

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

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

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

Совместное использование общего кода вместе с подпрограммами, написанными с учетом оптимизации размера, может заставить систему BusyBox использовать гораздо меньше места для хранения, чем система, построенная с соответствующими полными версиями утилит, замененными BusyBox. Исследование, в котором сравнивались реализации стандартных команд Unix в GNU , BusyBox, asmutils и Perl, показало, что в некоторых ситуациях BusyBox может работать быстрее, чем другие реализации, но не всегда.

Команды

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

Список команд BusyBox

  • пепел
  • awk
  • cat - выводит содержимое одного или нескольких файлов на стандартный вывод.
  • chmod - изменить режимы файлов
  • cp - Копировать
  • date - Отображение системной даты / времени
  • dd - копировать файл с конвертированием и форматированием
  • df - Распечатать статистику использования файловой системы
  • dmesg
  • echo - отобразить указанную строку текста.
  • egrep
  • fgrep
  • Getty
  • grep - поиск ШАБЛОНА в каждом ФАЙЛЕ или стандартном вводе.
  • gunzip - Расширение сжатого файла.
  • gzip - сжатие файлов.
  • httpd - демон HTTP-сервера
  • в этом
  • kill - послать сигнал процессу.
  • ln - создать ссылку с именем LINK_NAME или DIRECTORY на указанную ЦЕЛЬ.
  • логин - начать новый сеанс в системе
  • ls - Список файлов или папок
  • mdev - аналог udev
  • mkdir - Создать папку
  • подробнее - просматривать ФАЙЛ или стандартный ввод по одному экрану за раз
  • mount - монтировать файловые системы
  • mv - переместить файл
  • NC - сетевой швейцарский армейский нож.
  • netstat - Отображение сетевой информации.
  • нтпк
  • ntpsync
  • NVRAM
  • pidof - Список PID всех процессов с именами, соответствующими ИМЯ
  • ping - Отправить пакеты ICMP ECHO_REQUEST на сетевые узлы
  • ps - Отчет о состоянии процесса
  • pwd - Распечатать рабочий каталог
  • реальный путь
  • rm - Удалить файл
  • rmdir - Удалить каталог
  • rpm2cpio
  • rstats - Авторские права BusyBox
  • rtcwake
  • уровень выполнения
  • запчастей
  • Runv
  • Runvdir
  • rx
  • сценарий
  • sed - редактор текстового потока
  • setkeycodes
  • setlogcons
  • SetSid
  • Setuidgid
  • ш
  • sha1sum - вычисляет и проверяет дайджест сообщения SHA-1
  • sha256sum - вычисляет и проверяет дайджест сообщения SHA-512
  • sleep - Приостановить выполнение программы на указанное время
  • старт-стоп-демон
  • стат
  • струны
  • stty - Изменить и распечатать настройки линии терминала
  • su - выполнять команды с привилегиями другой учетной записи пользователя
  • сулогин
  • sum - Контрольная сумма и количество блоков в файле
  • св
  • svlogd
  • обмен
  • обменять
  • переключить корень
  • sync - записывает все блоки буферизованной файловой системы на диск
  • sysctl
  • syslogd
  • tac - объединить и распечатать файлы в обратном порядке строк
  • tail - вывод последнего файла
  • деготь
  • набор задач
  • tcpsvd
  • tee - отправить вывод в несколько файлов
  • телнет
  • telnetd
  • тестовое задание
  • tftp
  • tftpd
  • время
  • timeout - запустить команду с ограничением по времени
  • Топ
  • touch - обновить дату последнего изменения для данного ФАЙЛА [ов]
  • tr - переводить или удалять символы
  • трассировка
  • правда
  • tty
  • размер
  • udhcpc - Маленький DHCP-клиент
  • udhcpd
  • udpsvd
  • umount - размонтировать файловые системы
  • uname - Отображение системной информации
  • распаковать
  • не раскрывать
  • уникальный
  • unix2dos
  • Unlzma
  • unlzop
  • распаковать
  • время безотказной работы - Сообщите, как долго работает система.
  • usleep - Пауза на N [микросекунд]
  • vconfig - программа настройки VLAN (802.1q)
  • vi - (визуально) Редактировать ФАЙЛ
  • vlock - программа блокировки виртуальной консоли
  • volname - Возвращает имя тома
  • смотреть - Периодически запускать программу
  • watchdog - Программный демон сторожевого пса
  • wc - количество слов, строк и байтов или символов
  • wget
  • which - показывает полный путь команд (оболочки)
  • who - Показать, кто находится в системе
  • whoami - Распечатать эффективный идентификатор пользователя
  • xargs - создает списки аргументов и вызывает утилиту
  • да - печатать строку повторно
  • zcat - Распаковать в стандартный вывод
  • zcip

Примеры

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

/bin/busybox ls

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

/bin/ls

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

Техника и ресепшн

BusyBox используется несколькими операционными системами, работающими во встроенных системах, и является важным компонентом таких дистрибутивов, как OpenWrt , OpenEmbedded (включая Yocto Project ) и Buildroot . Sharp Zaurus использует BusyBox широко для обычных Unix-подобных задач , выполняемых на оболочке системы.

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

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

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

Toybox был запущен в начале 2006 года под лицензией только GPL-2.0 бывшим разработчиком BusyBox Робом Лэндли в результате разногласий вокруг обсуждений GPLv3 / GPLv2. В конце 2011 года он был перелицензирован под лицензией BSD-2-Clause после того, как проект перестал работать. В марте 2013 года он был повторно перелицензирован под лицензией 0BSD . 11 января 2012 года Тим Берд, сотрудник Sony , предложил создать альтернативу BusyBox, которая не будет подпадать под Стандартную общественную лицензию GNU. Он предположил, что в основе его лежит бездействующий ящик с игрушками. В январе 2012 года предложение о создании лицензированной BSD альтернативы проекту BusyBox с лицензией GPL вызвало резкую критику со стороны Мэтью Гарретта за то, что он отнял у группы Software Freedom Conservancy единственный подходящий инструмент для защиты авторских прав . Начальник судебных процессов на основе BusyBox, Роб Лэндли, ответил, что это было намеренно, поскольку он пришел к выводу, что судебные процессы не привели к ожидаемым положительным результатам, и он хотел остановить их «любым способом, который я считаю нужным» .

Смотрите также

использованная литература

дальнейшее чтение

внешние ссылки