BusyBox — это пакет программного обеспечения , который содержит несколько утилит Unix в одном исполняемом файле . Он работает в различных средах POSIX , таких как Linux , Android , [8] и FreeBSD , [9] , хотя многие из предоставляемых им инструментов предназначены для работы с интерфейсами, предоставляемыми ядром Linux . Он был специально создан для встраиваемых операционных систем с очень ограниченными ресурсами. Авторы назвали его « швейцарским армейским ножом встроенного Linux », [10] поскольку один исполняемый файл заменяет основные функции более чем 300 распространенных команд. Оно выпущено как бесплатное программное обеспечение на условиях GNU General Public License v2 после спорного решения не переходить на версию 3. [6]
Первоначально написанный Брюсом Перенсом в 1995 году и объявленный готовым для использования по назначению в 1996 году, [11] 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 года, затем его нынешним мейнтейнером стал Денис Власенко.
В сентябре 2006 года, после тяжелых дискуссий и разногласий между сопровождающим проекта Робом Лэндли и Брюсом Перенсом , [12] проект BusyBox [13] [14] решил не принимать общественную лицензию GNU версии 3 ( GPLv3 ); лицензия BusyBox была указана только как GPL-2.0 . [15]
С октября 2006 года Денис Власенко взял на себя сопровождение BusyBox от Роба Лэндли, который основал Toybox , также в результате разногласий по поводу лицензии. [13] [16]
В конце 2007 года BusyBox также приобрел известность благодаря активному преследованию нарушений условий своей лицензии (GPL) в Окружном суде США Южного округа Нью-Йорка . [17]
Первый иск в США по поводу нарушения GPL касался использования BusyBox во встроенном устройстве . Иск, [17] дело 07-CV-8205, был подан 20 сентября 2007 г. Юридическим центром свободы программного обеспечения (SFLC) от имени Андерсена и Лэндли против Monsoon Multimedia Inc. после того, как в прошивке был обнаружен код BusyBox. обновление и попытки связаться с компанией, очевидно, не увенчались успехом. Дело было урегулировано публикацией версии источника «Муссон» и выплатой Андерсену и Лэндли нераскрытой суммы денег. [18]
21 ноября 2007 г. SFLC подала два аналогичных иска от имени Андерсена и Лэндли против еще двух компаний: Xterasys (дело 07-CV-10455) и High-Gain Antennas (дело 07-CV-10456). [19] [20] Дело Xterasys было урегулировано 17 декабря за выпуск использованного исходного кода и нераскрытый платеж, [21] и дело об антеннах с высоким коэффициентом усиления 6 марта 2008 года за активное соблюдение лицензии и нераскрытый платеж. [22] 7 декабря 2007 г. против Verizon Communications было возбуждено дело по делу о распространении прошивки для маршрутизаторов Actiontec; [23] [24] Это дело было урегулировано 17 марта 2008 г. при условии соблюдения условий лицензии, назначения должностного лица для надзора за будущим соблюдением лицензий на бесплатное программное обеспечение и выплаты нераскрытой суммы. [25] Дальнейшие иски были поданы 9 июня 2008 года против Bell Microproducts (дело 08-CV-5270) и SuperMicro (дело 08-CV-5269), [26] дело Super Micro было урегулировано 23 июля 2008 года. [27] 17 октября дело BusyBox и Bell Microproducts также было урегулировано во внесудебном порядке. [28]
14 декабря 2009 года был подан новый иск, в котором были названы четырнадцать ответчиков, включая Best Buy , JVC , Samsung и других. [29] [30] [31] В феврале 2010 года компания Samsung выпустила прошивку телевизора LN52A650 под лицензией GPLv2, [32] которая позже использовалась в качестве ссылки проектом сообщества SamyGO . [33]
Примерно 3 августа 2010 года BusyBox выиграла у Westinghouse заочное решение о возмещении тройного ущерба в размере 90 000 долларов США, судебных издержек и гонораров в размере 47 865 долларов США, а также владения «предположительно большим количеством телевизоров высокой четкости» как оборудования, нарушающего авторские права, в иске Software Freedom Conservancy. против Best Buy и др., дело о нарушении прав GPL, упомянутое в абзаце выше. [34]
Никакие другие разработчики, в том числе первоначальный автор Брюс Перенс и сопровождающий Дэйв Синедж, не были представлены в этих действиях и не участвовали в урегулировании. 15 декабря 2009 года Перенс опубликовал заявление, в котором выразил свое недовольство некоторыми аспектами правовой ситуации и, в частности, заявил, что нынешние разработчики BusyBox «похоже, удалили некоторые заявления об авторских правах других разработчиков BusyBox и, похоже, изменили лицензионные заявления». [35]
BusyBox можно настроить для предоставления набора из более чем двухсот утилит. Он может предоставлять большинство утилит, указанных в Единой спецификации Unix (SUS), а также многие другие, которые пользователь ожидает увидеть в системе Linux. BusyBox использует оболочку Almquist , также известную как A Shell, ash и sh. [36] Альтернативой для индивидуальной настройки является меньшая «тихая» оболочка. Раньше были доступны «Мш» и «лэш». [37]
Поскольку это полноценная система начальной загрузки, она в дальнейшем заменит демон init и udev (или современный systemd ), используя себя как init при запуске и mdev во время горячего подключения.
На сайте BusyBox представлен полный список реализованных утилит. [38]
Типичные компьютерные программы имеют отдельный двоичный ( исполняемый ) файл для каждого приложения. BusyBox — это один двоичный файл, представляющий собой конгломерат множества приложений, доступ к каждому из которых можно получить, вызвав один двоичный файл BusyBox с разными именами (поддерживается наличием символической ссылки или жесткой ссылки для каждого отдельного имени) [39] в определенном манере с соответствующими аргументами.
BusyBox выигрывает от единого двоичного подхода, поскольку он снижает накладные расходы, связанные с форматом исполняемого файла (обычно ELF ), и позволяет совместно использовать код нескольким приложениям без необходимости использования библиотеки . Этот метод аналогичен тому, что обеспечивается командой crunchgen [40] во FreeBSD , с той разницей, что BusyBox предоставляет упрощенные версии утилит (например,лсбез возможности сортировки файлов), в то время как сгенерированная crunchgen сумма всех утилит предложит полнофункциональные версии.
Совместное использование общего кода, а также подпрограмм, написанных с учетом оптимизации размера, может привести к тому, что система BusyBox будет использовать гораздо меньше места для хранения, чем система, построенная с соответствующими полными версиями утилит, замененными BusyBox. Исследование [41] , в котором сравнивались реализации стандартных команд Unix в GNU , BusyBox, asmutils и Perl , показало, что в некоторых ситуациях BusyBox может работать быстрее, чем другие реализации, но не всегда.
В официальной документации BusyBox приведен обзор доступных команд и их параметров командной строки.
Список команд BusyBox [42]
Программы, включенные в 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-подобных задач, выполняемых в оболочке системы. [43]
BusyBox также является важным компонентом VMware ESXi и Alpine Linux , которые не являются встроенными дистрибутивами.
Он необходим для нескольких корневых приложений на Android, а также предустановлен в некоторых решениях «1 Tap Root», таких как Kingo Root .
Toybox был запущен в начале 2006 года под лицензией только GPL-2.0 бывшим сопровождающим BusyBox Робом Лэндли в результате разногласий вокруг обсуждений GPLv3/GPLv2. В конце 2011 года [44] он был повторно лицензирован под лицензией BSD-2-Clause после того, как проект был приостановлен. [45] В марте 2013 года он был повторно лицензирован под лицензией 0BSD . [46] 11 января 2012 года Тим Бёрд, сотрудник Sony , предложил создать альтернативу BusyBox, которая не будет находиться под лицензией GNU General Public License. Он предложил сделать это на основе бездействующего Toybox. [47] В январе 2012 года предложение о создании лицензированной BSD альтернативы проекту BusyBox, лицензируемому GPL, вызвало резкую критику со стороны Мэтью Гаррета за то, что он лишил группу Software Freedom Conservancy единственного соответствующего инструмента для защиты авторских прав . [48] Инициатор судебных исков, основанных на BusyBox, Роб Лэндли, ответил, что это было намеренно, поскольку он пришел к выводу, что судебные процессы не привели к ожидаемым положительным результатам, и он хотел остановить их «любым способом, который я считаю нужным» . [49] [50]
{{cite web}}
: CS1 maint: archived copy as title (link)Из журнала изменений:
Это последний выпуск BusyBox под старой двойной лицензией «GPLv2 или новее». Будущие версии (содержащие изменения после svn 16112) будут только GPLv2, без «или более поздней версии».
Поскольку BusyBox можно найти во многих встроенных системах, он оказывается в центре дебатов по
GPLv3
против DRM. [...] Реальный результат, однако, таков: BusyBox станет GPLv2 только начиная со следующего выпуска. Принято считать, что удаление «или любой более поздней версии» юридически оправдано, и что объединение другого кода, предназначенного только для GPLv2, в любом случае вызовет эту проблему.
Не придумывайте, пожалуйста, подставной аргумент. Я считаю, что лицензирование BusyBox по лицензии GPLv3 бесполезно, ненужно, слишком сложно и запутанно, и, кроме того, у него есть реальные недостатки. 1) Бесполезно: мы никогда не откажемся от GPLv2.
Публичных порок и казней, подобных недавнему иску SFLC, можно было бы избежать, если бы действительно существовали действующие стандарты и процедуры соответствия GPL и другим лицензиям на свободный и открытый исходный код.
Оболочка «ash» добавляет около 60 КБ в конфигурацию по умолчанию и является наиболее полной и наиболее корректной оболочкой, входящей в состав busybox. Эта оболочка на самом деле является производной оболочки
Debian 'dash'
(автор Герберт Сюй), которая была создана путем портирования оболочки 'ash' (написанной Кеннетом Алмквистом) из NetBSD.
Настоящая проблема здесь в том, что зависимость [Software Freedom Conservancy] от Busybox означает, что они могут преследовать только нарушителей, которые используют этот код Busybox. Ни один крупный обладатель авторских прав на ядро до сих пор не предложил разрешить SFC защищать свои авторские права, в результате чего принудительные действия затормозятся, поскольку поставщики перейдут на замену Busybox.
>Как бывший сопровождающий busybox, который НАЧАЛ эти судебные процессы и теперь ОГРОМНО СОЖАЛЕЕТ о том, что когда-либо сделал это, я думаю, что имею право прекратить судебные процессы любым способом, который считаю нужным. Они ни разу не привели к добавлению ни одной строчки кода в репозиторий busybox. Они привели к тому, что несколько компаний полностью отказались от разработки Linux и перешли на операционные системы, отличные от Linux, для своих встраиваемых продуктов, и они во многом являются причиной политики Android «Нет лицензии GPL в пользовательском пространстве».