Release of the minimalist set of system utilities BusyBox 1.35

The release of BusyBox 1.35 has been presented, featuring a set of standard UNIX utilities encapsulated in a single executable file, optimized for minimal system resource consumption while keeping the package size under 1 MB. The first release of the new 1.35 branch is positioned as unstable, with full stabilization expected in version 1.35.1, anticipated in about a month. The project code is distributed under the GPLv2 license.

The modular nature of BusyBox allows forming a single unified executable file that contains any arbitrary set of utilities included in the package (each utility is accessible as a symbolic link to this file). The size, composition, and functionality of the utility collection can be varied depending on the needs and capabilities of the embedded platform for which the build is being created. The package is self-sufficient; for a static build with uclibc to create a working system atop the Linux kernel, it is only necessary to create a few device files in the /dev directory and prepare configuration files. Compared to the previous release 1.34, the memory consumption of a typical BusyBox 1.35 build has increased by 1726 bytes (from 1042344 to 1044070 bytes).

BusyBox is a key tool in combating GPL violations in firmware. The Software Freedom Conservancy (SFC) and Software Freedom Law Center (SFLC) have successfully influenced companies that do not provide access to the source code of GPL programs, both through litigation and by entering into out-of-court agreements, on behalf of the BusyBox developers. At the same time, the author of BusyBox strongly opposes such protection, believing that it undermines his business.

The following changes are highlighted in BusyBox 1.35:

  • The find utility now features the "-samefile filename" option to check if a file uses the same inode as the specified filename. The code for comparing times has been unified, and the options "-amin", "-atime", "-cmin", and "-ctime" have been added to check file access and creation times.
  • The mktemp utility has added the "--tmpdir" option to specify the base directory relative to which paths associated with temporary files are calculated.
  • The cpio utility has added the options "--ignore-devno" to ignore the real device number (always recorded as 0) and "--renumber-inodes" to renumber inodes before placing them in the archive.
  • The awk utility has fixed the functionality of the expression "printf %%".
  • About a dozen changes have been made to the libbb library. Compatibility of realpath has been improved to align with the equivalent from the coreutils set.
  • A significant batch of fixes has been proposed for the ash and hush command shells, aimed at improving compatibility with other shells. Support for bash-like ERR traps, set -E, and $FUNCNAME has been added to ash, along with accelerated string extraction using the expression '${s:}'. The execution of operations '${x///*/|}' has been sped up in both ash and hush.
  • The basename utility has implemented the '-a' option for passing multiple names in a single call and the '-s SUFFIX' option for removing trailing 'SUFFIX' characters.
  • The blkdiscard utility has added the '-f' (force) option.
  • In httpd, the sending of Last-Modified / ETag / Content-Length headers for error pages has been discontinued.
  • In httpd and telnetd, the ability to change the default network port has been provided.
  • A vulnerability leading to the exhaustion of all available memory when processing archives with very long file names has been fixed in tar.
  • The TLS code has reworked the implementation of P256 and x25519.
  • The wget utility has implemented the '--post-file' option for sending files and allowed customization of the Content-Type header for the '--post-data' and '--post-file' options.
  • The timeout utility has added support for the '-k KILL_SECS' option to send a SIGKILL signal if the command does not finish within an additional KILL_SECS seconds.
  • The ip utility has added support for setting the netns parameter for devices.
  • The cal utility has implemented the '-m' option to display the specified month.
  • In the date and touch utilities, it is now allowed to specify timezone offset in dates.
  • The vi editor has added support for the file ~/ .exrc, and the handling of '-c' and EXINIT has been modified.
  • In the ed utility, the results of read/write commands have been aligned with the POSIX-1.2008 specification. Support for the '-p' option has been added.
  • The cmp utility has added the '-n N' option to limit comparison to N bytes.

Additionally, a few days ago Toybox 0.8.6 was released, an analog 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 minimalist set of standard utilities without exposing the source code of modified components. Currently, Toybox lags behind BusyBox in capabilities but has already implemented 296 basic commands (217 fully and 83 partially) out of 374 planned.

Among the innovations in Toybox 0.8.6, improvements in scripts for creating system images can be noted, along with the addition of commands sha256sum, sha224sum, sha384sum, sha512sum, linux32, strace, and hexdump. Options implemented include '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', and 'grep -L'.

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster