Wydano wydanie pakietu BusyBox 1.35, zawierające zestaw standardowych narzędzi UNIX, spakowanych w jeden plik wykonywalny, zoptymalizowany pod kątem minimalnego zużycia zasobów systemowych przy rozmiarze pakietu wynoszącym poniżej 1 MB. Pierwsza wersja nowej gałęzi 1.35 jest oznaczona jako niestabilna, pełna stabilizacja zostanie zapewniona w wersji 1.35.1, która jest spodziewana za około miesiąc. Kod projektu jest dystrybuowany na licencji GPLv2.
Modularna natura BusyBox pozwala na utworzenie jednego zunifikowanego pliku wykonywalnego, zawierającego dowolny zestaw narzędzi zaimplementowanych w pakiecie (każde narzędzie jest dostępne jako symboliczne łącze do tego pliku). Rozmiar, skład i funkcjonalność kolekcji narzędzi mogą być dostosowywane w zależności od potrzeb i możliwości platformy wbudowanej, dla której wykonuje się kompilację. Pakiet jest samowystarczalny, przy statycznej kompilacji z uclibc do stworzenia działającego systemu na jądrze Linux wystarczy utworzyć kilka plików urządzeń w katalogu /dev i przygotować pliki konfiguracyjne. W porównaniu z poprzednim wydaniem 1.34, zużycie pamięci RAM w standardowej kompilacji BusyBox 1.35 wzrosło o 1726 bajtów (z 1042344 do 1044070 bajtów).
BusyBox jest głównym narzędziem w walce z naruszeniem GPL w oprogramowaniu układowym. Organizacje Software Freedom Conservancy (SFC) i Software Freedom Law Center (SFLC) w imieniu twórców BusyBox wielokrotnie skutecznie wpływały na firmy, które nie udostępniają kodu źródłowego programów GPL, zarówno poprzez postępowania sądowe, jak i zawieranie pozasądowych porozumień. Z drugiej strony, autor BusyBox stanowczo sprzeciwia się takiej ochronie, uważając, że niszczy to jego biznes.
W wersji BusyBox 1.35 wyróżniają się następujące zmiany:
- W narzędziu find wprowadzono opcję „-samefile ” do sprawdzania, czy dany plik używa tego samego inode, co plik o wskazanej nazwie. Ujednolicono kod porównujący czas i dodano opcje „-amin”, „-atime”, „-cmin” i „-ctime” do sprawdzania czasu dostępu i utworzenia pliku.
- Do narzędzia mktemp dodano opcję „—tmpdir” do wskazania bazowego katalogu, względem którego obliczane są ścieżki związane z plikami tymczasowymi.
- Do narzędzia cpio dodano opcje „—ignore-devno” do ignorowania rzeczywistego numeru urządzenia (zawsze zapisywane jest 0) oraz „—renumber-inodes” do ponownego numerowania inode przed umieszczeniem w archiwum.
- W narzędziu awk poprawiono działanie wyrażenia „printf %%”.
- Dodano około dziesięciu zmian w bibliotece libbb. Ulepszono kompatybilność realpath z analogiem z zestawu coreutils.
- Zaproponowano dużą porcję poprawek w powłokach ash i hush, mających na celu poprawę kompatybilności z innymi powłokami. W ash dodano wsparcie dla bash-podobnych ERR trap, set -E oraz $FUNCNAME, a także przyspieszono wydobywanie ciągów za pomocą wyrażenia «${s:}». W ash i hush przyspieszono wykonanie operacji «${x//\*|}».
- W narzędziu basename zaimplementowano opcje «-a» do przekazywania wielu nazw w jednej wywołaniu oraz «-s SUFFIX» do usuwania końcowych znaków «SUFFIX».
- Do narzędzia blkdiscard dodano opcję «-f» (force).
- W httpd zakończono wysyłanie nagłówków Last-Modified / ETag / Content-Length dla stron z błędami.
- W httpd i telnetd umożliwiono zmianę domyślnego portu sieciowego.
- W tar usunięto lukę bezpieczeństwa, prowadzącą do wyczerpania całej dostępnej pamięci podczas przetwarzania archiwów z bardzo długimi nazwami plików.
- W kodzie TLS przerobiono implementację P256 i x25519.
- W narzędziu wget zaimplementowano opcję «—post-file» do wysyłania plików i zezwolono na konfigurowanie zawartości nagłówka Content-Type dla opcji «—post-data» i «—post-file».
- Do narzędzia timeout dodano wsparcie dla opcji «-k KILL_SECS» do wysyłania sygnału SIGKILL, jeśli polecenie nie zakończyło się w ciągu dodatkowych KILL_SECS sekund.
- W narzędziu ip dodano wsparcie dla ustawienia parametru netns dla urządzeń.
- W narzędziu cal zaimplementowano opcję «-m» do wyświetlania konkretnego miesiąca.
- W narzędziach date i touch zezwolono na wskazanie przesunięcia strefy czasowej w datach.
- W edytorze vi dodano wsparcie dla pliku ~/ .exrc, zmieniono przetwarzanie «-c» i EXINIT.
- W narzędziu ed wynik wykonania poleceń read/write dostosowano do specyfikacji POSIX-1.2008. Dodano wsparcie dla opcji «-p».
- W narzędziu cmp dodano opcję «-n N» do ograniczenia porównania N bajtami.
Ponadto, kilka dni temu odbyła się premiera Toybox 0.8.6, odpowiednika BusyBox, rozwijanego przez byłego maintenara BusyBox i dystrybuowanego na licencji 0BSD. Głównym celem Toybox jest umożliwienie producentom korzystania z minimalistycznego zestawu standardowych narzędzi bez otwierania kodów źródłowych zmodyfikowanych komponentów. Pod względem możliwości Toybox nadal ustępuje BusyBox, ale już zaimplementowano 296 podstawowych poleceń (217 całkowicie i 83 częściowo) z 374 zaplanowanych.
Wśród nowości Toybox 0.8.6 można wyróżnić usprawnienie skryptów do tworzenia obrazów systemowych, dodanie poleceń sha256sum, sha224sum, sha384sum, sha512sum, linux32, strace i hexdump. Wprowadzono opcje «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».
Źródło: opennet.ru
