Busybox что такое Linux
Обновлено: 21.11.2024
Busybox описан на странице руководства как швейцарский армейский нож встроенного Linux. Он объединяет небольшие версии общих утилит UNIX в один небольшой исполняемый файл. Он предоставляет около 400 реализаций команд Linux, таких как more, less, head, tail, grep, awk, sed, dpkg, скомпилированных в один двоичный файл.
Этот исполняемый файл имеет небольшой размер (менее 1 МБ) и поэтому полезен в ситуациях, когда мы ограничены в плане дискового пространства, например, при запуске всей временной операционной системы на RAM-диске, встроенных системах, мобильных устройствах и т. д. р>
Busybox смотрит на имя, которым он вызывается, и будет действовать в соответствии с желаемой программой, например, если мы вызовем busybox через символическую ссылку ls, он выполнит действие, похожее на команду ls, аналогично, если мы вызовем его через mkdir символическая ссылка, она выполняет действия, аналогичные mkdir.
Установка BusyBox в Linux
В Linux вы можете установить BusyBox с помощью диспетчера пакетов по умолчанию, как показано ниже.
Если ваш текущий дистрибутив Linux здесь не упоминается, вы можете перейти по ссылке в разделе ссылок, чтобы узнать, как его установить.
Как использовать BusyBox в Linux
Для начала выполните команду busybox без каких-либо параметров или флагов.
Выход представляет собой список всех команд, поддерживаемых busybox, а также другие полезные параметры.
Использование Busybox
Чтобы просмотреть точные команды, мы можем перечислить их следующим образом:
Команды Busybox
Для просмотра размера файла бинарника мы пишем.
Проверьте размер файла Busybox
Намного более ясная картина получается, когда мы сравниваем параметры команды из оболочки Linux и оболочки busybox.
Сравните Shell и Busybox
Как видно из вывода обоих исполнений, некоторые параметры оболочки Linux недоступны в выводе busybox. В большинстве случаев мы обнаружим, что параметры busybox — это все, что нам нужно для выполнения определенных задач в обычных приложениях, таких как устройства IoT.
Чтобы иметь возможность использовать команды busybox, мы пишем команды, которым предшествует ключевое слово busybox, например, для поиска строки с помощью написанной нами команды grep.
Приведенная выше команда работает так же, как и в оболочке Linux.
В качестве альтернативы мы также можем получить доступ к оболочке busybox и избежать использования ключевого слова busybox каждый раз, когда нам нужно выполнить команды, как показано ниже.
Оболочка Busybox
Находясь в оболочке, мы можем выполнять команды в обычном режиме, как если бы мы находились в оболочке Linux.
Чтобы выйти из оболочки, напишите.
Busybox написан с учетом ограниченных ресурсов и оптимизации размера. Его модульность позволяет включать и исключать команды/функции во время компиляции, то есть мы можем включать только те компоненты, которые нам нужны, и, следовательно, это упрощает настройку его реализации в таких системах, как мобильные, встроенные и т. д.
Вообще говоря, нам не нужен busybox в наших системах Linux, поскольку у нас уже есть полный пакет, как уже упоминалось, он полезен в случаях, когда у нас ограниченный объем дискового пространства для работы.
BusyBox – это проект с открытым исходным кодом (GPL), обеспечивающий простые реализации почти 400 распространенных команд.
Команды Linux воспринимаются как нечто само собой разумеющееся. Они поставляются в комплекте с системой при установке Linux, и мы часто не задаемся вопросом, зачем они там. Некоторые базовые команды, такие как cd, kill и echo, не всегда являются независимыми приложениями, а фактически встроены в вашу оболочку. Другие, такие как ls , mv и cat , являются частью основного пакета утилит (часто специально GNU coreutils). Но в мире открытого исходного кода всегда есть альтернативы, и одна из самых интересных — это BusyBox.
Что такое BusyBox в Linux?
Дополнительные ресурсы по Linux
BusyBox — это проект с открытым исходным кодом (GPL), предоставляющий простые реализации почти 400 распространенных команд, включая ls , mv , ln , mkdir , more , ps , gzip , bzip2 , tar и grep . Он также содержит версию языка программирования awk, потоковый редактор sed, средство проверки файловой системы fsck, менеджеры пакетов rpm и dpkg и, конечно же, оболочку (sh), обеспечивающую легкий доступ ко всем этим командам. Короче говоря, он содержит все основные команды, необходимые системе POSIX для выполнения общих задач обслуживания системы, а также многих пользовательских и административных задач.
На самом деле, он даже содержит команду инициализации, которую можно запустить как PID 1, чтобы она служила родительским процессом для всех других системных служб. Другими словами, BusyBox можно использовать как альтернативу systemd, OpenRC, sinit, init и другим демонам запуска.
BusyBox очень мал. В качестве исполняемого файла он весит менее 1 МБ, поэтому он приобрел большую популярность во встраиваемых системах, Edge и IoT-пространстве, где дисковое пространство имеет большое значение. В мире контейнеров и облачных вычислений он также популярен как основа для минимальных образов контейнеров Linux.
Минимализм
Отчасти привлекательность BusyBox заключается в его минимализме. Все его команды скомпилированы в один двоичный файл ( busybox ), а его справочная страница состоит всего из 81 страницы (по моим подсчетам передачи man в pr ), но охватывает почти 400 команд.
В качестве примера сравнения, вот вывод теневой версии useradd --help :
А вот версия той же команды для BusyBox:
Является ли эта разница особенностью или ограничением, зависит от того, предпочитаете ли вы иметь 20 или 10 опций в своих командах. Для некоторых пользователей и вариантов использования минимализм BusyBox обеспечивает достаточно того, что нужно сделать. Для других это хорошая минимальная среда, которую можно использовать в качестве запасного варианта или в качестве основы для установки более надежных инструментов, таких как Bash, Zsh, GNU Awk и т. д.
Установка BusyBox
В Linux вы можете установить BusyBox с помощью менеджера пакетов. Например, в Fedora и подобных:
Для Debian и его производных:
В macOS используйте MacPorts или Homebrew. В Windows используйте Chocolatey.
Вы можете установить BusyBox в качестве оболочки с помощью команды chsh --shell, за которой следует путь к приложению BusyBox sh. Я держу BusyBox в /lib64 , но его расположение зависит от того, где он установлен в вашем дистрибутиве.
Полная замена всех распространенных команд на BusyBox немного сложнее, потому что большинство дистрибутивов «зашиты» для поиска определенных команд в определенных пакетах. Другими словами, хотя технически возможно заменить init на init BusyBox, ваш менеджер пакетов может отказать вам в удалении пакета, содержащего init, опасаясь, что ваша система перестанет загружаться. Есть несколько дистрибутивов, построенных на BusyBox, поэтому начать заново — это, вероятно, самый простой способ испытать систему, построенную на BusyBox.
Попробуйте BusyBox
Вам не нужно постоянно менять оболочку на BusyBox, чтобы просто попробовать. Вы можете запустить оболочку BusyBox из текущей оболочки:
Однако в вашей системе по-прежнему установлены версии команд, отличные от BusyBox, поэтому, чтобы воспользоваться инструментами BusyBox, вы должны вводить команды в качестве аргументов для исполняемого файла busybox:
Для «полного» использования BusyBox вы можете создать символические ссылки на busybox для каждой команды. Это проще, чем кажется, если вы используете цикл for:
Добавьте свой каталог символических ссылок в начало вашего пути и запустите BusyBox:
Займитесь делом
BusyBox – это увлекательный проект и пример того, насколько минимальными могут быть вычисления. Независимо от того, используете ли вы BusyBox в качестве облегченной среды для древнего компьютера, который вы спасли, в качестве пользовательской среды для встроенного устройства, для тестирования новой системы инициализации или просто в качестве любопытства, может быть весело заново познакомиться со старым знакомым, но каким-то образом новые, команды.
20 основных команд Linux для каждого пользователя
От новичка до опытного пользователя, вот 20 команд Linux, которые сделают вашу жизнь проще.
В наши дни BusyBox становится все более популярным, особенно среди пользователей Docker. Многие образы Docker используют BusyBox, чтобы предоставить вам минимальный образ.
И это может ввести многих пользователей в замешательство, особенно если вы воспринимаете команды Linux как должное. Вы думаете, что ls, mv и другие подобные команды являются частью Linux, хотя на самом деле эти команды являются частью пакета GNU Coreutils, и в большинстве дистрибутивов Linux он предустановлен.
GNU Coreutils фактически является поставщиком различных команд UNIX/Linux. Почти потому, что всегда есть альтернативы, и BusyBox — одна из таких альтернатив GNU Coreutils.
Что такое BusyBox?
BusyBox – это проект с открытым исходным кодом, в котором реализована упрощенная реализация около 400 распространенных команд UNIX/Linux. Урезанная? да. Реализация BusyBox удаляет необычные, редко используемые параметры команды. Все умещается менее 1 МБ, и это минимальное изображение является причиной того, что оно стало популярным среди встраиваемых систем и домена IoT, а также в мире облачных вычислений.
Не ориентируйтесь на его размер. BusyBox имеет возможности для sed и awk, как классические редакторы (снова урезанная версия), а также содержит собственную оболочку. Он даже содержит команду инициализации, которую можно запустить как PID 1. Это означает, что BusyBox можно настроить как альтернативу Systemd, OpenRC и т. д.
BusyBox — превосходная альтернатива GNU Coreutils, особенно в тех случаях, когда малый размер операционной системы имеет большое значение.
BusyBox предоставляет популярные команды Linux, такие как mv, mkdir, ls и т. д., но содержит только часто используемые параметры этих команд. Этот минимализм является отличительной чертой BusyBox.
Проблема в том, что вы не получаете полные параметры команды Linux с помощью BusyBox?
На самом деле это зависит от ваших потребностей. Большинству людей никогда не понадобятся все параметры команды. Некоторые команды Linux имеют более 50 параметров, и я уверен, что вы никогда не использовали все параметры даже одной команды Linux.
BusyBox сокращает количество редко используемых опций. Например, команда ls имеет параметр G, который удаляет имя группы из вывода длинного списка (ls -l).
Теперь, я думаю, вам никогда не нужна была эта опция. Вот почему его нет в реализации BusyBox с помощью ls. Если вам действительно нужен вывод без имени группы, все, что вам нужно сделать, это использовать для этой цели команду cut или awk.
Возьмите другой пример. Это страница помощи команды mv из GNU Coreutils:
А вот страница справки по команде mv от BusyBox:
Видите разницу?
Как получить BusyBox?
Вы можете получить BusyBox различными способами.
Если вы просто хотите использовать BusyBox в своем текущем дистрибутиве Linux, вы можете установить его с помощью диспетчера пакетов вашего дистрибутива, такого как Apt, DNF или Yum.
В Ubuntu вы можете использовать эту команду для установки BusyBox:
После этого, если вы хотите запустить версию BusyBox команды, вы должны добавить busybox перед ней.
Если BusyBox не реализует команду, она выдает ошибку "апплет не найден".
Кроме того, вы можете загрузить Docker-образ BusyBox и испытать его в работающем контейнере.
Убедитесь, что у вас установлен Docker. Загрузите официальный образ докера:
Запустите контейнер из образа и войдите в оболочку BusyBox:
Каждая команда Linux, которую вы здесь запускаете, исходит из BusyBox. Вам не нужно указывать его явно.
В целом BusyBox не нужен в обычной системе Linux. У вас уже есть полная версия команд Linux из GNU Coreutils. Нет необходимости устанавливать урезанную версию.
Однако BusyBox используется в особых областях, например при настройке минимальной ОС Linux для встроенного устройства или устройства Интернета вещей. То же самое происходит, когда вы хотите сохранить небольшой размер образа Docker.
Надеюсь, вы лучше понимаете BusyBox. Если вам нужны какие-либо разъяснения или у вас есть предложения, сообщите мне об этом в комментариях.
Джеймс Уокер
Джеймс Уокер
Сотрудник CloudSavvy
Джеймс Уокер (James Walker) – сотрудник CloudSavvy в области ИТ. Он является основателем Heron Web, где предоставляет индивидуальные услуги по разработке программного обеспечения для малого и среднего бизнеса, специализируясь на веб-приложениях и API. Он имеет опыт работы с полным жизненным циклом разработки и работает с технологиями DevOps, такими как GitLab, Docker и Kubernetes. Подробнее.
BusyBox — это набор основных утилит Unix, упакованных в один двоичный файл. Это делает его идеальным для сред с ограниченными ресурсами, таких как встроенные устройства. Полный дистрибутив содержит почти 400 самых распространенных команд.
BusyBox имеет открытый исходный код и распространяется под лицензией GPL. Он был создан в 1995 году с намерением разместить загрузочную систему на одной дискете. Объединение команд в один двоичный файл снижает нагрузку и позволяет совместно использовать код между, казалось бы, независимыми приложениями.
Что включает в себя BusyBox?
BusyBox предоставляет удобные повседневные команды, которые часто кажутся частью вашей оболочки. Хотя пользовательские инструменты, такие как ls и cat, распространены повсеместно, на самом деле они находятся в отдельном служебном пакете, который не зависит от вашей оболочки. Многие дистрибутивы Linux доставляют эти команды через coreutils GNU, но другие вместо этого используют BusyBox.
Проект работает путем символической ссылки знакомых имен команд в /usr/bin на двоичный файл BusyBox. Затем этот исполняемый файл вызывает функцию, соответствующую имени, переданному в качестве первого аргумента.
- В BusyBox команда mkdir запускает /usr/bin/busybox mkdir
- В GNU Coreutils команда mkdir запускает /usr/bin/mkdir .
Вы можете прозрачно использовать такие команды, как mkdir , passwd , ps , tar и wget после установки BusyBox. Команды реализованы в виде «апплетов», объединенных в функционирующий дистрибутив BusyBox. Полный набор весит около 1 МБ. Апплеты являются съемными, поэтому размер двоичного файла можно уменьшить еще больше. Вы можете проверить, что доступно в вашей установке, запустив busybox без аргументов.
Поскольку BusyBox был создан для поддержки крошечных загружаемых систем, он охватывает все, что необходимо в пользовательской среде для запуска и администрирования системы POSIX. Это распространяется на минимальную реализацию инициализации, способную работать как процесс с идентификатором 1 и поддерживать системные службы. Вы можете использовать BusyBox как облегченную альтернативу обычному демону init или systemd.
Поскольку BusyBox намеренно минимален, не каждая команда реализует все функции своего аналога GNU. Вы можете найти некоторые отсутствующие флаги или поведенческие различия в необычных ситуациях. Это один из компромиссов упрощенного характера BusyBox.
Где используется BusyBox?
BusyBox можно найти везде, где требуется использование дискового пространства. Он используется минимальными операционными системами, такими как Alpine, а также специализированными сценариями, такими как встроенные устройства и мобильные оболочки.
Вполне вероятно, что устройство на основе Unix, на котором не работает обычный дистрибутив ОС, будет использовать BusyBox. Вы найдете его на своем сетевом маршрутизаторе, смарт-телевизоре, современном автомобиле и устройствах IoT. Каждый из этих параметров характеризуется необходимостью запуска основных пользовательских инструментов в среде с жесткими ограничениями ресурсов.
Поставка единого двоичного файла "все в одном" более эффективна. Это уменьшает избыточность, позволяя всем командам использовать общий код без хранения автономных библиотек на диске. Поскольку BusyBox предлагает хорошую совместимость с другими реализациями и распространяется под лицензией GPL, это обычно вариант для сред, которым требуется легкий набор утилит.
Поставщики встраиваемых устройств также выигрывают от модульной природы BusyBox. Продукту IoT может потребоваться всего несколько важных утилит для обеспечения его функциональности. Распространение модифицированного двоичного файла BusyBox освобождает еще несколько КБ дискового пространства, что может привести к значительной экономии.
Как попробовать BusyBox
Вы можете установить BusyBox, не заменяя ваши текущие утилиты. Используйте менеджер пакетов, чтобы добавить busybox , а затем добавьте выбранную команду к двоичному файлу busybox для запуска апплета:
Это гарантирует, что версия команды BusyBox будет использоваться вместо версии в пути вашей оболочки по умолчанию.
Еще один способ попробовать BusyBox — использовать его официальный образ Docker:
Если у вас установлен Docker, вы перейдете к реализации оболочки BusyBox. Вы можете запустить конкретную команду, добавив ее после имени изображения:
В BusyBox также есть эмулятор JavaScript, который позволяет вам попробовать утилиты в веб-браузере.
В большинстве дистрибутивов Linux нельзя полностью заменить coreutils на BusyBox. Специфичные для дистрибутива команды и пакеты часто запрограммированы так, чтобы ожидать наличия утилит coreutils. Ваш дистрибутив обычно отказывается удалять этот пакет, так как это может сделать систему неработоспособной, если удалить init.
Если вы хотите положиться на BusyBox, лучше всего начать с дистрибутива, в котором он используется, а затем добавить другое программное обеспечение поверх него. Добавление BusyBox вместе с coreutils, как показано выше, хорошо работает, когда вам нужно проверить, как апплет будет реагировать в конкретном сценарии.
Заключение
BusyBox – это упрощенная реализация пользовательских утилит UNIX, которая поставляется в виде одного двоичного файла. Вы можете объединить его с ядром Linux, чтобы создать работающую систему без каких-либо других зависимостей.
BusyBox оптимизирован для сред с ограниченным пространством. Это делает его идеальным для встроенных продуктов, таких как устройства IoT. Вы также можете обнаружить, что BusyBox установлен в минимальных, но в остальном универсальных дистрибутивах Linux, таких как Alpine Linux.
Независимо от того, используете ли вы BusyBox или GNU Coreutils, ваши знакомые команды, как правило, будут «просто работать» с любой реализацией. Любые возникающие проблемы обычно возникают из-за того, что BusyBox не реализует определенный редкий флаг или параметр конфигурации.
- › Как добавлять, заменять и удалять теги изображений Docker
- › Как использовать Docker для упаковки приложений CLI
- › Как развернуть веб-сервер Caddy с помощью Docker
- › Что нового в TypeScript 4.6?
- › CloudFoundry или Kubernetes: какую облачную платформу выбрать?
- › Как развернуть сервер GitLab с помощью Docker
BusyBox — это удобная служебная программа, которая предоставляет набор нескольких упрощенных инструментов командной строки оболочки UNIX и крошечных программ Linux в одном исполняемом файле размером примерно 2 МБ. Он работает в нескольких средах, таких как Android, Linux, FreeBSD и многих других. BusyBox был специально создан для встраиваемых устройств с очень ограниченным объемом памяти и места для хранения.
BusyBox называют инструментом швейцарского армейского ножа. Он предоставляет минималистичные замены утилитам оболочки, которые вы найдете в GNU shellutils , fileutils и coreutils . Его также можно найти в небольших дистрибутивах Linux, таких как Alpine Linux.
В этом руководстве мы поможем вам начать работу с Busybox в Linux. Мы также узнаем, как его установить и эффективно использовать.
Как установить BusyBox в Linux
Существует несколько способов установки BusyBox в системе Linux. Начиная с дистрибутивов на базе Debian/Ubuntu вы можете использовать диспетчер пакетов APT следующим образом.
Для других дистрибутивов, таких как ArchLinux, Fedora, RHEL, CentOS , Rocky и AlmaLinux, вам придется установить его из предварительно созданного двоичного файла. Итак, сначала загрузите 64-битный двоичный файл Busybox следующим образом.
Далее присвойте ему более простое имя. В моем случае я переименовал его в busybox
Затем назначьте ему права на выполнение с помощью команды chmod.
Чтобы запустить BusyBox и проверить версию, использование и поддерживаемые в настоящее время функции, выполните команду:
BusyBox также доступен в виде образа контейнера Docker. Но сначала убедитесь, что вы уже установили Docker.
Чтобы получить образ BusyBox, выполните команду:
Чтобы подтвердить существование изображения, выполните:
Доступ к оболочке BusyBox
Чтобы получить доступ к оболочке BusyBox из образа контейнера BusyBox, просто выполните следующую команду.
Здесь вы можете начать выполнять основные команды Linux, как обычно на терминале Linux.
В качестве альтернативы, если вы установили BusyBox из двоичного файла или с помощью диспетчера пакетов APT (в случае Debian и Ubuntu), вы можете получить доступ к оболочке следующим образом.
Попробовать BusyBox
Чтобы начать использовать инструменты или апплеты BusyBox, вам нужно указать перед командами ключевое слово busybox, находясь в оболочке BusyBox. Синтаксис:
Существует около 400 команд и программ, доступных для использования: Вы можете проверить это с помощью команды:
Чтобы вывести список файлов и папок в текущем пути к каталогу, просто выполните:
Чтобы быстро запустить веб-сервер, войдите в оболочку Busybox от имени пользователя root:
И активируйте веб-сервер, как показано.
Вы можете подтвердить, что процесс веб-сервера запущен:
Далее мы создадим простой HTML-файл, который будем использовать для тестирования веб-сервера.
Теперь откройте браузер и просмотрите локальный адрес вашего сервера. Вот что вы получите.
Заключение
С помощью BusyBox можно делать гораздо больше. Надеюсь, мы дали вам базовые знания, необходимые для начала работы с BusyBox. Мы с нетерпением ждем ваших отзывов и вопросов.
Читайте также: