BusyBox - BusyBox
Оригинальный автор (ы) | Брюс Перенс |
---|---|
Разработчики) | Эрик Андерсен,[1] Роб Лэндли,[2] Денис Власенко[3] и другие |
изначальный выпуск | 4 ноября 1999 г.[4] |
Стабильный выпуск | 1.31.1 (25 октября 2019 г.[±][5] | )
Репозиторий | |
Написано в | C |
Операционная система | Unix-подобный |
Размер | 2,1 МБ (сжатый tar.bz2) |
Тип | |
Лицензия | GPLv2[6] |
Интернет сайт | www |
BusyBox это программный пакет что обеспечивает несколько Утилиты Unix в единственном запускаемый файл. Он работает в различных POSIX среды, такие как Linux, Android,[7] и FreeBSD,[8] хотя многие из предоставляемых им инструментов предназначены для работы с интерфейсами, предоставляемыми ядром Linux. Он был специально создан для встроенных операционных систем с очень ограниченными ресурсами. Авторы окрестили его "The швейцарский нож из Встроенный Linux ",[9] поскольку единственный исполняемый файл заменяет основные функции более чем 300 общих команд. Он выпущен как свободное программное обеспечение в соответствии с условиями Стандартная общественная лицензия GNU, версия 2.[6]
История
Происхождение
Первоначально написано Брюс Перенс в 1995 году и объявлен готовым к использованию в 1996 году,[10] Изначально BusyBox стремился поставить полную загрузочный система на единой дискета который мог бы служить как аварийным диском, так и установщик для Debian распространение. С тех пор он был расширен, чтобы стать стандарт де-факто ядро пространство пользователя набор инструментов для встроенных устройств Linux и установщиков дистрибутивов Linux. Поскольку для каждого исполняемого файла Linux требуется несколько килобайт служебных данных, использование программой BusyBox, объединяющей более двухсот программ, часто позволяет сэкономить значительное дисковое пространство и системную память.
BusyBox поддерживался Энрике Занарди и был ориентирован на потребности Debian. загрузочные дискеты до начала 1998 года, когда Дэйв Синеж взял на себя Проект маршрутизатора Linux (LRP). Cinege внесла несколько дополнений, создала модульную среду сборки и сместила фокус BusyBox на общие высокоуровневые встроенные системы. Поскольку в 1999 году развитие LRP замедлилось, Эрик Андерсен, в то время Lineo, Inc., взял на себя управление проектом и стал официальным сопровождающим в период с декабря 1999 года по март 2006 года. За это время рынок встраиваемых систем Linux резко вырос, и BusyBox значительно повзрослел, расширив как свою базу пользователей, так и функциональность. Роб Лэндли был сопровождающим с 2005 года до конца 2006 года, затем Денис Власенко занял его место в качестве текущего сопровождающего.
Споры о GPLv2 / GPLv3
В сентябре 2006 года, после тяжелых дискуссий и разногласий между сопровождающим проекта Робом Лэндли и Брюс Перенс,[11] BusyBox[12][13] проект решил не принимать версию 3 общественной лицензии GNU (GPLv3 ); лицензия BusyBox была уточнена как GPL версии 2 (GPLv2 ) только.[14]
С октября 2006 года Денис Власенко взял на себя сопровождение BusyBox Роба Лэндли, который начал Ящик для игрушек, также в результате разногласий по поводу лицензии.[12][15]
Иски по GPL
В конце 2007 года BusyBox также стал известен благодаря активному преследованию за нарушения условий лицензии (GPL) в Окружной суд США Южного округа Нью-Йорка.[16]
Утверждалось, что это первый судебный процесс в США по поводу нарушения GPL, касающийся использования BusyBox во встроенном устройстве. Иск,[16] дело 07-CV-8205 было подано 20 сентября 2007 г. Правовой центр свободы программного обеспечения (SFLC) от имени Андерсена и Лэндли против Муссон Мультимедиа Inc., после того, как код BusyBox был обнаружен в прошивка обновление и попытки связаться с компанией, очевидно, не увенчались успехом. Дело было урегулировано выпуском версии Monsoon источника и выплатой нераскрытой суммы денег Андерсену и Лэндли.[17]
21 ноября 2007 года SFLC подала два аналогичных иска от имени Андерсена и Лэндли против еще двух компаний, Xterasys (дело 07-CV-10455) и Антенны с высоким коэффициентом усиления (кейс 07-CV-10456).[18][19] Дело Xterasys было урегулировано 17 декабря в связи с выпуском использованного исходного кода и нераскрытым платежом.[20] и дело об антеннах с высоким коэффициентом усиления 6 марта 2008 г. в связи с действующим лицензионным соглашением и нераскрытым платежом.[21] 7 декабря 2007 г. было возбуждено дело Verizon Communications над распространением прошивки для роутеров Actiontec;[22][23] это дело было урегулировано 17 марта 2008 г. при условии соблюдения лицензионных требований, назначения должностного лица для надзора за соблюдением в будущем лицензий свободных программ и выплаты нераскрытой суммы.[24] Дальнейшие иски были поданы 9 июня 2008 г. Bell Microproducts (дело 08-CV-5270) и СуперМикро (кейс 08-CV-5269),[25] Дело Super Micro завершается 23 июля 2008 г.[26] 17 октября BusyBox и Bell Microproducts урегулировали вопрос во внесудебном порядке.[27]
14 декабря 2009 года был подан новый иск, в котором были указаны четырнадцать ответчиков, в том числе Лучшая покупка, JVC, Samsung и другие.[28][29][30]В феврале 2010 г. Samsung выпустила прошивку для телевизора LN52A650 под GPLv2,[31] который позже использовался в качестве ссылки SamyGO общественный проект.[32]
Примерно 3 августа 2010 г. BusyBox выиграл у Westinghouse решение по умолчанию о тройном возмещении убытков в размере 90 000 долларов США и судебных издержках и гонорарах в размере 47 865 долларов США, а также владение «предположительно большим количеством телевизоров высокой четкости» в качестве оборудования, нарушающего права в судебном процессе. Сохранение свободы программного обеспечения v. Best Buy и др., дело о нарушении GPL, упомянутое в параграфе выше.[33]
Никакие другие разработчики, включая первоначального автора Брюса Перенса и сопровождающего Дэйва Синежа, не участвовали в этих действиях или участвовали в урегулировании споров. 15 декабря 2009 г. Перенс опубликовал заявление, в котором выразил свое недовольство некоторыми аспектами правовой ситуации и, в частности, утверждал, что нынешние разработчики BusyBox «по-видимому, удалили некоторые заявления об авторских правах других разработчиков Busybox и, похоже, изменили заявления о лицензии ".[34]
особенности
BusyBox можно настроить для предоставления подмножества из более чем двухсот утилит. Он может предоставить большинство утилит, указанных в Единая спецификация Unix (SUS) плюс многие другие, которые пользователь ожидает увидеть в системе Linux. BusyBox использует Раковина альмквиста, также известный как A Shell, ash и sh.[35] Альтернативой для настройки является меньшая «тишина» оболочки. Раньше были доступны «мш» и «плеть».[36]
Поскольку это полная система начальной загрузки, она в дальнейшем заменит демон инициализации и udev (или в последнее время systemd ) используя себя, чтобы называться в этом при запуске и mdev во время горячего подключения.
Веб-сайт BusyBox предоставляет полный список реализованных утилит.[37]
Одиночный двоичный
Типовые компьютерные программы имеют отдельный двоичный (исполняемый файл ) для каждого приложения. BusyBox - это отдельный двоичный файл, который представляет собой конгломерат множества приложений, к каждому из которых можно получить доступ, вызвав один двоичный файл BusyBox с различными именами (поддерживается наличием символическая ссылка или жесткая ссылка для каждого другого имени)[38] определенным образом с соответствующими аргументами.
BusyBox выигрывает от единого двоичного подхода, так как он снижает накладные расходы, связанные с форматом исполняемого файла (обычно ELF ), и это позволяет разделять код между несколькими приложениями, не требуя библиотека. Этот метод аналогичен тому, что предоставляется Crunchgen[39] командовать в FreeBSD, разница в том, что BusyBox предоставляет упрощенные версии утилит (например, ls команда без возможности сортировки файлов), в то время как сгенерированная crunchgen сумма всех утилит предложит полностью функциональные версии.
Совместное использование общего кода вместе с подпрограммами, написанными с учетом оптимизации размера, может заставить систему BusyBox использовать гораздо меньше места для хранения, чем система, построенная с соответствующими полными версиями утилит, замененными BusyBox. Исследование[40] это по сравнению GNU, BusyBox, asmutils и Perl реализации стандартных команд Unix показали, что в некоторых ситуациях BusyBox может работать быстрее, чем другие реализации, но не всегда.
Команды
В официальной документации BusyBox представлен обзор доступных команд и их параметров командной строки.
Список команд BusyBox[41]
- ясень
- awk
- Кот - Скопируйте содержимое файла на стандартный вывод
- chmod - Изменить режимы файлов
- cp - Копировать
- Дата - Отображение системной даты / времени
- дд - Скопируйте файл с конвертированием и форматированием
- df - Распечатать статистику использования файловой системы
- dmesg
- эхо - Отобразить указанную строку текста.
- egrep
- fgrep
- Getty
- grep - Найдите ШАБЛОН в каждом ФАЙЛЕ или стандартном вводе.
- архиватор - Расширение сжатого файла.
- gzip - Сжатие файлов.
- httpd — HTTP-сервер deamon
- в этом
- убийство - Отправить сигнал процессу.
- пер - Создайте ссылку с именем LINK_NAME или DIRECTORY на указанную ЦЕЛЬ.
- логин - начать новый сеанс в системе
- ls - Список файлов или папок
- mdev - сродни udev
- mkdir - Создать папку
- Больше - Просматривайте ФАЙЛ или стандартный ввод по одному экрану за раз
- монтировать - Смонтировать файловые системы
- мв - переместить файл
- NC - сетевой швейцарский армейский нож.
- netstat - Отображение сетевой информации.
- нтпк
- ntpsync
- nvram
- пидоф - Список PID всех процессов с именами, которые соответствуют ИМЯ
- пинг - Отправить пакеты ICMP ECHO_REQUEST на сетевые узлы
- пс - Отчет о состоянии процесса
- pwd - Распечатать рабочий каталог
- реальный путь
- rm - Стереть файл
- rmdir - Удалить каталог
- rpm2cpio
- rstats - Авторские права BusyBox
- rtcwake
- уровень выполнения
- запчастей
- Runv
- Runvdir
- rx
- сценарий
- sed - Редактор текстового потока
- setkeycodes
- setlogcons
- SetSid
- Setuidgid
- ш
- sha1sum - Вычислить и проверить дайджест сообщения SHA-1
- sha256sum - Вычислить и проверить дайджест сообщения SHA-512
- спать - Приостановить выполнение программы на указанное время
- старт-стоп-демон
- стат
- струны
- stty - Изменить и распечатать настройки линии терминала
- вс - Выполнять команды с привилегиями другой учетной записи пользователя
- сулогин
- сумма - Контрольная сумма и количество блоков в файле
- св
- svlogd
- обмен
- обменять
- переключить корень
- синхронизировать - Записать все блоки буферизованной файловой системы на диск
- sysctl
- syslogd
- tac - Объединение и печать файлов в обратном порядке строк
- хвостик - Вывод последнего файла
- деготь
- набор задач
- tcpsvd
- тройник - Отправить вывод в несколько файлов
- телнет
- telnetd
- тестовое задание
- tftp
- tftpd
- время
- тайм-аут - Выполнить команду с ограничением по времени
- верх
- прикоснуться - Обновить дату последнего изменения для данного ФАЙЛА [ов]
- tr - Перевести или удалить символы
- трассировка
- правда
- tty
- ttysize
- udhcpc - Маленький DHCP-клиент
- udhcpd
- udpsvd
- размонтировать - Размонтировать файловые системы
- безымянный - Отображение системной информации
- распаковать
- не раскрывать
- уникальный
- unix2dos
- Unlzma
- unlzop
- распаковать
- время безотказной работы - Расскажите, как долго работает система.
- usleep - Пауза на N [микросекунд]
- vconfig - Программа настройки VLAN (802.1q)
- vi - (визуально) Редактировать ФАЙЛ
- vlock - Программа блокировки виртуальной консоли
- имя - Вернуть название тома
- часы - Периодически выполнять программу
- сторожевая собака - Программный сторожевой демон
- Туалет - Количество слов, строк и байтов или символов
- wget
- который - Показывает полный путь команд (оболочки)
- кто - Показать, кто находится в системе
- кто я - Распечатать эффективный идентификатор пользователя
- 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. В Острый Заурус широко использует BusyBox для обычных Unix-подобный задачи, выполняемые в оболочке системы.[42]
BusyBox также является важным компонентом VMware ESXi.
Он необходим для нескольких корневых приложений на Android, а также предустановлен с некоторыми решениями "1 Tap Root", такими как Kingo Root.
Споры по поводу Toybox
Ящик для игрушек был начат в начале 2006 г. Стандартная общественная лицензия GNU бывшим разработчиком Busybox Робом Лэндли в результате разногласий по поводу GPLv3 / GPLv2. В конце 2011 г.[43] он был переиздан под Лицензия BSD после того, как проект бездействовал.[44] 11 января 2012 г. Тим Бёрд Sony сотрудник, предложил создать альтернативу BusyBox, которая не будет подпадать под Стандартную общественную лицензию GNU. Он предположил, что в основе его лежит бездействующий ящик с игрушками.[45] В январе 2012 г. предложение о создании Лицензия BSD альтернатива проекту BusyBox под лицензией GPL вызвала резкую критику со стороны Мэтью Гарретт за то, чтобы убрать единственный подходящий инструмент для защита авторских прав из Сохранение свободы программного обеспечения группа.[46] Начальник судебных процессов на основе BusyBox, Роб Лэндли, ответил, что это было намеренно, поскольку он пришел к выводу, что судебные процессы не привели к ожидаемым положительным результатам, и он хотел их остановить. "любым способом, который я считаю нужным".[47][48]
Смотрите также
- Основные утилиты GNU
- утилита-Linux, iproute2, эттоол
- Linux во встроенных системах
- Linux для мобильных устройств
использованная литература
- ^ "Домашняя страница Эрика Андерсена".
- ^ Активные проекты, Сайт Роба Лэндли
- ^ Денис Власенко, Сопровождающий BusyBox
- ^ http://www.softwarefreedom.org/resources/2009/busybox-complaint-2009-12-14.pdf[постоянная мертвая ссылка ]
- ^ "Анонс 1.31.1". Получено 2019-12-19.
- ^ а б "BusyBox".
- ^ BitCubate X. «BusyBox Classic».
- ^ "Обзор порта FreeBSD".
- ^ Слоган исходного кода «Швейцарский армейский нож для встраиваемого Linux»
- ^ https://busybox.net/~landley/forensics.txt
- ^ Заявление по искам Busybox на Брюс Перенс Журнал (15.12.2009, в архиве)
- ^ а б корбет (01.10.2006). "Занято занято занято". lwn.net. Получено 2015-11-21.
Поскольку BusyBox можно найти во многих встраиваемых системах, он находится в центре GPLv3 дебаты против DRM. [...] Реальные результаты, однако, таковы: BusyBox будет иметь GPLv2 только начиная со следующего выпуска. Принято считать, что исключение «или любой более поздней версии» является юридически оправданным, и что слияние другого кода, предназначенного только для GPLv2, в любом случае вызовет эту проблему.
- ^ Лэндли, Роб (09.09.2006). «Re: Move GPLv2 vs v3 fun…». lwn.net. Получено 2015-11-21.
Пожалуйста, не придумывайте аргументы соломенного человека Я считаю лицензирование BusyBox под GPLv3 бесполезным, ненужным, чрезмерно сложным и запутанным, и, помимо этого, у него есть реальные недостатки. 1) Бесполезно: мы никогда не откажемся от GPLv2.
- ^ GPL версии 2 только для BusyBox 1.3.0. на lwn.net
- ^ Лэндли, Роберт (30 сентября 2006 г.). «Я ухожу сейчас. Может быть, когда-нибудь». Busybox (Список рассылки).
- ^ а б От имени разработчиков BusyBox Андерсена и Лэндли SFLC подала первый иск в США о нарушении GPL (Центр права свободы программного обеспечения, 20 сентября 2007 г.)
- ^ Достигнуто мировое соглашение по делу Busybox-Monsoon GPL В архиве 2008-09-24 на Wayback Machine (Брюс Байфилд, Linux.com, 30 октября 2007 г.)
- ^ Команда юристов Linux подала в суд за нарушение GPL (Мартин ЛаМоника, CNET News.com, 21 ноября 2007 г.)
- ^ «Второй раунд судебных исков о нарушении GPL, поданных от имени разработчиков BusyBox».
- ^ «Разработчики BusyBox и Xterasys Corporation соглашаются урегулировать судебный процесс по GPL».
- ^ Разработчики BusyBox и High-Gain Antennas соглашаются отклонить иск по GPL (Пресс-релиз SFLC)
- ^ Юридическая группа с открытым исходным кодом снова нападает на BusyBox, подает в суд на Verizon В архиве 2007-12-10 на Wayback Machine (Грант Гросс, Computerworld, 7 декабря 2007 г.)
- ^ «Разработчики BusyBox подали иск о нарушении GPL против Verizon Communications».
- ^ Verizon урегулирует судебный процесс в отношении ПО (Пол МакДугелл, Информационная неделя, 17 марта 2008 г.)
- ^ SFLC подает очередной раунд судебных исков о нарушении GPL от имени разработчиков BusyBox (Пресс-релиз SFLC)
- ^ Разработчики BusyBox и Supermicro соглашаются прекратить судебный процесс по GPL: добросовестное обсуждение привело к прекращению дела о нарушении авторских прав (Пресс-релиз SFLC)
- ^ 2008. Андерсен против Bell Microproducts, Inc., № 08-CV-5270, Док. № 16 (S.D.N.Y. 17.10.2008) (уведомление о добровольном увольнении)
- ^ Джейсон Перлоу (16 декабря 2009 г.). «Как избежать современной публичной порки под лицензией GPL». zdnet.com. Получено 2016-03-24.
Публичных порок и казней, подобных недавнему иску против SFLC, можно было бы избежать, если бы действительно существовали действующие стандарты и процедуры соблюдения GPL и других лицензий на свободный и открытый исходный код.
- ^ Best Buy, Samsung, Westinghouse и еще 11 названы в иске по GPL на cnet.com
- ^ Software Freedom Conservancy, Inc. и г-н Эрик Андерсен против BestBuy, Samung, Westinghouse, JVC, Western Digital, Bosch, Phoebe Micro, Humax, ... (Нью-Йорк, 2009 г.)
- ^ Визуальный дисплей - открытый исходный код на samsung.com "Пожалуйста, скачайте ссылки ниже. Мы используем GPLv2 и LGPLv2.1, а не GPLv3 и LGPLv3. Модель: LN40A650 / LN52A650 / LN52A750 [...] LN52A750.zip" (Архивировано 2010 г.)
- ^ Главная страница на samygo.tv
- ^ Джонс, Памела (2010-08-03). «BusyBox и GPL снова преобладают - обновленные 4X». Groklaw. Получено 2012-09-27.
- ^ Брюс Перенс "Заявление по искам Busybox ", perens.com (15 декабря 2009 г.).
- ^ "варианты ясеня". Архивировано из оригинал 2010-03-10. Получено 2008-05-15.
- ^ "Используйте новую опцию 'select', чтобы настроить оболочку". 2003-08-08. Получено 2019-04-02.
Оболочка ash добавляет около 60k в конфигурацию по умолчанию и является наиболее полной и наиболее педантично правильной оболочкой, включенной в busybox. Эта оболочка на самом деле является производной от Оболочка Debian 'dash' (Гербертом Сю), который был создан путем переноса оболочки 'ash' (написанной Кеннетом Альмквистом) из NetBSD.
- ^ BusyBox - швейцарский армейский нож для встраиваемого Linux
- ^ «BusyBox упрощает встраиваемые системы Linux: небольшой набор инструментов для небольших сред». IBM. Архивировано из оригинал на 2008-12-09.
- ^ Crunchgen страница руководства в freebsd.org В архиве 22 июня 2007 г. Wayback Machine
- ^ Дуг Тайер, Кейт Миллер (16–17 апреля 2004 г.). «Четыре программы UNIX в четырех коллекциях UNIX: поиск согласованности в значке с открытым исходным кодом» (PDF). Материалы симпозиума по обучению и вычислительной технике на Среднем Западе. Университет Миннесоты, Моррис.
- ^ «Справка по команде BusyBox». Получено 2013-02-24.
- ^ «Linux в дороге».
- ^ Лэндли, Роб. «Фиксация изменения лицензии». Репозиторий Toybox Mercurial. Получено 24 июля, 2015.
- ^ http://landley.net/toybox/
- ^ «Проект замены Busybox». 2012-01-11. Получено 2014-03-04.
- ^ «Гарретт: Непрекращающаяся борьба с принудительным применением GPL». LWN.net. 2012-01-31. Получено 2014-03-04.
Настоящая проблема здесь в том, что зависимость [Software Freedom Conservancy] от Busybox означает, что они могут атаковать только нарушителей, которые используют этот код Busybox. До сих пор ни один из значительных правообладателей ядра не предлагал разрешить SFC обеспечивать соблюдение своих авторских прав, в результате чего принудительные меры будут прекращены, когда поставщики переходят на замену Busybox.
- ^ «Гарретт: Непрекращающаяся борьба с принудительным применением GPL». LWN.net. 2012-01-31. Получено 2014-03-04.
> Как бывший сопровождающий Busybox, который первым начал эти судебные процессы, а теперь ОЧЕНЬ Сожалеет об этом, я думаю, что имею право прекратить судебные процессы любым способом, который я считаю нужным. Они ни разу не привели к добавлению ни одной строчки кода в репозиторий busybox. Они БЫЛИ привели к тому, что более чем одна компания полностью прекратила разработку Linux и перешла на операционные системы, отличные от Linux, для своих встроенных продуктов, и они являются важной частью политики Android «Нет GPL в пользовательском пространстве».
- ^ Проффитт, Брайан (02.02.2012). «Применение GPL разжигает общественное пламя - выбросить ребенка GPL с водой из ванны принудительного исполнения?». ITworld. Получено 2015-03-04.
дальнейшее чтение
- Перенс, Брюс (1 ноября 2000 г.). «Создание крошечных систем Linux с помощью BusyBox - Часть I». Linux журнал. Архивировано из оригинал 22 ноября 2015 г.. Получено 22 ноября, 2015.
- Джонс, М. Тим (15 августа 2006 г.). «Busybox упрощает встраиваемые системы Linux». Разработчик Работает. IBM.