Пускане на минималистичен пакет системни утилити BusyBox 1.35

Представен е релиз на пакета BusyBox 1.35, който включва набор от стандартни UNIX утилити, комбинирани в един изпълним файл и оптимизирани за минимално потребление на системни ресурси при размер на комплекта под 1 МБ. Първият релиз на новата версия 1.35 е обозначен като нестабилен; пълната стабилизация ще бъде предоставена в версия 1.35.1, която се очаква след около месец. Кодът на проекта се разпространява под лицензия GPLv2.

Модулната структура на BusyBox позволява създаването на един унифициран изпълним файл, съдържащ произволен набор от реализирани в пакета утилити (всяка утилита е достъпна като символична връзка към този файл). Размерът, съставът и функционалността на колекцията от утилити могат да варират в зависимост от нуждите и възможностите на вградената платформа, за която се извършва компилацията. Пакетът е самодостатъчен, при статична компилация с uclibc за създаване на работна система над ядрото Linux е необходимо да се създадат само няколко устройственни файла в директорията /dev и да се подготвят конфигурационните файлове. В сравнение с предишния релиз 1.34, потреблението на оперативна памет на стандартната компилация на BusyBox 1.35 е увеличено с 1726 байта (от 1042344 до 1044070 байта).

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

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster