Что такое BusyBox и где он используется? – CloudSavvy ИТ
Фатмавати ачмад дзэнури / Shutterstock.com
BusyBox – это набор основных утилит Unix, упакованных в виде единого двоичного файла. Это делает его идеальным для сред с ограниченными ресурсами, таких как встроенные устройства. В полном дистрибутиве почти 400 самых распространенных команд.
BusyBox имеет открытый исходный код и распространяется под лицензией GPL. Он был создан в 1995 году с целью уместить загрузочную систему на одну дискету. Объединение команд в один двоичный файл снижает накладные расходы и разрешает совместное использование кода между внешне независимыми приложениями.
Что включает в себя BusyBox?
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
BusyBox предоставляет повседневные удобные команды, которые часто кажутся частью вашей оболочки. Хотя инструменты пользовательского уровня, такие как ls и cat, распространены повсеместно, на самом деле они находятся в отдельном служебном пакете, который не зависит от вашей оболочки. Многие дистрибутивы Linux доставляют эти команды через coreutils GNU, но вместо этого другие поставляют BusyBox.
Проект работает, связывая знакомые имена команд в / usr / bin с двоичным файлом BusyBox. Затем этот исполняемый файл вызывает функцию, соответствующую имени, переданному в качестве его первого аргумента.
- В BusyBox команда mkdir запускает / usr / bin / busybox mkdir
- В GNU Coreutils команда mkdir запускает / usr / bin / mkdir.
После установки BusyBox вы можете прозрачно использовать такие команды, как mkdir, passwd, ps, tar и wget. Команды реализованы в виде «апплетов», которые объединены в функционирующий дистрибутив BusyBox. Полный набор весит около 1 МБ. Апплеты съемные, поэтому размер двоичного файла можно уменьшить еще больше. Вы можете проверить, что доступно в вашей установке, запустив busybox без аргументов.
Поскольку BusyBox был создан для питания крошечных загрузочных систем, он покрывает все необходимое в пользовательском пространстве для запуска и администрирования системы POSIX. Это распространяется на минимальную реализацию init, которая может работать как процесс с идентификатором 1 и поддерживать системные службы. Вы можете принять BusyBox как легкую альтернативу обычному демону init или systemd.
Поскольку BusyBox намеренно минимален, не каждая команда реализует все функции своего аналога GNU. В необычных ситуациях вы можете обнаружить некоторые недостающие флаги или различия в поведении. Это один из компромиссов обтекаемой природы BusyBox.
Где используется BusyBox?
BusyBox можно найти везде, где есть проблемы с использованием диска. Он используется минимальными операционными системами, такими как Alpine, а также специализированными сценариями, такими как встроенные устройства и мобильные оболочки.
Скорее всего, устройство, производное от Unix, на котором не работает обычный дистрибутив ОС, будет использовать BusyBox. Вы найдете его на своем сетевом маршрутизаторе, Smart TV, современном автомобиле и устройствах Интернета вещей. Каждая из этих настроек характеризуется необходимостью запуска основных пользовательских инструментов в среде с сильно ограниченными ресурсами.
Доставка одного бинарного файла «все в одном» более эффективна. Это снижает избыточность, позволяя всем командам совместно использовать общий код без хранения автономных библиотек на диске. Поскольку BusyBox предлагает хорошую совместимость с другими реализациями и лицензируется под GPL, это обычно лучший вариант для сред, требующих облегченного набора утилит.
Продавцы встраиваемых устройств также выигрывают от модульной природы BusyBox. Продукту IoT может потребоваться лишь несколько критически важных утилит для обеспечения его функциональности. Распространение измененного двоичного файла BusyBox освобождает еще несколько КБ дискового пространства, что может быть значительной экономией.
Как попробовать BusyBox
Вы можете установить BusyBox, не заменяя текущие утилиты. Используйте диспетчер пакетов, чтобы добавить busybox, затем добавьте выбранную вами команду в двоичный файл busybox, чтобы запустить апплет:
Busybox mkdir тест
Это гарантирует, что версия команды BusyBox будет использоваться вместо версии в пути по умолчанию вашей оболочки.
Еще один способ попробовать BusyBox – использовать его официальный образ Docker:
docker run -it –rm busybox
Если у вас установлен Docker, вы попадете в реализацию оболочки BusyBox. Вы можете запустить определенную команду, добавив ее после имени образа:
docker run -it –rm busybox mkdir demo
BusyBox также имеет эмулятор JavaScript, который позволяет вам опробовать утилиты в вашем веб-браузере.
В большинстве дистрибутивов Linux вы не можете полностью заменить coreutils на BusyBox. Специфичные для дистрибутива команды и пакеты часто жестко запрограммированы таким образом, чтобы ожидать наличия утилит coreutils. Ваш дистрибутив обычно отказывается удалить этот пакет, так как это может вывести систему из строя, если удалить init.
Если вы хотите положиться на BusyBox, лучше всего начать с дистрибутива, который его использует, а затем наложить на него другое программное обеспечение. Добавление BusyBox вместе с coreutils, как показано выше, хорошо работает, когда вам нужно проверить, как апплет будет реагировать в конкретном сценарии.
Вывод
BusyBox – это облегченная реализация пользовательских утилит UNIX, которая поставляется в виде единого двоичного файла. Вы можете комбинировать его с ядром Linux, чтобы создать работающую систему без каких-либо других зависимостей.
BusyBox оптимизирован для сред с ограниченным пространством. Это делает его идеальным для встраиваемых продуктов, таких как устройства Интернета вещей. Вы также можете найти BusyBox установленным в минимальных, но в остальном дистрибутивах Linux общего назначения, таких как Alpine Linux.
Независимо от того, используете ли вы BusyBox или GNU Coreutils, знакомые вам команды обычно «просто работают» с любой реализацией. Любые возникающие проблемы обычно возникают из-за того, что BusyBox не реализует определенный редкий флаг или параметр конфигурации.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)