BusyBox: швейцарский нож для встраиваемых Linux-систем::Журнал СА 7.2007
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

Разбор полетов  

Ошибок опыт трудный

Как часто мы легко повторяем, что не надо бояться совершать ошибки, мол,

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6141
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6853
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4135
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 2976
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3781
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3789
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6282
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3134
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3433
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7246
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10616
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12334
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13966
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9098
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7052
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5361
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4592
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3400
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3127
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3378
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 2999
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 BusyBox: швейцарский нож для встраиваемых Linux-систем

Архив номеров / 2007 / Выпуск №7 (56) / BusyBox: швейцарский нож для встраиваемых Linux-систем

Рубрика: Администрирование /  Администрирование

Дмитрий Шурупов

BusyBox: швейцарский нож для встраиваемых Linux-систем

Системные администраторы и пользователи UNIX/Linux-систем, несомненно, привыкли к работе со своей любимой командной оболочкой и к стандартным программным средствам. Но их повсеместное использование не всегда возможно. И тогда на помощь приходит BusyBox – упрощенный shell с набором компактных системных средств.

BusyBox: что это такое и зачем вообще нужно?

Несмотря на безудержный рост графических оболочек и «дружелюбных» интерфейсов, представить себе UNIX без командной строки и основных утилит в наши дни невозможно. Многочисленные интерпретаторы и базовые системные утилиты не стоят на месте, растут и развиваются, что неизбежно ведет и к увеличению их объема. В то же время существуют сферы деятельности, в которых компактность любых приложений по очевидным причинам очень важна, например, во встраиваемых устройствах. Вместе с тем во многих случаях не требуется значительная часть той функциональности, которая присуща базовым утилитам «общего назначения».

Для решения этих проблем еще в середине 90-х Брюсом Перенсом (Bruce Perens) был создан пакет BusyBox [1]. Сейчас проект позиционируется как «швейцарский нож для встраиваемых Linux-систем» и в первую очередь ориентирован на использование в небольших дистрибутивах GNU/Linux. Распространяется под второй версией лицензии GNU GPL.

BusyBox представляет собой единственный исполняемый файл, при запуске которого загружается полноценный командный интерфейс. Как гласит официальная документация BusyBox, для формирования минимальной версии GNU/Linux к этому достаточно добавить лишь ядро ОС и каталоги /etc, /dev.

Установка BusyBox

Бинарные пакеты с BusyBox для популярных дистрибутивов GNU/Linux доступны в соответствующих репозиториях, а архив с исходниками – на сайте проекта [2]. В статье рассматривается релиз BusyBox v1.5.0. Одна из главных целей, которую преследуют разработчики BusyBox, – оптимизированность и компактность кода – расчет на ограниченность памяти. Это не только вновь говорит о плюсах его использования во встраиваемых устройствах, но и хорошо сочетается с другим подходом в духе UNIX way: высокий уровень настраиваемости (в бинарный файл BusyBox можно включить только необходимые компоненты).

Еще на стадии компиляции (а точнее, до самого процесса сборки) можно выбрать только те базовые утилиты, которые нужны. Реализовано это в стиле настройки ядра Linux. Вместо более распространенного среди собираемых с automake приложений способа в виде скрипта «configure» для предварительной конфигурации BusyBox нужно выполнить одну из следующих команд:

$ make config

$ make menuconfig

$ make defconfig

Аргумент «config» инициирует запуск «вопросника» со списком доступных опций и базовых утилит, предлагающего проставлять «Y» или «N» на месте нужных и ненужных возможностей соответственно.

Аргумент «menuconfig» вызывает более удобную конфигурацию в виде меню с интерфейсом на базе curses (см. рис. 1).

Рисунок 1. Установка BusyBox: «make menuconfig» на манер Linux-ядра

Рисунок 1. Установка BusyBox: «make menuconfig» на манер Linux-ядра

Аргумент «defconfig» автоматически включает все доступные опции, подготавливая к сборке BusyBox «общего назначения».

Так же, как и в случае с ядром Linux, после настройки создается конфигурационный файл .config, к которому можно затем всегда возвращаться командой:

$ make oldconfig

Это актуально при переходе на более новую версию BusyBox со старой конфигурацией (чтобы при настройке работать только с появившимися в очередном релизе опциями).

По умолчанию, если до вызова «make menuconfig» не существовал файл .config, make автоматически предварительно запускается с аргументом «defconfig». Таким образом, пользователю останется только отключить ненужные возможности. Предусмотрен и обратный вариант: запуск make с «allnoconfig» отключает все опции, чтобы после этого можно было выбрать только то, что нужно.

Далее все традиционно:

$ make

$ sudo make install

Работа с BusyBox

Запуск оболочки BusyBox можно осуществить командой:

$ bb

Для разового вызова какой-либо функции (как правило, одна функция BusyBox ограниченно реализует возможности одной из утилит из состава GNU coreutils, util-linux и других стандартных пакетов) можно воспользоваться командой:

$ busybox <функция> [аргументы]

То есть, например:

$ busybox ls -l /

покажет в текущей оболочке (например, bash) результат выполнения команды «ls -l /» в BusyBox (см. рис .2).

Рисунок 2. BusyBox в работе: ls

Рисунок 2. BusyBox в работе: ls

Полный список доступных функций в установленной версии BusyBox можно посмотреть в выводе команды «busybox» без аргументов. Просмотр помощи по конкретной функции осуществляется так:

$ busybox --help <функция>

Это приобретает особую актуальность ввиду того, что базовые утилиты в составе BusyBox ограничены в своих возможностях, поэтому список доступных флагов будет отличаться от тех, что все привыкли видеть в стандартных средствах.

Начинка BusyBox

Помимо альтернативного набора coreutils (ls, cat, mv, cp, rm, chmod, df, ln, date, wc, nice, test...) в состав BusyBox входит и множество других программ.

Среди них, во-первых, стоит выделить наличие нескольких минималистских командных оболочек: ash (60 Кб; ответвление от dash из Debian, основанного на ash из NetBSD; рекомендован для использования с BusyBox), hush (18 Кб; понимает грамматику Bourne shell), lsh (всего 10 Кб; только самый простой функционал), msh (30 Кб; minix shell).

Для работы с архивами есть такие утилиты, как tar, gzip, bzip2, ar, zip, rpm, dpkg. Для обработки содержимого файлов есть как awk, sed, patch, так и текстовые редакторы ed и vi.

Рисунок 3. Исполнение элементарных скриптов в BusyBox

Рисунок 3. Исполнение элементарных скриптов в BusyBox

Широко представлены сетевые средства: и клиентские, и серверные. Среди демонов выделю httpd (с поддержкой авторизации, CGI), dnsd, telnetd, inetd, udhcpd. Для FTP есть ftpget, ftpput и клиент tftp. Кроме того, присутствует и собственная версия GNU wget. Из прочих стандартных утилит: ifconfig, route, traceroute, ping/ping6, netstat, nslookup, arp и arping.

Кроме того, примечательны реализации hdparm для просмотра/установки параметров жесткого диска, syslogd для ведения логов, средств работы с системными учетными записями (adduser/addgroup, deluser/delgroup, login, passwd, su), системы init.

Особого смысла в перечислении всех функций BusyBox не вижу, поэтому ограничусь простой статистикой. В моей сборке BusyBox из портежа Gentoo Linux представлена 241 функция (но в нее входит далеко не все, что реализовано в рамках этого проекта). Если рассматривать для примера ls, то в версии BusyBox для этой утилиты доступно 26 флагов, а в оригинальной в моем случае (ls из GNU coreutils 6.7) – 55 (не считая «помощи» и «версии»). Среди отсутствующих флагов в первой можно выделить: -Q (названия в кавычках), -m (список через запятую), -U и -f (вывод списка без сортировки). Другие, на мой взгляд, еще менее значительны. Общие тенденции, думаю, очевидны.

Рисунок 4. Сетевые средства в «make menuconfig» BusyBox

Рисунок 4. Сетевые средства в «make menuconfig» BusyBox

Подводя итоги

Насколько существенно отсутствие тех или иных возможностей, определяется общими предъявляемыми требованиями и конкретными задачами. По субъективным же впечатлениям, в BusyBox-редакциях базовых утилит представлены все основные, т.е. повседневно используемые (большинством в большинстве же случаев) возможности. Конечно, большинство – не все, и задачи бывают разные, но в целом – заслуга авторов налицо. Им действительно удалось отобрать необходимое.

При этом важно учитывать специфику BusyBox, а именно – его позиционируемое и фактическое ключевое предназначение: использование в окружениях с серьезными ограничениями в памяти, не нуждающихся в той расширенной функциональности, которую представляют современные базовые системные утилиты.

И со своими задачами BusyBox справляется отлично. Вместе с тем проект активно развивается: с января 2006 года уже вышло 16 релизов, в 5 из которых были представлены значительные нововведения (версии 1.x.0). Другим показателем роста BusyBox является тот факт, что все больше разработчиков в своих продуктах предпочитают его применение другим возможным вариантам.

Приложение

Где используется BusyBox

Примеры практического использования BusyBox при создании дистрибутива вы можете найти в статье Всеволода Стахова «Создание загрузочных дискет и CD-дисков Linux» в №6 за 2003 г. или классических публикациях Брюса Перенса (Bruce Perens) «Building Tiny Linux Systems with Busybox», доступных в Интернете (часть 1: http://www.linuxjournal.com/article/4335, часть 2:http://www.linuxjournal.com/article/4395).

BusyBox нашел применение в таких системах, как Familiar Linux (для КПК) и MoviX (популярный компактный дистрибутив с набором мультимедийных Open Source-решений), в установщиках Debian, Gentoo, Red Hat, Mandriva и других проектов, а также во многих Linux-основанных устройствах (Sharp Zaurus, роутеры, AP...).

В OpenWRT, (смотрите стр.42-52 журнала), в качестве командной оболочки и базовых системных средств используется именно BusyBox. Более подробный список продуктов, использующих BusyBox, доступен на сайте http://www.busybox.net/products.html.

  1. http://www.busybox.net.
  2. http://www.busybox.net/download.html.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru