Релиз минималистичного набора системных утилит BusyBox 1.30
Представлен релиз пакета BusyBox 1.30 с реализацией набора стандартных утилит UNIX, оформленных в виде единого исполняемого файла и оптимизированных для минимального потребления системных ресурсов при размере комплекта менее 1 Мб. Первый выпуск новой ветки 1.30 позиционируется как нестабильный, полная стабилизация будет обеспечена в версии 1.30.1, которая ожидается примерно через месяц. Код проекта распространяется под лицензией GPLv2.
Модульный характер BusyBox дает возможность сформировать один унифицированный исполняемый файл, содержащий в себе произвольный набор реализованных в пакете утилит (каждая утилита доступна в форме символической ссылки на данный файл). Размер, состав и функциональность коллекции утилит можно варьировать в зависимости от потребностей и возможностей встраиваемой платформы, для которой осуществляется сборка. Пакет самодостаточный, при статической сборке с uclibc для создания рабочей системы поверх ядра Linux требуется лишь создать несколько файлов устройств в директории /dev и подготовить файлы конфигурации. По сравнению с прошлым выпуском 1.29 потребление оперативной памяти типовой сборкой BusyBox 1.30 увеличилось на 7393 байт (с 941070 до 948463 байт). BusyBox является основным инструментом в борьбе с нарушением GPL в прошивках. Организации Software Freedom Conservancy (SFC) и Software Freedom Law Center (SFLC) от лица разработчиков BusyBox как через суд, так и путем заключения внесудебных соглашений неоднократно успешно воздействовала на компании, не предоставляющие доступ к исходному коду GPL-программ. В то же время автор BusyBox всячески возражает против такой защиты - считая что она ломает ему бизнес. Для производителей, которые не желают открывать исходные тексты модифицированных компонентов, в рамках проекта Toybox развивается аналог BusyBox, распространяемый под лицензией BSD (2 clause). По возможностям Toybox пока отстает от BusyBox.
В версии BusyBox 1.30 выделяются следующие изменения:
- Добавлена утилита "bc" для произвольных математических вычислений. На базе нового кода "bc" переработана и существенно расширена утилита "dc" (стековые вычисления в обратной польской записи);
- В утилиту ifupdown добавлена поддержка опции "source-directory" для размещения настроек в виде набора файлов в каталоге (например, /etc/network/interfaces.d);
- В реализацию TLS добавлена поддержка алгоритма x25519 (RFC 7748), режима FEATURE_TLS_SHA1 и шифров ECDHE-ECDSA-AES-128-CBC-SHA, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 и TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256.
- В командной оболочке ash обеспечена возможность встраивания shell-скриптов в исполняемые файлы. Налажен разбор выражений "${}";
- В командной оболочке hush оптимизирован код для проверки наличия символов в строке, улучшена обработка выражений "${var...}", "${var:+...}" и "${var/.../...}", работа "set -x" приближена к bash, обеспечена установка переменной окружения IFS, добавлена возможность запуска встроенных скриптов;
- В утилиту awk добавлена поддержка отрицательных значений параметра "NF";
- В утилиту cp добавлен режим "--reflink" (клонирование метаданных файла с созданием ссылки на уже имеющиеся данные без их фактического копирования);
- Поведение fdisk приведено в соответствие с аналогичной утилитой из набора util-linux 2.31;
- В утилиту find добавлены опции "-executable" и "-quit";
- В процессе инициализации init решены проблемы с перезагрузкой в контейнерах;
- В nbd-client добавлена поддержка нового варианта протокола и реализованы опции "-b", "-d", "-p", "-N";
- В nslookup добавлена поддержка поиска доменов (опция search в resolv.conf);
- В ntpd добавлена поддержка верификации сообщений при помощи хэшей MD5/SHA1, параметр MIN_FREQHOLD выставлен в значение 3, включен режим FEATURE_NTP_AUTH=y, минимальное значение G.FREQHOLD_cnt повышено с 8 до 10, реализована опция "-i SEC";
- В утилиту uptime добавлена опция "-s" (показ даты загрузки системы);
- В утилите free обеспечен показ доступной для использования памяти;
- В udhcp добавлена поддержка опции 211 ("reboot time");
- В chpasswd добавлен режим запуска в chroot;
- В sendmail добавлена поддержка режима аутентификации "AUTH PLAIN", в дополнение к "AUTH LOGIN";
- Проведена чистка реализации vi от дублирующегося кода;
- В lineedit добавлена поддержка автодополнения встроенных скриптов;
- В libarchive добавлена функция для распаковки встроенных данных;
- В команду busybox добавлена опция '--show SCRIPT' для отображения скриптов;
- В утилиту dd добавлена поддержка опции 'oflag=seek_bytes';
- В nproc добавлены опции "--all --ignore=N".