Release of a minimalistic set of system utilities BusyBox 1.35

The release of the BusyBox 1.35 package is presented with the implementation of a set of standard UNIX utilities designed as a single executable file and optimized for minimal consumption of system resources with a package size of less than 1 MB. The first release of the new branch 1.35 is positioned as unstable, full stabilization will be provided in version 1.35.1, which is expected in about a month. The project code is distributed under the GPLv2 license.

The modular nature of BusyBox makes it possible to form one unified executable file containing an arbitrary set of utilities implemented in the package (each utility is available as a symbolic link to this file). The size, composition, and functionality of the collection of utilities can vary depending on the needs and capabilities of the embedded platform for which the assembly is being carried out. The package is self-contained, when statically built with uclibc, to create a working system on top of the Linux kernel, you only need to create a few device files in the /dev directory and prepare the configuration files. Compared to the previous release 1.34, the BusyBox 1.35 typical assembly has increased its RAM consumption by 1726 bytes (from 1042344 to 1044070 bytes).

BusyBox is the main tool in the fight against GPL violation in firmware. The Software Freedom Conservancy (SFC) and the Software Freedom Law Center (SFLC), on behalf of the developers of BusyBox, both through the courts and through out-of-court agreements, have repeatedly successfully influenced companies that do not provide access to the source code of GPL programs. At the same time, the author of BusyBox strongly objects to such protection - believing that it breaks his business.

BusyBox 1.35 highlights the following changes:

  • The find utility implements the "-samefile name" option to check if a file is using the same inode as the file with the specified name. Unified code for time comparison and added options "-amin", "-atime", "-cmin" and "-ctime" to check access time and file creation.
  • The mktemp utility has added a "--tmpdir" option to specify the base directory relative to which paths associated with temporary files are calculated.
  • The options β€œ-ignore-devno” have been added to the cpio utility to ignore the real device number (0 is always written) and β€œ-renumber-inodes” to renumber the inode before storing it in the archive.
  • In the awk utility, the expression β€œprintf %%” has been adjusted.
  • Added about a dozen changes to the libbb library. Improved compatibility of realpath with its counterpart from the coreutils set.
  • A large number of fixes have been proposed for the ash and hush command shells, aimed at improving compatibility with other shells. Ash has added support for bash-like ERR traps, set -E and $FUNCNAME, and faster string retrieval using the "${s:}" expression. In ash and hush, the execution of "${x//\*/|}" operations has been accelerated.
  • The basename utility implements the options "-a" to pass multiple names in one call and "-s SUFFIX" to remove trailing "SUFFIX" characters.
  • Added "-f" (force) option to blkdiscard utility.
  • httpd has stopped sending Last-Modified/ETag/Content-Length headers for pages with errors.
  • httpd and telnetd provide the ability to change the default network port.
  • Fixed a vulnerability in tar that caused all available memory to be consumed when processing archives with very long file names.
  • The implementation of P256 and x25519 has been reworked in the TLS code.
  • The wget utility implements the "--post-file" option for sending files and allows you to customize the contents of the Content-Type header for the "--post-data" and "--post-file" options.
  • The timeout utility now supports the "-k KILL_SECS" option to send a SIGKILL signal if the command does not complete within the additional KILL_SECS seconds.
  • Support for setting the netns parameter for devices has been added to the ip utility.
  • The cal utility implements the "-m" option to display the specified month.
  • The date and touch utilities allow specifying a time zone offset in dates.
  • In the vi editor, support for the ~/.exrc file has been added, and the handling of β€œ-c” and EXINIT has been changed.
  • In the ed utility, the result of executing read/write commands is brought into compliance with the POSIX-1.2008 specification. Added support for the "-p" option.
  • Added "-n N" option to cmp utility to limit comparison to N bytes.

In addition, a few days ago, Toybox 0.8.6 was released, an analogue of BusyBox, developed by a former BusyBox maintainer and distributed under the 0BSD license. The main purpose of Toybox is to provide manufacturers with the ability to use a minimalistic set of standard utilities without opening the source code of modified components. In terms of capabilities, Toybox still lags behind BusyBox, but 296 basic commands have already been implemented (217 completely and 83 partially) out of 374 planned.

Among the innovations of Toybox 0.8.6 we can note the improvement of scripts for creating system images, the addition of commands sha256sum, sha224sum, sha384sum, sha512sum, linux32, strace and hexdump. Implemented options β€œ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".

Source: opennet.ru

Add a comment