Release des minimalistischen Sets von Systemwerkzeugen BusyBox 1.35

Die Veröffentlichung des Pakets BusyBox 1.35 umfasst eine Implementierung einer Reihe standardmĂ€ĂŸiger UNIX-Werkzeuge, die in einer einzigen ausfĂŒhrbaren Datei zusammengefasst und fĂŒr einen minimalen Ressourcenverbrauch optimiert sind, bei einer PaketgrĂ¶ĂŸe von weniger als 1 MB. Die erste Version des neuen Zweigs 1.35 wird als instabil eingestuft, die vollstĂ€ndige Stabilisierung wird in Version 1.35.1 erwartet, die in etwa einem Monat verfĂŒgbar sein soll. Der Code des Projekts wird unter der GPLv2-Lizenz vertrieben.

Der modulare Charakter von BusyBox ermöglicht es, eine einheitliche ausfĂŒhrbare Datei zu erstellen, die eine beliebige Menge der im Paket enthaltenen Werkzeuge beinhaltet (jedes Werkzeug ist als symbolischer Link auf diese Datei verfĂŒgbar). GrĂ¶ĂŸe, Inhalt und FunktionalitĂ€t der Werkzeugsammlung können je nach Bedarf und Möglichkeiten der eingebetteten Plattform, fĂŒr die die Zusammenstellung erfolgt, angepasst werden. Das Paket ist selbststĂ€ndig, bei einer statischen Zusammenstellung mit uclibc sind nur einige GerĂ€te-Dateien im Verzeichnis /dev und Konfigurationsdateien fĂŒr die Erstellung eines funktionierenden Systems nötig. Im Vergleich zur vorherigen Version 1.34 hat der Speicherverbrauch der typischen Zusammenstellung von BusyBox 1.35 um 1726 Bytes zugenommen (von 1042344 auf 1044070 Bytes).

BusyBox ist ein zentrales Werkzeug im Kampf gegen VerstĂ¶ĂŸe gegen die GPL in Firmware. Die Organisationen Software Freedom Conservancy (SFC) und Software Freedom Law Center (SFLC) haben im Namen der Entwickler von BusyBox sowohl gerichtlich als auch durch außergerichtliche Vereinbarungen wiederholt erfolgreich auf Unternehmen eingewirkt, die keinen Zugang zum Quellcode von GPL-Programmen bieten. Gleichzeitig widerspricht der Autor von BusyBox einer solchen Verteidigung vehement - er hĂ€lt sie fĂŒr schĂ€dlich fĂŒr sein GeschĂ€ft.

