Реліз мінімалістичного набору системних утиліт 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

Додати коментар або відгук