что такое busybox? и как им пользоваться.
здравствуйте.просветите пожалуйста,что такое BusyBox?я понял что это набор основных утилит linux вроде как,а как им пользоваться,как установить или что с ним вообще можно делать?заранее извиняюсь,если че-то не так написал.
dimitry80
29.10.10 07:27:45 MSD
busybox ps
busybox rm -rf /
и так далее.
Либо ln -s `which busybox` ps, те оно определит, какую утилиту запускать по cmdline.
Я так предположу, что man apt-get.
anon_666 ★
( 29.10.10 07:42:08 MSD )
Ответ на: комментарий от anon_666 29.10.10 07:42:08 MSD
ну я вот скачал файл busybox-1.17.3.tar.bz2 с сайта busybox.net,открыл его посмотрел..и что с ним делать надо?
dimitry80
( 29.10.10 07:54:30 MSD ) автор топика
Ответ на: комментарий от dimitry80 29.10.10 07:54:30 MSD
как-то его видимо установить надо что ли?
dimitry80
( 29.10.10 07:55:20 MSD ) автор топика
Ответ на: комментарий от dimitry80 29.10.10 07:54:30 MSD
darth-nerd ★
( 29.10.10 07:57:13 MSD )
Ответ на: комментарий от darth-nerd 29.10.10 07:57:13 MSD
Это ты зря, тред теперь затянется..
anon_666 ★
( 29.10.10 07:58:40 MSD )
Ответ на: комментарий от dimitry80 29.10.10 07:54:30 MSD
Какая у вас система(дистрибутив)?
anon_666 ★
( 29.10.10 07:59:33 MSD )
Это для очень маленьких инсталляций, где каждый килобайт на вес золота. Также часто используется в initrd. Для десктопа/полноценного сервера не нужно. Если вы не понимаете, зачем оно надо, вам оно не надо.
Legioner ★★★★★
( 29.10.10 08:00:21 MSD )
Ответ на: комментарий от dimitry80 29.10.10 07:54:30 MSD
>ну я вот скачал файл busybox-1.17.3.tar.bz2 с сайта busybox.net,открыл его посмотрел..и что с ним делать надо?
вот смотри. распакуй его. там есть такой файлик README. в переводе на наш язык «ЧИТАЙМЕНЯ». В нем есть все инструкции. А большими буквами он написан для того, чтобы такие как ты его не пропускали, но походу там откуда вы приходите ни глаза, ни внимательность не выдают.
зы там есть еще файлик INSTALL
gear ★★★
( 29.10.10 10:29:02 MSD )
Ответ на: комментарий от gear 29.10.10 10:29:02 MSD
после выполнения команд make menuconfig (создал,настроил что надо) и команды make мне в этой же директории откуда я запускал эти команды создался файлик busybox. я понимаю что могу его использовать для выполнения разных команд в формате,например: ./busybox uname -a и напишется мне версия ядра..а как вообще его этот файлик надо в дальнейшем использовать правильно? он по сути может заменить содержимое папки bin? (ну если ссылаться на него всегда?)
dimitry80
( 29.10.10 11:35:15 MSD ) автор топика
Ответ на: комментарий от dimitry80 29.10.10 11:35:15 MSD
Введите
busybox —help
Оно покажет, какие команды(утилиты) доступны.
anon_666 ★
( 29.10.10 11:47:40 MSD )
Ответ на: комментарий от dimitry80 29.10.10 11:35:15 MSD
>по сути может заменить содержимое папки bin?
Встроенные в busybox утилиты малофункциональны по сравнению с coreutils, так что не совсем.
anon_666 ★
( 29.10.10 11:50:13 MSD )
Ответ на: комментарий от anon_666 29.10.10 11:50:13 MSD
не соглашусь насчет «малофункциональны», они скорее минимально-необходимо функциональны )
они предельно упрощены и не включают многие опции, в отличие от их полнофункциональных аналогов из coreutils, util-linux и других пакетов, но все же типичные ключи использования там есть , для типичного применения их вполне хватает.
Sylvia ★★★★★
( 29.10.10 11:55:11 MSD )
Ответ на: комментарий от dimitry80 29.10.10 11:35:15 MSD
>может заменить содержимое папки bin
частично, хотя в типичном дистрибутиве в /bin можно найти гораздо больше чем предоставляет busybox
cфера применения — в системах где мало памяти и дискового пространства (роутеры, embedded) , второй вариант — если вы в системе что-то поломали, то для восстановления можно использовать альтернативный вариант в виде busybox , особенно если он слинкован статически.
Sylvia ★★★★★
( 29.10.10 11:58:20 MSD )
Ответ на: комментарий от Sylvia 29.10.10 11:55:11 MSD
Интересно бывают десктопные дистры с busibox на борту? и уж тогда и uGlibc (правильно назвал?) Может для большинства пользователей уже busibox достаточно?
baaba ★★★
( 29.10.10 11:59:52 MSD )
Ответ на: комментарий от Sylvia 29.10.10 11:55:11 MSD
Даже в слаке init-скрипты написаны с использованием башизмов,
те, в busybox они не отработают.
Ну и тд.
anon_666 ★
( 29.10.10 12:04:08 MSD )
Ответ на: комментарий от baaba 29.10.10 11:59:52 MSD
uclibc не полностью способна заменить glibc для всех приложений,
интересно бы было узнать. а удавалось ли кому собрать полнофунциональный десктоп на uClibc, с кде, гномом и прочими делами ? в генте есть профиль для uClibc , для желающих экспериментировать.
дистры бывают, особенно минималистичные типа tinycore, «большие» дистрибутивы тоже могли бы использовать, но если дистр при установке занимает 3 Gb и около 200-300 мб в памяти после загрузке, то нет смысла экономить на мелочах типа coreutils или util-linux, там уже ставятся полные версии.
Sylvia ★★★★★
( 29.10.10 12:05:19 MSD )
Ответ на: комментарий от anon_666 29.10.10 12:04:08 MSD
башизмы это отдельная тема вообще )
кстати slackware rescue (12-13.0) базировалась на busybox , что доставляло определенные неудобства, например с tar, который в busybox не совсем корректно сохраняет права доступа
BusyBox в Linux: что это за проект и зачем он нужен?
Сисадмины, а также пользователи UNIX/Linux-систем привыкли к работе со своей любимой командной оболочкой и к стандартным программным средствам. Но использовать их всегда и везде невозможно. На помощь придёт BusyBox — упрощенный shell с набором компактных системных средств.
Команды Linux поставляются вместе с системой при установке дистро. Некоторые из основных команд, такие как cd, kill и echo, фактически встроены в вашу оболочку. Другие, например ls, mv и cat — часть основного пакета служебных программ. Но в мире открытого кода всегда есть альтернативы, и одна из самых интересных — BusyBox.
* BusyBox — это проект, который обеспечивает простую реализацию почти 400 распространенных команд. Этот набор UNIX-утилит командной строки имеет открытый исходный код (GPL — лицензия на свободное ПО).
Подробнее о BusyBox в Linux
BusyBox реализовывает почти 400 общих команд, в том числе ls, mv, ln, mkdir, more, ps, gzip, bzip2, tar и grep. Он также содержит версию языка программирования awk, редактор потока sed, средство проверки файловой системы fsck, пакеты менеджеров rpm и dpkg. Также у BusyBox есть оболочка (sh), которая обеспечивает лёгкий доступ ко всем этим командам. Проект содержит все основные команды, необходимые интерфейсу портативных операционных систем POSIX, чтобы выполнить общие задачи обслуживания системы.
У BusyBox есть команда init, которую можно запустить как PID 1, чтобы она служила родительским процессом для всех других системных служб. Другими словами, проект можно использовать как альтернативу systemd, OpenRC, sinit, init и другим демонам запуска.
BusyBox очень маленький, менее 1 МБ, поэтому он так популярен в граничных вычислениях, встроенных системах и IoT, где дисковое пространство на вес золота. В мире контейнеров и облачных вычислений он также пользуется спросом, как основа для создания минимальных образов контейнеров Linux.
Минимализм в действии
BusyBox привлекателен из-за его минимализма, который так ценит сообщество. Все его команды собраны в один двоичный файл (busybox), а его руководство занимает всего 81 страницу, но охватывает почти 400 команд.
В качестве примера, вот вывод shadow версии useradd —help:
-b, —base-dir BASE_DIR base directory for home
-c, —comment COMMENT GECOS field of the new account
-d, —home-dir HOME_DIR home directory of the new account
-D, —defaults print or change the default config
-e, —expiredate EXPIRE_DATE expiration date of the new account
-f, —inactive INACTIVE password inactivity
-g, —gid GROUP name or ID of the primary group
-G, —groups GROUPS list of supplementary groups
-h, —help display this help message and exit
-k, —skel SKEL_DIR alternative skeleton dir
-K, —key KEY=VALUE override /etc/login.defs
-l, —no-log-init do not add the user to the lastlog
-m, —create-home create the user’s home directory
-M, —no-create-home do not create the user’s home directory
-N, —no-user-group do not create a group with the user’s name
-o, —non-unique allow users with non-unique UIDs
-p, —password PASSWORD encrypted password of the new account
-r, —system create a system account
-R, —root CHROOT_DIR directory to chroot into
-s, —shell SHELL login shell of the new account
-u, —uid UID user ID of the new account
-U, —user-group create a group with the same name as a user
А вот версия той же команды для BusyBox:
-h DIR Home directory
-g GECOS GECOS field
-s SHELL Login shell
-G GRP Group
-S Create a system user
-D Don’t assign a password
-H Don’t create home directory
-u UID User id
-k SKEL Skeleton directory (/etc/skel)
Это различие — преимущество или ограничение? Зависит от ваших предпочтений. Вы хотите иметь 20 или 10 вариантов команд? Для многих пользователей минимализм BusyBox оптимален. В целом, это хорошая минимальная среда, которую можно использовать в качестве запасного варианта или для установки более надёжных инструментов, таких как Bash, Zsh, GNU Awk и т.д.
Инсталляция BusyBox
В Linux вы можете установить BusyBox с помощью диспетчера пакетов. Например, в
Fedora и подобных:
$ sudo dnf install busybox
На Debian и производных:
$ sudo apt install busybox
В macOS используйте MacPorts или Homebrew. В Windows используйте Chocolatey.
Вы можете установить BusyBox в качестве оболочки с помощью команды chsh —shell. Мы храним BusyBox в /lib64, но его расположение зависит от того, где он установлен в вашем дистрибутиве.
$ which busybox
/lib64/busybox/busybox
$ chsh —shell /lib64/busybox/sh
Полная замена всех распространённых команд на BusyBox немного сложнее, потому что большинство дистрибутивов привязаны к определённым пакетам для определённых команд. Технически возможно заменить базовый init на init BusyBox, но ваш менеджер пакетов может не позволить вам удалить содержимое пакета init, из опасения, что вы сделаете вашу систему не загружаемой.
Тестируйте BusyBox
Вам не нужно менять оболочку на BusyBox, чтобы просто затестить её. Вы можете запустить приложение из текущей оболочки:
$ busybox sh
В вашей системе всё ещё будут установлены версии команд, которые не относятся к BusyBox. Поэтому, чтобы испытать новые инструменты, вы должны вводить команды в качестве аргументов для busybox исполняемого файла:
~ $ busybox echo $0
sh
~ $ busybox ls —help
BusyBox vX.YY.Z (2021-08-25 07:31:48 NZST) multi-call binary.
Usage: ls [-1AaCxdLHRFplinshrSXvctu] [-w WIDTH] [FILE].
List directory contents
-1 One column output
-a Include entries that start with .
-A Like -a, but exclude . and ..
-x List by lines
Для “полного” взаимодействия с BusyBox вы можете создавать символические ссылки busybox для каждой команды:
$ mkdir bbx
$ for i in $(bbx —list); do \
ln -s /path/to/busybox bbx/$i \
done
Итог
BusyBox можно использовать, в качестве:
- облегчённой среды для спасённого вами древнего компьютера,
- пользовательского пространства для встроенного устройства,
- теста новой системы инициализации или просто из любопытства.
Уже пробовали BusyBox? Поделитесь впечатлениями в комментах.
Что такое BusyBox и где он используется? – CloudSavvy ИТ
BusyBox – это набор основных программ Unix, упакованных в один двоичный файл. Это делает его идеальным для сред с ограниченными ресурсами, например для встроенных устройств. В полном дистрибутиве почти 400 самых распространенных команд.
BusyBox имеет открытый исходный код и распространяется под лицензией GPL. Он был создан в 1995 году с целью уместить загрузочную систему на одну дискету. Объединение команд в один двоичный файл снижает накладные расходы и позволяет разделять код между внешне независимыми приложениями.
Что такое BusyBox?
BusyBox предоставляет простые удобные команды, которые часто кажутся частью вашей оболочки. Хотя такие инструменты пользователя, как ls и cat распространены повсеместно, они фактически содержатся в отдельном пакете служебных программ, который не зависит от вашей оболочки. Многие дистрибутивы Linux доставляют эти команды через GNU. coreutils но другие отправляют вместо этого BusyBox.
Проект работает, символизируя известные имена команд в /usr/bin в двоичный файл BusyBox. Затем этот исполняемый файл вызывает функцию, соответствующую имени, переданному в качестве первого аргумента.
- С BusyBox приказ mkdir прогулки /usr/bin/busybox mkdir
- С GNU Coreutils – приказ mkdir прогулки /usr/bin/mkdir .
Вы можете использовать такие команды, как transparent mkdir , passwd , ps , tar , и wget после установки BusyBox. Команды реализованы в виде «апплетов», которые объединены в функционирующий дистрибутив 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 test
Это гарантирует, что версия команды 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 не реализует конкретный редкий флаг или параметр конфигурации.
Как использовать BusyBox
Команды Linux всегда воспринимаются как должное. Они поставляются вместе с системой при установке Linux, и мы часто не задаемся вопросом, зачем они нужны. Некоторые из основных команд, такие как cd, kill и echo, не всегда являются независимыми приложениями, но фактически встроены в вашу оболочку. Другие, такие как ls, mv и cat, являются частью основного пакета служебных программ (часто специально для GNU coreutils). Но в мире открытого кода всегда есть альтернативы, и одна из самых интересных — BusyBox.
Что такое BusyBox?
BusyBox — это проект с открытым исходным кодом (GPL), обеспечивающий простую реализацию почти 400 распространенных команд, включая ls, mv, ln, mkdir, more, ps, gzip, bzip2, tar и grep. Он также содержит версию языка программирования awk, редактор потока sed, средство проверки файловой системы fsck, менеджеры пакетов rpm и dpkg и, конечно же, оболочку (sh), которая обеспечивает легкий доступ ко всем этим командам. Короче говоря, он содержит все основные команды, необходимые системе POSIX для выполнения общих задач обслуживания системы, а также многих пользовательских и административных задач.
Фактически, он даже содержит команду init, которую можно запустить как PID 1, чтобы она служила родительским процессом для всех других системных служб. Другими словами, BusyBox можно использовать как альтернативу systemd, OpenRC, sinit, init и другим процессами запуска.
BusyBox очень маленький. Как исполняемый файл, он составляет менее 1 МБ, поэтому он приобрел большую популярность во встроенных устройствах, устройствах Edge и IoT, где дисковое пространство имеет первостепенное значение. В мире контейнеров и облачных вычислений он также популярен как основа для создания минимальных образов контейнеров Linux.
Минимализм
Отчасти привлекательность BusyBox заключается в его минимализме. Все его команды скомпилированы в единый двоичный файл (busybox), а его справочная система занимает всего 81 страницу, но он содержит почти 400 команд.
В качестве примера сравнения, вот результат shadow версии useradd —help :
-b, --base-dir BASE_DIR base directory for home -c, --comment COMMENT GECOS field of the new account -d, --home-dir HOME_DIR home directory of the new account -D, --defaults print or change the default config -e, --expiredate EXPIRE_DATE expiration date of the new account -f, --inactive INACTIVE password inactivity -g, --gid GROUP name or ID of the primary group -G, --groups GROUPS list of supplementary groups -h, --help display this help message and exit -k, --skel SKEL_DIR alternative skeleton dir -K, --key KEY=VALUE override /etc/login.defs -l, --no-log-init do not add the user to the lastlog -m, --create-home create the user's home directory -M, --no-create-home do not create the user's home directory -N, --no-user-group do not create a group with the user's name -o, --non-unique allow users with non-unique UIDs -p, --password PASSWORD encrypted password of the new account -r, --system create a system account -R, --root CHROOT_DIR directory to chroot into -s, --shell SHELL login shell of the new account -u, --uid UID user ID of the new account -U, --user-group create a group with the same name as a user
А вот версия той же команды для BusyBox:
-h DIR Home directory -g GECOS GECOS field -s SHELL Login shell -G GRP Group -S Create a system user -D Don't assign a password -H Don't create home directory -u UID User id -k SKEL Skeleton directory (/etc/skel)
Является ли это различие функцией или ограничением, зависит от того, предпочитаете ли вы иметь в своих командах 20 или десять вариантов. Для многих пользователей и вариантов использования минимализм BusyBox предоставляет ровно столько, сколько необходимо для работы. Для других это хорошая минимальная среда, которую можно использовать в качестве запасного варианта или в качестве основы для установки более надежных инструментов, таких как Bash, Zsh, GNU Awk и т. Д.
Установка BusyBox
В Linux вы можете установить BusyBox с помощью диспетчера пакетов. Например, в Fedora и подобных:
В Debian и подобных:
Вы можете установить BusyBox в качестве оболочки с помощью команды chsh —shell, за которой следует путь к приложению BusyBox sh. Я храню BusyBox в / lib64, но его расположение будет зависеть от того, где он установлен в вашем дистрибутиве.
$ which busybox /lib64/busybox/busybox $ chsh --shell /lib64/busybox/sh
Замена всех распространенных команд оптом на BusyBox немного сложнее, потому что большинство дистрибутивов «жестко запрограммированы», чтобы искать конкретные пакеты для определенных команд. Другими словами, технически возможно заменить init на init от BusyBox, ваш менеджер пакетов может отказать вам в удалении пакета, содержащего init, из опасения, что ваша система станет неработоспособной. Есть некоторые дистрибутивы, построенные на BusyBox, поэтому начать с нуля, является самым простым способом испытать систему, построенную на BusyBox.
Использование BusyBox
Для постоянной работы не нужно менять оболочку на BusyBox, чтобы просто протестировать ее. Вы можете запустить оболочку BusyBox из текущей оболочки:
$ busybox sh ~ $
В вашей системе будут установлены версии команд, не относящиеся к BusyBox, поэтому, чтобы испытать инструменты BusyBox, вы должны вводить команды в качестве аргументов для исполняемого файла busybox:
~ $ busybox echo $0 sh ~ $ busybox ls --help BusyBox vX.YY.Z (2021-08-25 07:31:48 NZST) multi-call binary.Usage: ls [-1AaCxdLHRFplinshrSXvctu] [-w WIDTH] [FILE].
Список содержимого каталога
-1 One column output -a Include entries that start with . -A Like -a, but exclude . and .. -x List by lines [. ]
Для «полного» взаимодействия с BusyBox вы можете создавать символические ссылки на busybox для каждой команды. Это проще, чем кажется, если вы используете цикл for:
$ mkdir bbx $ for i in $(bbx --list); do ln -s /path/to/busybox bbx/$i done
Добавьте свой каталог символических ссылок при старте в path и запустите BusyBox:
BusyBox — забавный проект и пример того, насколько минимальными могут быть вычисления. Независимо от того, используете ли вы BusyBox в качестве облегченной среды для спасенного вами древнего компьютера, в качестве пользовательского пространства для встроенного устройства, для испытания новой системы инициализации или просто в качестве любопытства, может быть заново познакомиться со старыми знакомыми, но c другой стороны новыми, командами.