BUSYBOX
BusyBox
About Documentation Get BusyBox Development

Links

Developer Pages

  • We want to thank the following companies which are providing support for the BusyBox project:

  • 10 November 2008 -- BusyBox 1.13.0 (unstable), BusyBox 1.12.2 (stable)

    BusyBox 1.13.0. (svn, patches, how to add a patch)

    BusyBox 1.12.2. (svn, patches, how to add a patch)

    Sizes of busybox-1.12.2 and busybox-1.13.0 (with equivalent config, static uclibc build):

       text    data     bss     dec     hex filename
     778291     551    7856  786698   c010a busybox-1.12.2/busybox
     778981     551    7852  787384   c03b8 busybox-1.13.0/busybox
    

    New applets: blkid, devmem

    Changes since previous release:

    • mail applets: total overhaul. Vladimir as usual
    • ash: fix "while kill -0 $child; do true; done" looping forever
    • ash: fix NOEXEC mode - we were forgetting to pass environment
    • ash: fix a bug in standalone mode (corrupted getopt state)
    • ash: optionally support ">&file" and "&>file" redirections
    • awk: bitwise ops cast oprands and results to unsigned long, not signed. closes bug 4774
    • awk: fix typo in atan2 code. closes bug 5594
    • awk: improve handling of negative numbers in bitwise ops; fix handling of octal costants
    • awk: support hex constants
    • basename: fix error code (again)
    • cpio: emit TRAILER even when hard links were found. By Pascal Bellard (pascal.bellard AT ads-lu.com)
    • crontab: do not destroy STDIN_FILENO, editor may need it (crontab -e)
    • dc: support for bases 2 and 8, by Nate Case (ncase AT xes-inc.com)
    • dhcpc: treat "discover...select...discover..." loop the same way as "discover...discover...discover..."
    • dpkg: add dpkg -l PACKAGE_PATTERN. By Peter Korsgaard
    • fbset: fix mode matching code: original code may trigger false positive.
    • findfs: fix LUKS and FAT detection routines; do not exit if corrupted FAT fs makes us try to seek past the end
    • grep: fix 'echo aaa | grep -o a' + ENABLE_EXTRA_COMPAT case. By Natanael Copa
    • grep: fix EXTRA_COMPAT grep to honor -E and -i
    • gunzip: restore mtime
    • halt: reinstate -w even if !FEATURE_WTMP
    • hexdump: fix SEGV in hexdump -e ""
    • httpd: pass "Accept:" and "Accept-Language:" header to CGI scripts (Alina Friedrichsen)
    • hush: fix environment and memory leaks
    • hush: fix trashing of environment by local env vars: a=a; a=b cmd; - a was unset
    • id: improve compatibility with coreutils. By Tito Ragusa
    • inetd: fix a case when we have zero services
    • inetd: use config parser. by Vladimir
    • init: set stderr to NONBLOCK
    • insmod: fix detection of open failure
    • install: support -D
    • ip: fix ip route rejecting dotted quads as prefix
    • ip: route metric support (Natanael Copa)
    • iplink: accept shorthands for "address" keyword: "ip link set address 00:11:22:33:44:55"
    • kbd_mode: support -C TTY
    • kill[all[5]]: accept -s SIG too. By Steve Bennett (steveb AT workware.net.au)
    • klogd: handle many lines at once. By Steve Bennett (steveb AT workware.net.au)
    • less: support -I to be able to search case-insensitively
    • less: add optional line number toggle and resizing on window resize
    • libbb: do not reject floating point strings like ".15"
    • lineedit: fix bug 5824 "since rev 23530 fdisk and ed don't work any more"
    • lineedit: fix problems with empty commands in history
    • login: fix /etc/nologin handling
    • man: fix inconsistencies in handling $MANPATH
    • mdev: support match by major,minor. See bug 4714
    • modprobe-small: make insmod command line compatible
    • modprobe-small: support "blacklist" keyword in /etc/modules/MODULE_NAME
    • modprobe: fix a segfault when modprobe is called with no arguments at all
    • modutils/*: rewrite by Timo Teras (timo.teras AT iki.fi)
    • mount: fix "-o parm1 -o parm2" not accumulating
    • nmeter: 4k buffers are too small for /proc files, make them dynamically sized with 16k upper limit
    • ping: SO_RCVBUF must be bigger than packet size, otherwise large ping packets might fail to be received
    • route: fix for 64-bit BE machines by Seonghun Lim (wariua AT gmail.com)
    • rpm: fix incompatibilities which prevented rpm -i foo.src.rpm
    • runsvdir: support runsvdir-as-init
    • setarch: do not try to use non-existent data in argv[]
    • setfont: support -m and -C, support -m TEXTUAL_MAP (by Vladimir)
    • setup_environment: cd $HOME regardless of clear_env value
    • slattach: preserve speed in non-raw mode. By Matthieu Castet (matthieu.castet AT parrot.com)
    • start_stop_daemon: accept (and ignore) -R PARAM
    • sv: make default service dir configurable (Vladimir wants it)
    • sysctl: fix bug 3894 (by Kryzhanovskyy Maksym)
    • tar: fix bug 3844: non-root tar does not preserve perms
    • telnetd: handle emacs M-DEL and IAC-NOP. by Jim Cathey (jcathey AT ciena.com)
    • top: fix "top -d 1" (bug 5144)
    • top: optional SMP support by Vineet Gupta (vineetg76 AT gmail.com)
    • trylink: make messages less confusing
    • unzip: handle "central directory". needed for OpenOffice, gmail attachment .zips etc
    • vi: Rob's algorithm of reading and matching ESC sequences (nice work btw!)
    • vi: deal with EOF/error on stdin and with input NULs
    • vi: fix uninitialized last_search_pattern (bug 5794)
    • vi: handle chars 0x80, 0x81 etc correctly
    • volume identification: abolish /proc/partitions and /proc/cdroms scanning. It does not catch volume managers and such. Simply scan /dev/* for any block devices
    • watchdog: WDIOC_SETTIMEOUT accepts seconds, not milliseconds
    • watchdog: add -T option

    The email address gpl@busybox.net is the recommended way to contact the Software Freedom Law Center to report BusyBox license violations.

  • 28 September 2008 -- BusyBox 1.12.1 (stable), BusyBox 1.11.3 (stable)

    BusyBox 1.12.1. (svn, patches, how to add a patch)

    BusyBox 1.11.3. (svn, patches, how to add a patch)

    Bugfix-only releases for 1.11.x and 1.12.x branches.

  • 21 August 2008 -- BusyBox 1.12.0 (unstable), BusyBox 1.11.2 (stable)

    BusyBox 1.12.0. (svn, patches, how to add a patch)

    BusyBox 1.11.2. (svn, patches, how to add a patch)

    Sizes of busybox-1.11.2 and busybox-1.12.0 (with equivalent config, static uclibc build):

       text    data     bss     dec     hex filename
     829687     617    7052  837356   cc6ec busybox-1.11.2/busybox
     822961     594    6832  830387   cabb3 busybox-1.12.0/busybox
    

    New applets: rdev (Grant Erickson), setfont, showkey (both by Vladimir)

    Most significant changes since previous release (please report any regression):

    • ash: bash compat: "shift $BIGNUM" is equivalent to "shift 1"
    • ash: dont allow e.g. exec <&10 to attach to script's fd!
    • ash: fix a bug where redirection fds were not closed afterwards. optimize close+fcntl(DUPFD) into dup2
    • ash: fix segfault in "command -v"
    • ash: fix very weak $RANDOM generator
    • ash: prevent exec NN>&- from closing fd used for script reading
    • ash: teach ash about 123>file. It could take only 0..9 before
    • hush: fix a case where "$@" must expand to no word at all
    • hush: fix mishandling of a'b'c=fff as assignments. They are not
    • hush: fix non-detection of builtins and applets in "v=break; ...; $v; ..." case
    • hush: fix "while false; ..." exitcode; add testsuites
    • hush: support "case...esac" statements (~350 bytes of code)
    • hush: support "break [N]" and "continue [N]" statements
    • hush: support "for if in do done then; do echo $if; done" case
    • hush: support "for v; do ... done" syntax (implied 'in "$@"')
    • hush: support $_NUMBERS variable names
    • libbb: unified config parser (by Vladimir). This change affected many applets

    Other changes:

    • libbb: dump: do not use uninitialized memory (closes bug 4364)
    • libbb: fix bb_strtol[l]'s check for "-" (closes bug 4174)
    • libbb: fix --help to not affect "test --help"
    • libbb: fix mishandling of "all argv are opts" in getopt32()
    • libbb: getopt32() should not ever touch argv[0] (even read)
    • libbb: introduce and use xrealloc_vector
    • libbb: [x]fopen_for_{read,write} introduced and used (by Vladimir)
    • lineedit: fix use-after-free
    • libunarchive: refactor handling of archived files. "tar f file.tar.lzma" now works too
    • bb_strtoXXX: close bug 4174 (potential use of buf[-1])
    • open_transformer: don't leak file descriptor
    • open_transformer: fix bug of calling exit instead of _exit
    • arp: without -H type, assume "ether" (closes bug 4564)
    • ar: reuse existing ar unpacking code
    • awk: fix a case with multiple -f options. Simplify -f file reading.
    • build system: introduce and use FAST_FUNC: regparm on i386, otherwise no-op
    • bunzip2: fix an uncompression error (by Rob Landley rob AT landley.net)
    • b[un]zip2, g[un]zip: unlink destination if -f is given (closes bug 3854)
    • comm: almost total rewrite
    • cpio: fix -m to actually work as expected (by Pascal Bellard)
    • cpio: internalize archive_xread_all_eof, add a few paranoia checks for corrupted cpio files
    • cpio: make long opts depend only on ENABLE_GETOPT_LONG
    • cpio: on unpack, limit filename length to 8k
    • cpio: support some long options
    • crond: use execlp instead of execl
    • cut: fix buffer overflow (closes bug 4544)
    • envdir: fix "envdir" (no params at all) and "envdir dir" cases
    • findfs: make it use setuid-ness of busybox binary
    • fsck: use getmntent_r instead of open-coded parsing (by Vladimir)
    • fuser: a bit of safety in scanf
    • grep: option to use GNU regex matching instead of POSIX one. This fixes problems with NULs in files being scanned, but costs +800 bytes
    • halt: signal init regardless of ENABLE_INIT
    • httpd: add homedir directive specially for (and by) Walter Harms wharms AT bfs.de
    • ifupdown: /etc/network/interfaces can have comments with leading blanks
    • ifupdown: fixes for custom MAC address (by Wade Berrier wberrier AT gmail.com)
    • ifupdown: fixes for shutdown of DHCP-managed interfaces (by Wade Berrier wberrier AT gmail.com)
    • inetd: do not trash errno in signal handlers; in CHLD handler, stop looping through services when pid is found
    • insmod: users report that "|| defined(__powerpc__)" is missing
    • install: do not chown intermediate directories with install -d (by Natanael Copa)
    • install: fix long option not taking params (closes bug 4584)
    • lpd,lpr: send/receive ACKs after filenames, not only after file bodies
    • ls: fix a bug where we may use uninintialized variable
    • man: add handling of "man links", by Ivana Varekova varekova AT redhat.com
    • man: fix a case when a full pathname to manpage is given
    • man: fix inverted cat/man bool variable
    • man: fix missed NULL termination of an array
    • man: mimic "no manual entry for 'bogus'" message and exitcode
    • man: support cat pages too (by Jason Curl jcurlnews AT arcor.de)
    • man: teach it to use .lzma if requested by .config
    • mdev: check for "/block/" substring for block dev detection
    • mdev: do not complain if mdev.conf does not exist
    • mdev: if device was moved at creation, at removal correctly remove it from moved location and also remove symlinks to it
    • mdev: support for serializing hotplug
    • mdev, init: use shared code for fd sanitization
    • mkdir: fix "uname 0222; mkdir -p foo/bar" case (by Doug Graham dgraham AT nortel.com)
    • modprobe: support for /etc/modprobe.d (by Timo Teras)
    • modprobe: use buffering line reads (fgets()) instead of reads()
    • modutils: optional modprobe-small (by Vladimir), 15kb smaller than standard one
    • mount: support for "-o mand" and "[no]relatime"
    • mount: support nfs mount option "nordiplus" (by Octavian Purdila opurdila AT ixiacom.com)
    • mount: support "relatime" / "norelatime"
    • mount: testsuite for "-o mand"
    • msh: fix "while... continue; ..." (closes bug 3884)
    • mv: fix a case when we move dangling symlink across mountpoints
    • netstat: optional -p support (by L. Gabriel Somlo somlo AT cmu.edu)
    • nmeter: fix read past the end of a buffer (closes bug 4594)
    • od, hexdump: fix bug where xrealloc may move pointer, leaving other pointers dangling (closes bug 4104)
    • pidof/killall: allow find_pid_by_name to find running processes started as scripts_with_name_longer_than_15_bytes.sh (closes bug 4054)
    • printf: do not print garbage on "%Ld" (closes bug 4214)
    • printf: fix %b, fix several bugs in %*.*, fix compat issues with aborting too early, support %zd; expand testsuite
    • printf: protect against bogus format specifiers (closes bug 4184)
    • sendmail: updates from Vladimir:
    • sendmail: do not discard all headers
    • sendmail: do not ignore CC; accept to: and cc: case-insensitively. +20 bytes
    • sendmail: fixed mail recipient address
    • sendmail: fixed SEGV if sender address is missed
    • sendmail: use HOSTNAME instead of HOST when no server is explicitly specified
    • sleep: if FANCY && DESKTOP, support fractional seconds, minutes, hours and so on (coreutils compat)
    • ssd: CLOSE_EXTRA_FDS in MMU case too
    • ssd: do not stat -x EXECUTABLE, it is not needed anymore
    • ssd: fix -a without -x case
    • ssd: use $PATH
    • tar: fix handling of tarballs with symlinks with size field != 0
    • tar: handle autodetection for tiny .tar.gz files too, simplify autodetection
    • taskset: fix some careless code in both fancy and non-fancy cases. -5 bytes for fancy, +5 for non-fancy
    • tee: fix infinite looping on open error (echo asd | tee "")
    • tee: "-" is a name for stdout, handle it that way
    • telnetd: fix issue file printing
    • test: fix parser to prefer binop over unop, as coreutils does
    • testsuite: uniformly use $ECHO with -n -e
    • time: don't segfault with no arguments
    • touch: support -r REF_FILE if ENABLE_DESKTOP (needed for blackfin compile)
    • tr: fix "access past the end of a string" bug 4354
    • tr: fix "tr [=" case (closes bug 4374)
    • tr: fix yet another access past the end of a string (closes bug 4374)
    • unlzma: fix memory leak (by Pascal Bellard)
    • vi: fix reversed checks for underflow
    • vi: using array data after it fell out of scope is stupid
    • xargs: fix -e default to match newer GNU xargs, add SUS mandated -E (closes bug 4414)
    • other fixes and code size reductions in many applets

  • 12 July 2008 -- BusyBox 1.11.1 (stable)

    BusyBox 1.11.1. (svn, patches, how to add a patch)

    Bugfix-only release for 1.11.x branch. It contains fixes for awk, bunzip2, cpio, ifupdown, ip, man, start-stop-daemon, uname and vi.

  • 11 July 2008 -- HOWTO is updated

    "How to build static busybox for i486-linux-uclibc" is updated and tested on a fresh Fedora 9 install. Please report if it doesn't work for you.

  • Old News

    Click here to read older news


Copyright © 1999-2008 Erik Andersen
Mail all comments, insults, suggestions and bribes to
Denys Vlasenko vda.linux@googlemail.com
This site created with the vi editor This site is kindly hosted by OSL