Представлен релиз пакета BusyBox 1.23.0 с реализацией набора стандартных утилит UNIX, оформленных в виде единого исполняемого файла и оптимизированных для минимального потребления системных ресурсов при размере комплекта менее 1 Мб. Первый выпуск новой ветки 1.23 позиционируется как нестабильный, полная стабилизация будет обеспечена в версии 1.23.1, которая ожидается примерно через месяц. Код проекта распространяется под лицензией GPLv2.
Модульный характер BusyBox даёт возможность сформировать один унифицированный исполняемый файл, содержащий в себе произвольный набор реализованных в пакете утилит (каждая утилита доступна в форме символической ссылки на данный файл). Размер, состав и функциональность коллекции утилит можно варьировать в зависимости от потребностей и возможностей встраиваемой платформы, для которой осуществляется сборка. Пакет самодостаточный, при статической сборке с uclibc для создания рабочей системы поверх ядра Linux требуется лишь создать несколько файлов-устройств в директории /dev и подготовить файлы конфигурации. По сравнению с прошлым выпуском 1.22.1 потребление оперативной памяти типовой сборкой BusyBox 1.23.0 увеличилось на 3 Кб (с 880918 до 883885 байт).
BusyBox является основным инструментом в борьбе с нарушением GPL в прошивках. Организации Software Freedom Conservancy (SFC) и Software Freedom Law Center (SFLC) от лица разработчиков BusyBox как через суд, так и путём заключения внесудебных соглашений неоднократно успешно воздействовала на компании, не предоставляющие доступ к исходному коду GPL-программ. Для производителей, которые не желают открывать исходные тексты модифицированных компонентов, в рамках проекта Toybox развивается аналог BusyBox, распространяемый под лицензией BSD (2 clause). По возможностям Toybox пока отстаёт от BusyBox.
Среди заметных улучшений:
- Добавлены новые команды fatattr и unlink;
- В ftpd добавлена поддержка аутентификации, обеспечен показ начинающихся с точки файлов в выводе команды LIST, добавлена поддержка команды XPWD;
- В vi обеспечена поддержка отката изменений (undo);
- Во wget добавлена поддержка https с использованием «openssl s_client»;
- В df добавлена опция «-T» для вывода типа файловой системы;
- В find добавлена поддержка конструкции ‘-exec … {} +’ и опции «-perm /BITS»;
- Реализован фреймворк unit-tests для проведения unit-тестирования;
- В crond добавлена возможность указания «SHELL=prog» в crontab, упрощён код для ведения лога;
- В ash и hush увеличено качество случайных значений в переменной $RANDOM, реализована очистка переменной при выполнении «local VAR», добавлена поддержка unicode в выражении ${#var};
- В awk решены проблемы с обработкой выражений «if … break ; else …»;
- В ntpd добавлена поддержка чтения настроек из /etc/ntp.conf, добавлена опция «-I IFACE»;
- В процессе init, при использовании системной библиотеки с поддержкой Unicode, обеспечено выполнение при запуске setlocale(LC_ALL, «»);
- В утилите install реализована опция «-t DIR» для указания целевой директории;
- В ip link добавлена поддержка «address ETHADDR»;
- В libarchive добавлена поддержка распаковки в mem.buffer;
- В man добавлен разбор списка директорий в $MANPATH и по умолчанию применена кодировка ascii;
- В sendmail параметр «-f» переведён в число опциональных (по умолчанию в качестве отправителя указывается текущий логин и домен);
- В tftpd добавлена поддержка полных 512-байтовых запросов;
- В xargs добавлена поддержка опций «-I» и «-i» для замены строк;
- В ping добавлена опция «-p» для указания шаблона заполнения 16-байтовой области данных в пакете;
- В udhcp добавлена поддержка префикса PXELINUX и возможность тонкой настройки arpping;
- В ifupdown добавлена поддержка семейства адресов ‘link’;
- В wapon добавлена опция «-d» для включения поддержки discard;
- В su обеспечена задержка после ввода неправильного пароля;
- Переписана реализация команды which.