Wydanie minimalistycznego zestawu narzędzi systemowych BusyBox 1.35

Wydanie pakietu BusyBox 1.35 jest prezentowane z implementacją zestawu standardowych narzędzi UNIX, zaprojektowanych jako pojedynczy plik wykonywalny i zoptymalizowanych pod kątem minimalnego zużycia zasobów systemowych przy ustawionym rozmiarze mniejszym niż 1 MB. Pierwsze wydanie nowej gałęzi 1.35 pozycjonowane jest jako niestabilne, pełna stabilizacja zostanie zapewniona w wersji 1.35.1, która spodziewana jest za około miesiąc. Kod projektu jest rozpowszechniany na licencji GPLv2.

Modułowa natura BusyBox umożliwia utworzenie jednego, ujednoliconego pliku wykonywalnego zawierającego dowolny zestaw narzędzi zaimplementowanych w pakiecie (każde narzędzie dostępne jest w formie symbolicznego dowiązania do tego pliku). Wielkość, skład i funkcjonalność zbioru narzędzi można zmieniać w zależności od potrzeb i możliwości platformy wbudowanej, dla której realizowany jest montaż. Pakiet jest samowystarczalny; po zbudowaniu statycznym za pomocą uclibc, aby stworzyć działający system na jądrze Linuksa, wystarczy utworzyć kilka plików urządzeń w katalogu /dev i przygotować pliki konfiguracyjne. W porównaniu do poprzedniej wersji 1.34, zużycie pamięci RAM typowego zestawu BusyBox 1.35 wzrosło o 1726 bajtów (z 1042344 do 1044070 bajtów).

BusyBox to główne narzędzie w walce z naruszeniami GPL w oprogramowaniu sprzętowym. Organizacje Software Freedom Conservancy (SFC) i Software Freedom Law Center (SFLC) w imieniu twórców BusyBox wielokrotnie skutecznie wywierały wpływ na firmy, które nie zapewniają dostępu do kodu źródłowego programów GPL, zarówno na drodze sądowej, jak i zewnętrznej. -umowy sądowe. Jednocześnie autor BusyBox stanowczo sprzeciwia się takiej ochronie – uważając, że rujnuje to jego biznes.

W BusyBox 1.35 wyróżniono następujące zmiany:

  • Narzędzie find implementuje opcję „-samefile name”, aby sprawdzić, czy plik używa tego samego i-węzła, co plik o określonej nazwie. Ujednolicony kod do porównywania czasu i dodane opcje „-amin”, „-atime”, „-cmin” i „-ctime” umożliwiające sprawdzenie czasu dostępu i utworzenia pliku.
  • Narzędzie mktemp dodało opcję „--tmpdir” służącą do określenia katalogu podstawowego, względem którego obliczane są ścieżki powiązane z plikami tymczasowymi.
  • Do narzędzia cpio dodano opcje „-ignore-devno”, aby ignorować rzeczywisty numer urządzenia (zawsze zapisywane jest 0) oraz „-renumber-inodes”, aby przenumerować i-węzeł przed zapisaniem go w archiwum.
  • W narzędziu awk dostosowano wyrażenie „printf %%”.
  • Dodano kilkanaście zmian do biblioteki libbb. Poprawiona kompatybilność realpath z jego odpowiednikiem z zestawu coreutils.
  • Zaproponowano dużą liczbę poprawek dla powłok poleceń Ash i Hush, mających na celu poprawę kompatybilności z innymi powłokami. Ash dodał obsługę pułapek ERR typu bash, ustawiania -E i $FUNCNAME oraz szybsze pobieranie ciągów znaków przy użyciu wyrażenia „${s:}”. W popiele i ciszy, przyspieszono wykonywanie operacji „${x//\*/|}”.
  • Narzędzie basename implementuje opcje „-a”, aby przekazać wiele nazw w jednym wywołaniu, oraz „-s SUFFIX”, aby usunąć końcowe znaki „SUFFIX”.
  • Dodano opcję „-f” (wymuszenie) do narzędzia blkdiscard.
  • httpd przestał wysyłać nagłówki Last-Modified/ETag/Content-Length dla stron z błędami.
  • httpd i telnetd umożliwiają zmianę domyślnego portu sieciowego.
  • Naprawiono lukę w tar, która powodowała zużycie całej dostępnej pamięci podczas przetwarzania archiwów o bardzo długich nazwach plików.
  • Implementacja P256 i x25519 została przerobiona w kodzie TLS.
  • Narzędzie wget implementuje opcję „--post-file” do wysyłania plików i pozwala dostosować zawartość nagłówka Content-Type dla opcji „--post-data” i „--post-file”.
  • Narzędzie limitu czasu obsługuje teraz opcję „-k KILL_SECS”, aby wysłać sygnał SIGKILL, jeśli polecenie nie zostanie zakończone w ciągu dodatkowych sekund KILL_SECS.
  • Do narzędzia ip dodano obsługę ustawiania parametru netns dla urządzeń.
  • Narzędzie cal implementuje opcję „-m”, aby wyświetlić określony miesiąc.
  • Narzędzia daty i dotyku umożliwiają określenie przesunięcia strefy czasowej w datach.
  • W edytorze vi dodano obsługę pliku ~/.exrc oraz zmieniono obsługę „-c” i EXINIT.
  • W narzędziu ed wynik wykonywania poleceń odczytu/zapisu jest dostosowywany do zgodności ze specyfikacją POSIX-1.2008. Dodano obsługę opcji „-p”.
  • Do narzędzia cmp dodano opcję „-n N”, aby ograniczyć porównanie do N bajtów.

Ponadto kilka dni temu wydano Toybox 0.8.6, analog BusyBox, opracowany przez byłego opiekuna BusyBox i dystrybuowany na licencji 0BSD. Głównym celem Toybox jest zapewnienie producentom możliwości korzystania z minimalistycznego zestawu standardowych narzędzi bez konieczności otwierania kodu źródłowego modyfikowanych komponentów. Pod względem możliwości Toybox nadal pozostaje w tyle za BusyBoxem, ale zaimplementowano już 296 podstawowych poleceń (217 w całości i 83 częściowo) z 374 planowanych.

Wśród innowacji Toybox 0.8.6 możemy zauważyć ulepszenie skryptów do tworzenia obrazów systemu, dodanie poleceń sha256sum, sha224sum, sha384sum, sha512sum, linux32, strace i hexdump. Zaimplementowane opcje „date -s”, „pmap -p”, „tail -F -s”, „kill -0″, restart/halt/poweroff -d”, „tail –bytes –lines”, „i2cdetect -q” , "find -quit -lname -ilname -d", "cut -d $'\n'", "cut -nb", "cpio -ignore-devno -renumeracja-i-węzłów", "tar -selinux", "split -n", "grep -L".

Źródło: opennet.ru

Dodaj komentarz