Έκδοση ενός μινιμαλιστικού συνόλου βοηθητικών προγραμμάτων συστήματος BusyBox 1.35

Η κυκλοφορία του πακέτου BusyBox 1.35 παρουσιάζεται με την υλοποίηση ενός συνόλου τυπικών βοηθητικών προγραμμάτων UNIX, σχεδιασμένα ως ένα μόνο εκτελέσιμο αρχείο και βελτιστοποιημένα για ελάχιστη κατανάλωση πόρων συστήματος με σύνολο μεγέθους μικρότερο από 1 MB. Η πρώτη έκδοση του νέου κλάδου 1.35 τοποθετείται ως ασταθής· η πλήρης σταθεροποίηση θα παρέχεται στην έκδοση 1.35.1, η οποία αναμένεται σε περίπου ένα μήνα. Ο κώδικας του έργου διανέμεται με την άδεια GPLv2.

Η αρθρωτή φύση του BusyBox καθιστά δυνατή τη δημιουργία ενός ενοποιημένου εκτελέσιμου αρχείου που περιέχει ένα αυθαίρετο σύνολο βοηθητικών προγραμμάτων που υλοποιούνται στο πακέτο (κάθε βοηθητικό πρόγραμμα είναι διαθέσιμο με τη μορφή συμβολικού συνδέσμου σε αυτό το αρχείο). Το μέγεθος, η σύνθεση και η λειτουργικότητα της συλλογής βοηθητικών προγραμμάτων μπορεί να ποικίλλει ανάλογα με τις ανάγκες και τις δυνατότητες της ενσωματωμένης πλατφόρμας για την οποία πραγματοποιείται η συναρμολόγηση. Το πακέτο είναι αυτόνομο· όταν δημιουργείται στατικά με το uclibc, για να δημιουργήσετε ένα λειτουργικό σύστημα πάνω από τον πυρήνα του Linux, χρειάζεται μόνο να δημιουργήσετε πολλά αρχεία συσκευής στον κατάλογο /dev και να προετοιμάσετε αρχεία διαμόρφωσης. Σε σύγκριση με την προηγούμενη έκδοση 1.34, η κατανάλωση RAM της τυπικής διάταξης BusyBox 1.35 αυξήθηκε κατά 1726 byte (από 1042344 σε 1044070 byte).

Το BusyBox είναι το κύριο εργαλείο για την καταπολέμηση των παραβιάσεων της GPL στο υλικολογισμικό. Το Software Freedom Conservancy (SFC) και το Software Freedom Law Center (SFLC), εκ μέρους των προγραμματιστών BusyBox, έχουν επανειλημμένα επηρεάσει επιτυχώς εταιρείες που δεν παρέχουν πρόσβαση στον πηγαίο κώδικα των προγραμμάτων GPL, τόσο μέσω δικαστηρίων όσο και εκτός -συμφωνίες δικαστηρίου. Την ίδια στιγμή, ο συγγραφέας του BusyBox αντιτίθεται σθεναρά σε μια τέτοια προστασία - πιστεύοντας ότι καταστρέφει την επιχείρησή του.

Οι ακόλουθες αλλαγές επισημαίνονται στο BusyBox 1.35:

  • В утилите 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».

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο