Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

История [ править ]

Истоки [ править ]

Первоначально написан Брюс Perens в 1995 году и объявил полное его предполагаемого использования в 1996 году [10] 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 года , после тяжелых дискуссий и противоречий между проектом разработчике Роб Ландли и Брюс Perens , [11] BusyBox [12] [13] Проект решил против принятия GNU Public License Version 3 ( GPLv3 ); было уточнено, что лицензия BusyBox относится только к GPL версии 2 ( GPLv2 ). [14]

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

Иски по GPL [ править ]

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

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

21 ноября 2007 года SFLC подала два аналогичных иска от имени Андерсена и Лэндли против еще двух компаний, Xterasys (дело 07-CV-10455) и High-Gain Antennas (дело 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) и SuperMicro (дело 08-CV-5269) [25], дело Super Micro было урегулировано 23 июля 2008 г. [ 26] BusyBox и Bell Microproducts также урегулировали внесудебное решение 17 октября. [27]

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

Примерно 3 августа 2010 года BusyBox выиграл у Westinghouse решение по умолчанию о тройном возмещении ущерба в размере 90 000 долларов США и судебных издержках и гонорарах в размере 47 865 долларов США, а также владение «предположительно большим количеством телевизоров высокой четкости» в качестве оборудования, нарушающего авторские права, в судебном иске Software Freedom Conservancy v. Best Buy и др., дело о нарушении GPL, упомянутое в параграфе выше. [33]

Никакие другие разработчики, включая первоначального автора Брюса Перенса и сопровождающего Дэйва Синежа, не участвовали в этих действиях или участвовали в урегулировании споров. 15 декабря 2009 г. Перенс опубликовал заявление, в котором выразил свое недовольство некоторыми аспектами правовой ситуации и, в частности, утверждал, что нынешние разработчики BusyBox «по-видимому, удалили некоторые заявления об авторских правах других разработчиков BusyBox и, похоже, изменили заявления о лицензии ". [34]

Особенности [ править ]

BusyBox можно настроить так, чтобы он предоставлял подмножество из более чем двухсот утилит. Он может предоставить большинство утилит, указанных в Single Unix Specification (SUS), а также многие другие, которые пользователь ожидает увидеть в системе Linux. BusyBox использует оболочку Almquist , также известную как A Shell, ash и sh. [35] Альтернативой для настройки является меньшая оболочка «hush». Раньше были доступны «мш» и «плеть». [36]

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

Веб-сайт BusyBox предоставляет полный список реализованных утилит. [37]

Одиночный двоичный файл [ править ]

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

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

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

Команды [ править ]

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

Список команд BusyBox [41]

  • пепел
  • awk
  • cat - копирует содержимое файла в stdout
  • chmod - изменить режимы файлов
  • cp - Копировать
  • date - Отображение системной даты / времени
  • dd - копировать файл с конвертированием и форматированием
  • df - Распечатать статистику использования файловой системы
  • dmesg
  • echo - отобразить указанную строку текста.
  • egrep
  • fgrep
  • Getty
  • grep - поиск ШАБЛОНА в каждом ФАЙЛЕ или стандартном вводе.
  • gunzip - Расширение сжатого файла.
  • gzip - сжатие файлов.
  • httpd - HTTP-сервер deamon
  • в этом
  • 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-подобных задач , выполняемых на оболочке системы. [42]

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

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

Споры по поводу Toybox [ править ]

Toybox был запущен в начале 2006 года под лицензией GNU General Public License бывшим сопровождающим BusyBox Робом Лэндли в результате разногласий вокруг обсуждений GPLv3 / GPLv2. В конце 2011 года [43] он был повторно лицензирован по лицензии BSD после того, как проект перестал работать. [44] 11 января 2012 года Тим Берд, сотрудник Sony , предложил создать альтернативу BusyBox, которая не будет подпадать под Стандартную общественную лицензию GNU. Он предположил, что в основе его лежит бездействующий ящик с игрушками. [45] В январе 2012 года предложение о создании лицензированной BSD альтернативы проекту BusyBox с лицензией GPL вызвало резкую критику со стороны Мэтью Гарретта.за изъятие единственного уместного инструмента для защиты авторских прав группы Software Freedom Conservancy . [46] Начальник судебных процессов на основе BusyBox, Роб Лэндли, ответил, что это было намеренно, поскольку он пришел к выводу, что судебные процессы не привели к ожидаемым положительным результатам, и он хотел остановить их «любым способом, который я считаю нужным» . [47] [48]

См. Также [ править ]

  • Основные утилиты GNU
  • утилита-Linux , iproute2 , ethtool
  • Linux во встроенных системах
  • Linux для мобильных устройств

