Введение
BusyBox — это набор программного обеспечения, предоставляющий множество утилит Unix в одном исполняемом файле. Он работает в различных средах POSIX, таких как Linux, Android и FreeBSD, хотя многие из предоставляемых инструментов разработаны для работы с интерфейсами, предоставляемыми ядром Linux. BusyBox был специально создан для встраиваемых операционных систем с крайне ограниченными ресурсами. Авторы назвали его «Швейцарским армейским ножом встраиваемого Linux», поскольку один исполняемый файл заменяет базовые функции более 300 распространенных команд. Он распространяется как свободное программное обеспечение на условиях GNU General Public License v2, после спорного решения не переходить на версию 3. Изначально BusyBox был нацелен на размещение полной загрузочной системы на одной дискете, которая служила бы как аварийным диском, так и установщиком дистрибутива Debian. С тех пор он был расширен и стал де-факто стандартным базовым набором инструментов для встраиваемых устройств Linux и установщиков дистрибутивов Linux. Поскольку каждый исполняемый файл Linux требует несколько килобайт служебных данных, объединение более двухсот программ в BusyBox часто позволяет существенно сэкономить дисковое пространство и системную память. До начала 1998 года BusyBox поддерживался Энрике Занарди и был ориентирован на потребности системы установки загрузочных дисков Debian, после чего Дэйв Синеге возглавил проект Linux Router Project (LRP). Синеге внес ряд дополнений, создал модульную среду сборки и переориентировал BusyBox на общие встраиваемые системы высокого уровня. Когда в 1999 году разработка LRP замедлилась, Эрик Андерсен из Lineo, Inc. взял на себя проект и стал официальным сопровождающим с декабря 1999 года по март 2006 года. За это время рынок встраиваемых Linux стремительно рос, и BusyBox значительно развился, расширив как свою пользовательскую базу, так и функциональность. Роб Лэндли был сопровождающим в 2005 году до конца 2006 года, после чего Денис Власенко занял должность нынешнего сопровождающего.
BusyBox is a software suite that provides several Unix utilities in a single executable file. It runs in a variety of POSIX environments such as Linux, Android, and FreeBSD, although many of the tools it provides are designed to work with interfaces provided by the Linux kernel. It was specifically created for embedded operating systems with very limited resources. The authors dubbed it "The Swiss Army knife of Embedded Linux", as the single executable replaces basic functions of more than 300 common commands. It is released as free software under the terms of the GNU General Public License v2, after controversially deciding not to move to version 3. BusyBox initially aimed to put a complete bootable system on a single floppy disk that would serve both as a rescue disk and as an installer for the Debian distribution. Since that time, it has been extended to become the de facto standard core user space toolset for embedded Linux devices and Linux distribution installers. Since each Linux executable requires several kilobytes of overhead, having the BusyBox program combine over two hundred programs together often saves substantial disk space and system memory. BusyBox was maintained by Enrique Zanardi and focused on the needs of the Debian boot floppies installer system until early 1998, when Dave Cinege took it over for the Linux Router Project (LRP). Cinege made several additions, created a modularized build environment, and shifted BusyBox's focus into general high level embedded systems. As LRP development slowed down in 1999, Erik Andersen, then of Lineo, Inc., took over the project and became the official maintainer between December 1999 and March 2006. During this time the Linux embedded marketplace exploded in growth, and BusyBox matured greatly, expanding both its user base and functionality. Rob Landley became the maintainer in 2005 until late 2006, then Denys Vlasenko took over as the current maintainer.
Споры о GPLv2/GPLv3
В сентябре 2006 года, после напряженных обсуждений и разногласий между сопровождающим проекта Робом Лэндли и Брюсом Перенсом, проект BusyBox отказался от принятия GNU General Public License Version 3 (GPLv3); лицензия BusyBox была уточнена как исключительно GPL 2.0. С октября 2006 года Денис Власенко принял на себя сопровождение BusyBox от Роба Лэндли, который, также в результате споров о лицензии, начал разработку Toybox.
Иски по GPL
В конце 2007 года BusyBox также приобрел известность благодаря активному преследованию нарушений условий своей лицензии (GPL) в Окружном суде США по Южному округу Нью-Йорка. Первый иск в США, касающийся нарушения GPL, был связан с использованием BusyBox во встроенном устройстве. Иск, 21 ноября 2007 года SFLC подала два аналогичных иска от имени Andersen и Landley против еще двух компаний: Xterasys (дело № 07 CV 10455) и High Gain Antennas (дело № 07 CV 10456). Дело Xterasys было урегулировано 17 декабря путем публикации использованного исходного кода и выплаты нераскрытой суммы, а дело High Gain Antennas – 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 и, похоже, изменили лицензионные заявления".
On November 21, 2007, the SFLC brought two similar lawsuits on behalf of Andersen and Landley against two more companies, Xterasys (case 07 CV 10455) and High Gain Antennas (case 07 CV 10456). The Xterasys case was settled on December 17 for release of source code used and an undisclosed payment, and the High Gain Antennas case on March 6, 2008, for active license compliance and an undisclosed payment. On December 7, 2007, a case was brought against Verizon Communications over its distribution of firmware for Actiontec routers; this case was settled March 17, 2008 on condition of license compliance, appointment of an officer to oversee future compliance with free software licenses, and payment of an undisclosed sum. Further suits were brought on June 9, 2008, against Bell Microproducts (case 08 CV 5270) and SuperMicro (case 08 CV 5269), the Super Micro case being settled on July 23, 2008. BusyBox and Bell Microproducts also settled out of court on October 17. On December 14, 2009, a new lawsuit was filed naming fourteen defendants including Best Buy, JVC, Samsung and others. In February 2010 Samsung released its LN52A650 TV firmware under GPLv2, which was used later as a reference by the SamyGO community project. On about August 3, 2010, BusyBox won from Westinghouse a default judgement of triple damages of $90,000 and lawyers' costs and fees of $47,865, and possession of "presumably a lot of high def TVs" as infringing equipment in the lawsuit Software Freedom Conservancy v. Best Buy, et al., the GPL infringement case noted in the paragraph above. No other developers, including original author Bruce Perens and maintainer Dave Cinege, were represented in these actions or party to the settlements. On December 15, 2009, Perens released a statement expressing his unhappiness with some aspects of the legal situation, and in particular alleged that the current BusyBox developers "appear to have removed some of the copyright statements of other BusyBox developers, and appear to have altered license statements".
Особенности
BusyBox можно настроить для предоставления подмножества из более чем двухсот утилит. Он может обеспечить большинство утилит, указанных в Единой спецификации Unix (SUS), а также множество других, которые пользователь ожидает увидеть в системе Linux. BusyBox использует оболочку Almquist, также известную как A Shell, ash и sh. В качестве альтернативы для настройки можно использовать более компактную оболочку 'hush'. Ранее были доступны оболочки "msh" и "lash". Поскольку это полноценная система начальной загрузки, она может заменить демон init и udev (или современный systemd), используя себя для запуска в качестве init при старте системы и mdev при подключении устройств на ходу. Полный список реализованных утилит доступен на веб-сайте BusyBox.
Однозначный двоичный
Типичные компьютерные программы имеют отдельный двоичный (исполняемый) файл для каждого приложения. BusyBox — это единый бинарный файл, представляющий собой объединение множества приложений, каждое из которых можно вызвать, обращаясь к единственному бинарному файлу BusyBox с разными именами (поддерживаемыми символическими или жесткими ссылками для каждого имени) определенным образом с соответствующими аргументами. BusyBox выигрывает от такого подхода, поскольку это снижает накладные расходы, связанные с форматом исполняемых файлов (обычно ELF), и позволяет совместно использовать код между несколькими приложениями без использования библиотек. Эта техника аналогична той, что предоставляет команда crunchgen в FreeBSD, но BusyBox предлагает упрощенные версии утилит (например, команда ls без возможности сортировки файлов), в то время как сумма всех утилит, сгенерированная crunchgen, предоставляет полнофункциональные версии. Совместное использование общего кода и рутин, написанных с учетом оптимизации размера, позволяет системе BusyBox занимать значительно меньше места для хранения, чем система, построенная с использованием соответствующих полных версий утилит, замененных BusyBox. Исследования, сравнивающие реализации стандартных команд Unix от GNU, BusyBox, asmutils и Perl, показали, что в некоторых ситуациях BusyBox может работать быстрее, чем другие реализации, но это не всегда так.
Приборы и прием
BusyBox используется рядом операционных систем, работающих на встраиваемых системах, и является ключевым компонентом дистрибутивов, таких как OpenWrt, OpenEmbedded (включая Yocto Project) и Buildroot. Sharp Zaurus активно использует BusyBox для выполнения стандартных Unix-подобных задач в системной оболочке. BusyBox также является важным компонентом VMware ESXi и Alpine Linux, которые не являются встраиваемыми дистрибутивами. Он необходим для ряда root-приложений на Android и предустановлен в некоторых решениях для получения root-доступа в один клик, например, Kingo Root.
Спор о Toybox
Toybox был запущен в начале 2006 года под лицензией GPL 2.0 бывшим сопровождающим BusyBox Робом Лэндли в результате разногласий, возникших в ходе обсуждений GPLv3 и GPLv2. В конце 2011 года проект был перелицензирован под лицензией BSD 2-Clause после периода бездействия. В марте 2013 года лицензия была изменена снова, на 0BSD. 11 января 2012 года Тим Берд, сотрудник Sony, предложил создать альтернативу BusyBox, которая не подпадала бы под действие GNU General Public License. Он предложил использовать в качестве основы неактивный проект Toybox. В январе 2012 года предложение создать BSD-лицензированную альтернативу BusyBox, лицензированному по GPL, вызвало резкую критику со стороны Мэтью Гарретта, который утверждал, что это лишает группу Software Freedom Conservancy единственного эффективного инструмента для защиты авторских прав. Роб Лэндли, инициатор судебных исков, связанных с BusyBox, ответил, что это было сделано намеренно, поскольку он пришел к выводу, что эти иски не принесли ожидаемых положительных результатов, и он хотел остановить их "любым способом, который сочтет подходящим".