Uitgave van een minimalistische set systeemhulpprogramma's BusyBox 1.35

De release van het BusyBox 1.35-pakket wordt gepresenteerd met de implementatie van een set standaard UNIX-hulpprogramma's, ontworpen als een enkel uitvoerbaar bestand en geoptimaliseerd voor minimaal verbruik van systeembronnen met een vaste grootte van minder dan 1 MB. De eerste release van de nieuwe branch 1.35 is gepositioneerd als onstabiel; volledige stabilisatie zal worden geboden in versie 1.35.1, die over ongeveer een maand wordt verwacht. De projectcode wordt gedistribueerd onder de GPLv2-licentie.

Het modulaire karakter van BusyBox maakt het mogelijk om één verenigd uitvoerbaar bestand te creëren dat een willekeurige set hulpprogramma's bevat die in het pakket zijn geïmplementeerd (elk hulpprogramma is beschikbaar in de vorm van een symbolische link naar dit bestand). De omvang, samenstelling en functionaliteit van de verzameling nutsvoorzieningen kan worden gevarieerd afhankelijk van de behoeften en mogelijkheden van het embedded platform waarvoor de assemblage wordt uitgevoerd. Het pakket is op zichzelf staand; als het statisch is gebouwd met uclibc, hoeft u, om een ​​werkend systeem bovenop de Linux-kernel te creëren, slechts enkele apparaatbestanden in de map /dev aan te maken en configuratiebestanden voor te bereiden. Vergeleken met de vorige release 1.34 is het RAM-verbruik van de typische BusyBox 1.35-assemblage toegenomen met 1726 bytes (van 1042344 naar 1044070 bytes).

BusyBox is het belangrijkste hulpmiddel in de strijd tegen GPL-schendingen in firmware. De Software Freedom Conservancy (SFC) en Software Freedom Law Center (SFLC) hebben namens de BusyBox-ontwikkelaars herhaaldelijk met succes bedrijven beïnvloed die geen toegang bieden tot de broncode van GPL-programma's, zowel via de rechtbank als via externe instanties. -gerechtelijke overeenkomsten. Tegelijkertijd maakt de auteur van BusyBox krachtig bezwaar tegen een dergelijke bescherming, in de overtuiging dat dit zijn bedrijf ruïneert.

De volgende wijzigingen zijn gemarkeerd in BusyBox 1.35:

  • Het zoekhulpprogramma implementeert de optie "-samefile name" om te controleren of een bestand dezelfde inode gebruikt als het bestand met de opgegeven naam. Uniforme code voor tijdvergelijking en toegevoegde opties "-amin", "-atime", "-cmin" en "-ctime" om de toegangstijd en het maken van bestanden te controleren.
  • De optie "--tmpdir" is toegevoegd aan het mktemp-hulpprogramma om de basismap te specificeren ten opzichte waarvan paden die verband houden met tijdelijke bestanden worden berekend.
  • De opties “-ignore-devno” zijn toegevoegd aan het cpio-hulpprogramma om het echte apparaatnummer te negeren (0 wordt altijd geschreven) en “-renumber-inodes” om de inode opnieuw te nummeren voordat deze in het archief wordt opgeslagen.
  • In het awk-hulpprogramma is de uitdrukking “printf %%” aangepast.
  • Ongeveer een dozijn wijzigingen toegevoegd aan de libbb-bibliotheek. Verbeterde compatibiliteit van realpath met zijn tegenhanger uit de coreutils-set.
  • Er is een groot aantal oplossingen voorgesteld voor de ash- en hush-commandoshells, gericht op het verbeteren van de compatibiliteit met andere shells. Ash heeft ondersteuning toegevoegd voor bash-achtige ERR-traps, set -E en $FUNCNAME, en sneller ophalen van tekenreeksen met behulp van de "${s:}" expressie. In alle rust is de uitvoering van "${x//\*/|}"-operaties versneld.
  • Het basisnaamhulpprogramma implementeert de opties "-a" om meerdere namen in één oproep door te geven en "-s SUFFIX" om achterliggende "SUFFIX"-tekens te verwijderen.
  • Optie "-f" (forceren) toegevoegd aan het hulpprogramma blkdiscard.
  • httpd is gestopt met het verzenden van Last-Modified/ETag/Content-Length headers voor pagina's met fouten.
  • httpd en telnetd bieden de mogelijkheid om de standaard netwerkpoort te wijzigen.
  • Een kwetsbaarheid in tar opgelost die ervoor zorgde dat al het beschikbare geheugen werd gebruikt bij het verwerken van archieven met zeer lange bestandsnamen.
  • De implementatie van P256 en x25519 is herwerkt in de TLS-code.
  • Het wget-hulpprogramma implementeert de optie "--post-file" voor het verzenden van bestanden en stelt u in staat de inhoud van de Content-Type header aan te passen voor de opties "--post-data" en "--post-file".
  • Het time-outhulpprogramma ondersteunt nu de optie "-k KILL_SECS" om een ​​SIGKILL-signaal te verzenden als de opdracht niet binnen de extra KILL_SECS-seconden wordt voltooid.
  • Ondersteuning voor het instellen van de netns-parameter voor apparaten is toegevoegd aan het ip-hulpprogramma.
  • Het cal-hulpprogramma implementeert de optie "-m" om de opgegeven maand weer te geven.
  • Met de datum- en aanraakhulpprogramma's kunt u een tijdzoneverschuiving in datums opgeven.
  • In de vi-editor is ondersteuning voor het bestand ~/.exrc toegevoegd en is de omgang met “-c” en EXINIT gewijzigd.
  • In het hulpprogramma ed wordt het resultaat van het uitvoeren van lees-/schrijfopdrachten in overeenstemming gebracht met de POSIX-1.2008-specificatie. Ondersteuning toegevoegd voor de optie "-p".
  • Optie "-n N" toegevoegd aan het cmp-hulpprogramma om de vergelijking tot N bytes te beperken.

Bovendien werd een paar dagen geleden Toybox 0.8.6 uitgebracht, een analoog van BusyBox, ontwikkeld door een voormalige BusyBox-onderhouder en gedistribueerd onder de 0BSD-licentie. Het belangrijkste doel van Toybox is om fabrikanten de mogelijkheid te bieden een minimalistische set standaardhulpprogramma's te gebruiken zonder de broncode van gewijzigde componenten te openen. Qua mogelijkheden blijft Toybox nog steeds achter bij BusyBox, maar 296 basiscommando's zijn al geïmplementeerd (217 volledig en 83 gedeeltelijk) van de 374 geplande.

Onder de innovaties van Toybox 0.8.6 kunnen we de verbetering van scripts voor het maken van systeemimages opmerken, de toevoeging van commando's sha256sum, sha224sum, sha384sum, sha512sum, linux32, strace en hexdump. Geïmplementeerde opties “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".

Bron: opennet.ru

Voeg een reactie