BusyBox

редактировать
Коллекция инструментов Unix в одном исполняемом файле
BusyBox
BusyBoxLogo.png
Busybox DG834Gt.PNG
Оригинальный автор (ы) Брюс Перенс
Разработчик (и) Эрик Андерсен, Роб Лэндли, Денис Власенко и другие
Первый выпуск4 ноября 1999 г.; 20 лет назад (1999-11-04)
Стабильный выпуск 1.31.1 (25 октября 2019 года; 11 месяцев назад (2019-10-25))
Репозиторий Изменить это в Викиданных
Написано вC
Операционная система Unix-подобная
Размер 2,1 МБ (сжатый "tar.bz2")
Тип
Лицензия GPLv2
Веб-сайтwww.busybox.net

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

Содержание

  • 1 История
    • 1.1 Происхождение
    • 1.2 GPLv2 Споры по / GPLv3
    • 1.3 Судебные процессы по GPL
  • 2 Возможности
    • 2.1 Одинарный двоичный код
    • 2.2 Команды
  • 3 Примеры
  • 4 Устройства и прием
  • 5 Споры по поводу Toybox
  • 6 См. Также
  • 7 Ссылки
  • 8 Дополнительная литература
  • 9 Внешние ссылки

История

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 / 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, Роб Лэндли, ответил, что это было намеренно, поскольку он пришел к выводу, что судебные процессы не привели к ожидаемым положительным результатам, и он хотел остановить их «любым способом, который я считаю нужным».

См. Также

  • Портал бесплатного программного обеспечения с открытым исходным кодом

Ссылки

Дополнительная литература

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

В Wikibook Learning the vi Editor есть страница по теме: BusyBox vi
Последняя правка сделана 2021-05-13 06:54:38
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте