Релиз минималистичного набора системных утилит BusyBox 1.31

Представлен релиз пакета BusyBox 1.31 с реализацией набора стандартных утилит UNIX, оформленных в виде единого исполняемого файла и оптимизированных для минимального потребления системных ресурсов при размере комплекта менее 1 Мб. Первый выпуск новой ветки 1.31 позиционируется как нестабильный, полная стабилизация будет обеспечена в версии 1.31.1, которая ожидается примерно через месяц. Код проекта распространяется под лицензией GPLv2.

Модульный характер BusyBox даёт возможность сформировать один унифицированный исполняемый файл, содержащий в себе произвольный набор реализованных в пакете утилит (каждая утилита доступна в форме символической ссылки на данный файл). Размер, состав и функциональность коллекции утилит можно варьировать в зависимости от потребностей и возможностей встраиваемой платформы, для которой осуществляется сборка. Пакет самодостаточный, при статической сборке с uclibc для создания рабочей системы поверх ядра Linux требуется лишь создать несколько файлов устройств в директории /dev и подготовить файлы конфигурации. По сравнению с прошлым выпуском 1.30 потребление оперативной памяти типовой сборкой BusyBox 1.31 уменьшилось на 86 байт (с 1008478 до 1008392 байт).

BusyBox является основным инструментом в борьбе с нарушением GPL в прошивках. Организации Software Freedom Conservancy (SFC) и Software Freedom Law Center (SFLC) от лица разработчиков BusyBox как через суд, так и путём заключения внесудебных соглашений неоднократно успешно воздействовала на компании, не предоставляющие доступ к исходному коду GPL-программ. В то же время автор BusyBox всячески возражает против такой защиты — считая что она ломает ему бизнес.

В версии BusyBox 1.31 выделяются следующие изменения:

  • Добавлены новые команды: ts (реализация клиента и сервера для протокола TSP (Time-Stamp Protocol)) и i2ctransfer (создание и отправка сообщений I2C);
  • В udhcp добавлена поддержка опций DHCP 100 (сведения о часовом поясе) и 101 (название часового пояса в БД TZ) для IPv6;
  • В udhcpd добавлена поддержка статических привязок имён хостов к клиентам;
  • В командных оболочках ash и hush реализованы числовые литералы «BASE#nnnn». Приведена к совместимости с bash реализация команды ulimit, в том числе добавлены опции »-i RLIMIT_SIGPENDING» и »-q RLIMIT_MSGQUEUE». Добавлена поддержка «wait -n». Добавлены совместимые с bash переменные EPOCH;
  • В командной оболочке hush реализована переменная »$-», в которой перечислены активированные по умолчанию опции командной оболочки;
  • В bc из upstream перенесён код для передачи значений по ссылке, добавлена поддержка void-функций и возможность работы со значениями ibase до 36;
  • В brctl все команды переведены на работу с использованием псевдо-ФС /sys;
  • Объединён код утилит fsync и sync;
  • Усовершенствована реализация httpd. Улучшена обработка HTTP-заголовков и работа в режиме прокси. В список MIME-типов включены SVG и JavaScript;
  • В losetup добавлена опция »-c» (принудительная перепроверка размера файла, связанного c loop-устройством), а также опция для сканирования разделов. В mount и losetup обеспечена поддержка работы с использованием /dev/loop-control;
  • В ntpd значение SLEW_THRESHOLD увеличено с 0.125 до 0.5;
  • В sysctl добавлена поддержка присвоения пустых значений;
  • В watch добавлена поддержка дробных значений в опции »-n SEC»;
  • Добавлена возможность запуска mdev в форме фонового процесса;
  • В утилите wget реализован флаг »-o» для определения файла для записи лога. Добавлены уведомления о начале и завершении загрузки;
  • В telnetd добавлена поддержка команды AYT IAC;
  • В vi добавлена команда 'dG'(удаление содержимого от текущей строки до конца файла);
  • В команду dd добавлена опция 'oflag=append';
  • В утилиту top добавлен флаг '-H' для включения режима сканирования отдельных потоков.




Кроме того, две недели назад состоялся релиз Toybox 0.8.1, аналога BusyBox, развиваемого бывшим мэйнтейнером BusyBox и распространяемого под лицензией BSD. Основным назначением Toybox является предоставление производителям возможности использования минималистичного набора стандартных утилит без открытия исходных текстов модифицированных компонентов. По возможностям Toybox пока отстаёт от BusyBox, но уже реализовано 188 базовых команд из 220 запланированных.

Из новшеств Toybox 0.8.1 можно отметить:

  • Достигнут уровень функциональности, достаточный для сборки Android в окружении на базе утилит Toybox.
  • В состав включены новые команды mcookie и devmem, из тестовой ветки перенесены переписанные команды tar, gunzip и zcat.
  • Для тестирования предложена новая реализация vi.
  • В команду find добавлена поддержка опций »-wholename/-iwholename»,»-printf» и »-context»;
  • В grep добавлена опция »--exclude-dir»;
  • В echo появилась поддержка опции »-E».
  • В mount добавлена поддержка «UUID».
  • В команду date добавлен учёт часового пояса, заданного в переменной окружения TZ.
  • В sed добавлена поддержка относительных диапазонов (+N).
  • Улучшена читаемость вывода ps, top и iotop.

© OpenNet