Veröffentlichung eines minimalistischen Satzes von Systemdienstprogrammen BusyBox 1.35

Die Veröffentlichung des BusyBox 1.35-Pakets wird mit der Implementierung einer Reihe von Standard-UNIX-Dienstprogrammen vorgestellt, die als einzelne ausführbare Datei konzipiert und für minimalen Verbrauch von Systemressourcen mit einer Satzgröße von weniger als 1 MB optimiert sind. Die erste Veröffentlichung des neuen Zweigs 1.35 ist als instabil positioniert; die vollständige Stabilisierung wird in Version 1.35.1 bereitgestellt, die in etwa einem Monat erwartet wird. Der Projektcode wird unter der GPLv2-Lizenz vertrieben.

Der modulare Charakter von BusyBox ermöglicht die Erstellung einer einheitlichen ausführbaren Datei, die einen beliebigen Satz von im Paket implementierten Dienstprogrammen enthält (jedes Dienstprogramm ist in Form eines symbolischen Links zu dieser Datei verfügbar). Die Größe, Zusammensetzung und Funktionalität der Sammlung von Dienstprogrammen kann je nach den Anforderungen und Fähigkeiten der eingebetteten Plattform, für die die Montage durchgeführt wird, variiert werden. Das Paket ist eigenständig; wenn es statisch mit uclibc erstellt wird, müssen Sie zum Erstellen eines funktionierenden Systems auf dem Linux-Kernel lediglich mehrere Gerätedateien im Verzeichnis /dev erstellen und Konfigurationsdateien vorbereiten. Im Vergleich zur Vorgängerversion 1.34 stieg der RAM-Verbrauch der typischen BusyBox 1.35-Assembly um 1726 Byte (von 1042344 auf 1044070 Byte).

BusyBox ist das wichtigste Tool im Kampf gegen GPL-Verstöße in der Firmware. Die Software Freedom Conservancy (SFC) und das Software Freedom Law Center (SFLC) haben im Auftrag der BusyBox-Entwickler wiederholt erfolgreich Einfluss auf Unternehmen genommen, die keinen Zugriff auf den Quellcode von GPL-Programmen gewähren, sowohl gerichtlich als auch außergerichtlich -gerichtliche Vereinbarungen. Gleichzeitig lehnt der Autor von BusyBox einen solchen Schutz entschieden ab – da er glaubt, dass er sein Geschäft ruiniert.

Die folgenden Änderungen werden in BusyBox 1.35 hervorgehoben:

  • В утилите find реализована опция «-samefile имя» для проверки использованием в файле того же inode, что и у файла с указанным именем. Унифицирован код для сравнения времени и добавлены опции «-amin», «-atime», «-cmin» и «-ctime» для проверки времени доступа и создания файла.
  • В утилиту mktemp добавлена опция «—tmpdir» для указания базового каталога, относительно которого вычисляются пути, связанные с временными файлами.
  • В утилиту cpio добавлены опции «—ignore-devno» для игнорирования реального номера устройства (всегда записывается 0) и «—renumber-inodes» для перенумерования inode перед помещением в архив.
  • В утилите awk налажена работа выражения «printf %%».
  • Добавлено около десятка изменений в библиотеку libbb. Улучшена совместимость realpath с аналогом из набора coreutils.
  • Предложена большая порция исправлений в командных оболочках ash и hush, нацеленных на улучшение совместимости с другими оболочками. В ash добавлена поддержка bash-подобных ERR trap, set -E и $FUNCNAME, а также ускорено извлечение строк при помощи выражения «${s:}». В ash и hush ускорено выполнение операций «${x//\*/|}».
  • В утилите basename реализованы опции «-a» для передачи нескольких имён при одном вызове и «-s SUFFIX» для удаления конечных символов «SUFFIX».
  • В утилиту blkdiscard добавлена опция «-f» (force).
  • В httpd прекращена отправка заголовков Last-Modified / ETag / Content-Length для страниц с ошибками.
  • В httpd и telnetd предоставлена возможность изменения сетевого порта по умолчанию.
  • В tar устранена уязвимость, приводящая к расходованию всей доступной памяти при обработке архивов с очень длинными именами файлов.
  • В коде TLS переделана реализация P256 и x25519.
  • В утилите wget реализована опция «—post-file» для отправки файлов и разрешено настраивать содержимое заголовка Content-Type для опций «—post-data» и «—post-file».
  • В утилиту timeout добавлена поддержка опции «-k KILL_SECS» для отправки сигнала SIGKILL, если команда не завершилась в течение дополнительных KILL_SECS секунд.
  • В утилиту ip добавлена поддержка установки параметра netns для устройств.
  • В утилите cal реализована опция «-m» для отображения заданного месяца.
  • В утилитах date и touch разрешено указание смещения часового пояса в датах.
  • В редакторе vi добавлена поддержка файла ~/.exrc, изменена обработка «-c» и EXINIT.
  • В утилите ed результат выполнения команд read/write приведён в соответствие со спецификацией POSIX-1.2008. Добавлена поддержка опции «-p».
  • В утилиту cmp добавлена опция «-n N» для ограничения сравнения N-байтами.

Кроме того, несколько дней назад состоялся релиз Toybox 0.8.6, аналога BusyBox, развиваемого бывшим мэйнтейнером BusyBox и распространяемого под лицензией 0BSD. Основным назначением Toybox является предоставление производителям возможности использования минималистичного набора стандартных утилит без открытия исходных текстов модифицированных компонентов. По возможностям Toybox пока отстаёт от BusyBox, но уже реализовано 296 базовых команд (217 полностью и 83 частично) из 374 запланированных.

Из новшеств Toybox 0.8.6 можно отметить улучшение скриптов для создания системных образов, добавление команд sha256sum, sha224sum, sha384sum, sha512sum, linux32, strace и hexdump. Реализованы опции «date -s», «pmap -p», «tail -F -s», «kill -0″, reboot/halt/poweroff -d», «tail —bytes —lines», «i2cdetect -q», «find -quit -lname -ilname -d», «cut -d $’\n'», «cut -nb», «cpio —ignore-devno —renumber-inodes», «tar —selinux», «split -n», «grep -L».

Source: opennet.ru

Kommentar hinzufügen