In der Version BusyBox 1.35 sind folgende Änderungen hervorgehoben:

  • In der Utility find wurde die Option „-samefile name“ implementiert, um zu ĂŒberprĂŒfen, ob die Datei dasselbe Inode verwendet wie die Datei mit dem angegebenen Namen. Der Code wurde fĂŒr den Zeitvergleich vereinheitlicht und die Optionen „-amin“, „-atime“, „-cmin“ und „-ctime“ wurden hinzugefĂŒgt, um die Zugriffs- und Erstellungszeiten einer Datei zu ĂŒberprĂŒfen.
  • In die Utility mktemp wurde die Option „—tmpdir“ hinzugefĂŒgt, um das Basisverzeichnis anzugeben, relativ zu dem die Pfade der temporĂ€ren Dateien berechnet werden.
  • In das cpio-Dienstprogramm wurden die Optionen „—ignore-devno“ zum Ignorieren der realen GerĂ€tenummer (die immer 0 gespeichert wird) und „—renumber-inodes“ zum Umbenennen von Inodes vor dem HinzufĂŒgen zum Archiv eingefĂŒhrt.
  • Im awk-Dienstprogramm wurde die Funktion des Ausdrucks „printf %%“ verbessert.
  • Rund ein Dutzend Änderungen wurden in die Bibliothek libbb eingefĂŒhrt. Die KompatibilitĂ€t von realpath mit dem Pendant aus der coreutils-Suite wurde verbessert.
  • Eine große Menge von Korrekturen fĂŒr die Shells ash und hush wurde vorgeschlagen, um die KompatibilitĂ€t mit anderen Shells zu verbessern. In ash wurde die UnterstĂŒtzung fĂŒr bash-Ă€hnliche ERR-Traps, set -E und $FUNCNAME hinzugefĂŒgt, und die Extraktion von Zeichenfolgen wurde mit dem Ausdruck „${s:}“ beschleunigt. In ash und hush wurde die AusfĂŒhrung der Operationen „${x//\*|}“ beschleunigt.
  • Im Dienstprogramm basename wurden die Optionen „-a“ zur Übertragung mehrerer Namen bei einem Aufruf und „-s SUFFIX“ zum Entfernen von Endzeichen „SUFFIX“ implementiert.
  • In das blkdiscard-Dienstprogramm wurde die Option „-f“ (force) hinzugefĂŒgt.
  • Im httpd wurde das Senden der Header Last-Modified / ETag / Content-Length fĂŒr Seiten mit Fehlern eingestellt.
  • In httpd und telnetd wurde die Möglichkeit geschaffen, den Standardnetzwerkport zu Ă€ndern.
  • Im tar wurde eine Schwachstelle behoben, die dazu fĂŒhrte, dass der gesamte verfĂŒgbare Speicher bei der Verarbeitung von Archiven mit sehr langen Dateinamen verbraucht wurde.
  • Im TLS-Code wurde die Implementierung von P256 und x25519 ĂŒberarbeitet.
  • Im Dienstprogramm wget wurde die Option „—post-file“ zum Senden von Dateien implementiert, und es wurde erlaubt, den Inhalt des Content-Type-Headers fĂŒr die Optionen „—post-data“ und „—post-file“ einzustellen.
  • In das Dienstprogramm timeout wurde die UnterstĂŒtzung fĂŒr die Option „-k KILL_SECS“ hinzugefĂŒgt, um das SIGKILL-Signal zu senden, wenn der Befehl innerhalb von zusĂ€tzlichen KILL_SECS Sekunden nicht abgeschlossen wurde.
  • Im Dienstprogramm ip wurde die UnterstĂŒtzung fĂŒr das Setzen des Parameters netns fĂŒr GerĂ€te hinzugefĂŒgt.
  • Im Dienstprogramm cal wurde die Option „-m“ zum Anzeigen des angegebenen Monats implementiert.
  • In den Dienstprogrammen date und touch wurde die Angabe einer Zeitzonenverschiebung in Daten erlaubt.
  • Im Editor vi wurde die UnterstĂŒtzung fĂŒr die Datei ~/.exrc hinzugefĂŒgt, und die Verarbeitung von „-c“ und EXINIT wurde geĂ€ndert.
  • Im Dienstprogramm ed wurde das Ergebnis der AusfĂŒhrung von read/write-Befehlen an die POSIX-1.2008-Spezifikation angepasst. UnterstĂŒtzung fĂŒr die Option „-p“ wurde hinzugefĂŒgt.
  • In das Dienstprogramm cmp wurde die Option „-n N“ zum EinschrĂ€nken des Vergleichs auf N Bytes hinzugefĂŒgt.

DarĂŒber hinaus wurde vor einigen Tagen die Toybox 0.8.6 veröffentlicht, das Äquivalent zu BusyBox, das von einem ehemaligen Maintainer von BusyBox entwickelt und unter der Lizenz 0BSD verbreitet wird. Das Hauptziel von Toybox ist es, Herstellern die Möglichkeit zu geben, ein minimalistisches Set von Standarddienstprogrammen zu verwenden, ohne die Quelltexte modifizierter Komponenten offenlegen zu mĂŒssen. In Bezug auf die Funktionen hinkt Toybox derzeit hinter BusyBox hinterher, hat aber bereits 296 grundlegende Befehle (217 vollstĂ€ndig und 83 teilweise) von geplanten 374 umgesetzt.

Zu den Neuerungen in Toybox 0.8.6 gehören Verbesserungen bei den Skripten zur Erstellung von Systemabbildern, die HinzufĂŒgung der Befehle sha256sum, sha224sum, sha384sum, sha512sum, linux32, strace und hexdump. Implementiert wurden die Optionen „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“.

Quelle: opennet.ru

60GB SSD 8Gb DDR4