Ссылки [ править ]

  1. ^ "Домашняя страница Эрика Андерсена" .
  2. ^ Активные проекты , веб-сайт Роба Лэндли
  3. ^ Денис Власенко , сопровождающий BusyBox
  4. ^ http://www.softwarefreedom.org/resources/2009/busybox-complaint-2009-12-14.pdf [ постоянная мертвая ссылка ]
  5. ^ «История выпуска» . Проверено 6 января 2021 года .
  6. ^ a b «BusyBox» .
  7. ^ BitCubate X. «Классический BusyBox» .
  8. ^ "Обзор порта FreeBSD" .
  9. ^ Слоган источника «Швейцарский армейский нож встроенного Linux»
  10. ^ https://busybox.net/~landley/forensics.txt
  11. Заявление о судебных исках Busybox вблоге Брюса Перенса (15 декабря 2009 г., архивировано)
  12. ^ a b corbet (1 октября 2006 г.). «Занято занято занято» . lwn.net . Проверено 21 ноября 2015 года . Поскольку BusyBox можно найти во многих встроенных системах, он оказался в центре дебатов по поводу GPLv3 против DRM. [...] Реальные результаты, однако, таковы: BusyBox будет иметь GPLv2 только начиная со следующего выпуска. Принято считать, что исключение «или любой более поздней версии» является юридически оправданным, и что слияние другого кода, предназначенного только для GPLv2, в любом случае вызовет эту проблему.
  13. ^ Landley, Rob (9 сентября 2006). «Re: Move GPLv2 vs v3 fun…» . lwn.net . Проверено 21 ноября 2015 года . Пожалуйста, не придумывайте аргументы соломенного человека. Я считаю лицензирование BusyBox под GPLv3 бесполезным, ненужным, чрезмерно сложным и запутанным, и, помимо этого, у него есть реальные недостатки. 1) Бесполезно: мы никогда не откажемся от GPLv2.
  14. ^ GPL версии 2 только для BusyBox 1.3.0. на lwn.net
  15. ^ Landley, Роберт (30 сентября 2006). «Я ухожу сейчас. Может быть, когда-нибудь» . busybox (список рассылки).
  16. ^ a b От имени разработчиков BusyBox Андерсена и Лэндли, SFLC подает первый иск США о нарушении GPL (Центр права о свободе программного обеспечения, 20 сентября 2007 г.)
  17. ^ Byfield, Брюс (30 октября 2007). «Достигнуто мировое соглашение по делу Busybox-Monsoon GPL» . Linux.com . Архивировано из оригинального 24 сентября 2008 года.
  18. ^ Юридическая группа Linux подает в суд за нарушение GPL (Мартин ЛаМоника, CNET News.com, 21 ноября 2007 г.)
  19. ^ «Второй раунд судебных исков о нарушении GPL, поданных от имени разработчиков BusyBox» .
  20. ^ «Разработчики BusyBox и Xterasys Corporation соглашаются урегулировать судебный процесс по GPL» .
  21. ^ Разработчики BusyBox и антенны с высоким коэффициентом усиления соглашаются отклонить иск GPL (пресс-релиз SFLC)
  22. ^ Гросс, Грант (7 декабря 2007 г.). «Юридическая группа с открытым исходным кодом снова нападает на BusyBox, подав в суд на Verizon» . Компьютерный мир .
  23. ^ «Разработчики BusyBox подали иск о нарушении GPL против Verizon Communications» .
  24. ^ Verizon урегулировал судебный процесс в отношении программного обеспечения с открытым исходным кодом (Пол МакДугелл, InformationWeek , 17 марта 2008 г.)
  25. ^ SFLC подает очередной раунд судебных исков о нарушении GPL от имени разработчиков BusyBox (пресс-релиз SFLC)
  26. ^ Разработчики BusyBox и Supermicro соглашаются прекратить судебный процесс по GPL: добросовестные обсуждения привели к прекращению дела о нарушении авторских прав (пресс-релиз SFLC)
  27. ^ 2008. Андерсен против Bell Microproducts, Inc. , № 08-CV-5270, Док. № 16 (SDNY 17.10.2008) (уведомление о добровольном увольнении)
  28. ^ Perlow, Джейсон (16 декабря 2009). «Как избежать современной публичной порки под лицензией GPL» . zdnet.com . Проверено 24 марта 2016 года . Публичных порок и казней, подобных недавнему иску против SFLC, можно было бы избежать, если бы действительно существовали действующие стандарты и процедуры для соблюдения GPL и других лицензий на свободный и открытый исходный код.
  29. ^ Best Buy, Samsung, Westinghouse, еще 11 названы в иске GPL на cnet.com
  30. ^ The Software Freedom Conservancy, Inc. и г-н Эрик Андерсен против BestBuy, Samung, Westinghouse, JVC, Western Digital, Bosch, Phoebe Micro, Humax, ... (Нью-Йорк, 2009)
  31. ^ Visual Display - Открытый исходный код на samsung.com «Загрузите ссылки ниже. Мы используем GPLv2 и LGPLv2.1, а не GPLv3 и LGPLv3. Модель: LN40A650 / LN52A650 / LN52A750 [...] LN52A750.zip» (архив 2010)
  32. ^ Main_Page на samygo.tv
  33. Рианна Джонс, Памела (3 августа 2010 г.). «BusyBox и GPL снова преобладают - обновленные версии 4X» . Гроклав . Проверено 27 сентября 2012 года .
  34. ^ Брюс Перенс, « Заявление о судебных исках Busybox », perens.com (15 декабря 2009 г.).
  35. ^ "варианты ясеня" . Архивировано из оригинального 10 марта 2010 года . Проверено 15 мая 2008 года .
  36. ^ "Используйте новую опцию 'select', чтобы сделать конфигурацию оболочки" . 8 августа 2003 . Проверено 2 апреля 2019 года . Оболочка ash добавляет около 60 КБ в конфигурацию по умолчанию и является наиболее полной и наиболее педантично правильной оболочкой, включенной в busybox. Эта оболочка на самом деле является производной оболочки Debian 'dash' (Герберта Ксу), которая была создана путем переноса оболочки 'ash' (написанной Кеннетом Альмквистом) из NetBSD.
  37. ^ BusyBox - Швейцарский армейский нож встраиваемого Linux
  38. ^ «BusyBox упрощает встроенные системы Linux: небольшой набор инструментов для небольших сред» . IBM . Архивировано из оригинала 9 декабря 2008 года.
  39. ^ crunchgen(1)  -  Руководство по основным командам FreeBSD
  40. ^ Тайер, Дуг; Миллер, Кейт (16–17 апреля 2004 г.). «Четыре программы UNIX в четырех коллекциях UNIX: поиск согласованности в значке с открытым исходным кодом» (PDF) . Материалы симпозиума по обучению и вычислительной технике на Среднем Западе . Университет Миннесоты, Моррис.
  41. ^ «Справка по команде BusyBox» . Проверено 24 февраля 2013 года .
  42. ^ «Linux в дороге» .
  43. ^ Лэндли, Роб. «Фиксация изменения лицензии» . Репозиторий Toybox Mercurial . Проверено 24 июля 2015 года .
  44. ^ http://landley.net/toybox/
  45. ^ "Проект замены Busybox" . 11 января 2012 . Проверено 4 марта 2014 года .
  46. ^ «Гарретт: Непрекращающаяся борьба с принудительным применением GPL» . LWN.net . 31 января 2012 . Проверено 4 марта 2014 года . Настоящая проблема здесь в том, что зависимость [Software Freedom Conservancy] от Busybox означает, что они могут атаковать только нарушителей, которые используют этот код Busybox. До сих пор ни один из значительных правообладателей ядра не предлагал разрешить SFC обеспечивать соблюдение своих авторских прав, в результате чего принудительные меры будут прекращены, когда поставщики переходят на замену Busybox.
  47. ^ «Гарретт: Непрекращающаяся борьба против соблюдения GPL» . LWN.net . 31 января 2012 . Проверено 4 марта 2014 года . > Как бывший сопровождающий Busybox, который первым начал эти судебные процессы и теперь ОЧЕНЬ Сожалеет об этом, я думаю, что имею право прекратить судебные процессы любым способом, который я считаю нужным. Они никогда не приводили к добавлению ни одной строчки кода в репозиторий busybox. Они БЫЛИ привели к тому, что более чем одна компания полностью прекратила разработку Linux и перешла на операционные системы, отличные от Linux, для своих встроенных продуктов, и они являются важной частью политики Android «Нет GPL в пользовательском пространстве».
  48. ^ Proffitt, Брайан (2 февраля 2012). «Применение GPL разжигает общественное пламя - выбросить ребенка GPL с водой из ванны принудительного исполнения?» . ITworld . Проверено 4 марта 2015 года .

Дальнейшее чтение [ править ]

  • Перенс, Брюс (1 ноября 2000 г.). «Создание крошечных систем Linux с помощью BusyBox - Часть I» . Linux Journal . Архивировано из оригинального 22 ноября 2015 года . Проверено 22 ноября 2015 года .
  • Джонс, М. Тим (15 августа 2006 г.). «Busybox упрощает встроенные системы Linux» . Разработчик работает . IBM.

Внешние ссылки [ править ]

  • Официальный веб-сайт