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

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

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

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

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

  • Добавлена новая утилита ascii c интерактивной таблицей имён ASCII-символов.
  • Добавлена новая утилита crc32 для подсчёта контрольных сумм.
  • Во встроенном http-сервере реализована поддержка методов DELETE, PUT и OPTIONS.
  • В udhcpc предоставлена возможность смены имени сетевого интерфейса по умолчанию.
  • В реализации протоколов TLS появилась поддержка эллиптических кривых secp256r1 (P256)
  • Продолжено развитие командных оболочек ash и hush. В hush обработка команды ^D приведена в соответствие с поведением ash и bash, реализована специфичная для bash конструкция $’str’, проведена оптимизация операций замены ${var/pattern/repl}.
  • Внесена большая порция исправлений и улучшений в реализацию утилиты awk.
  • В утилиты base32 и base64 добавлена опция “-i” для игнорирования некорректных символов.
  • В утилитах bc и dc обработка переменных окружения BC_LINE_LENGTH и DC_LINE_LENGTH приближена к утилитам GNU.
  • В утилиту blockdev добавлены опции –getra и –setra.
  • В утилиты chattr и lsattr добавлена опция “-p”. В lsattr расширено число поддерживаемых флагов ФС ext2.
  • В утилиту cp добавлены опции “-n” (запрет перезаписи) и “-t DIR” (задание целевого каталога).
  • В cpio налажена работа конструкции “cpio -d -p A/B/C”.
  • В утилиту df добавлена опция “-t TYPE” (ограничение вывода определённым типом ФС).
  • В утилиту du добавлена опция -b (эквивалент ‘–apparent-size –block-size=1’).
  • В утилиту env добавлена опция “-0” (завершение каждой строки символом с нулевым кодом).
  • В утилиту free добавлена опция “-h” (вывод в читаемом виде).
  • В утилиту ionice добавлена опция “-t” (игнорирование сбоев).
  • В утилите login реализована поддержка переменной окружения LOGIN_TIMEOUT.
  • В утилиту mv добавлены опции “-t” (определение целевого каталога для перемещения) и “-T” (обработка второго аргумента как файла).
  • В утилиту shred добавлена опция “-s SIZE” (число очищаемых байт).
  • В утилиту taskset добавлена опция “-a” (применение привязки к CPU для всех потоков процесса).
  • В утилитах timeout, top, watch и ping реализована поддержка нецелых значений (NN.N).
  • В утилиту uniq добавлена опция “-z” (использование символа с нулевым кодом в качестве разделителя).
  • В утилиту unzip добавлена опция “-t” (проверка архива).
  • В редакторе vi разрешено использование регулярных выражений в команде ‘:s’. Добавлен параметр expandtab. Улучшены реализации перемещения между параграфами, выбора диапазонов и отката изменений.
  • В утилите xxd реализованы опции -i (вывод в стиле Си) и “-o DISPLAYOFFSET”.
  • В утилите wget разрешена обработка кодов HTTP 307/308 для редиректа. Добавлена опция FEATURE_WGET_FTP для включения/отключения поддержки FTP.
  • В утилите dd добавлена опция “iflag=count_bytes”.
  • В утилите cut реализованы совместимые с инструментарием toybox опции “-O OUTSEP”, “-D” и “-F LIST”.
Release. Ссылка here.