LinuxCommandLibrary

busybox

Provide minimal tools for embedded systems

TLDR

Execute a BusyBox function

$ busybox [ls|rm|mkdir|cat|...] [args]
copy

Display help and a list of functions
$ busybox --help
copy

SYNOPSIS

busybox [--help] [--list] [--list-full] [--install [-s] [-z] [-P] DIR] [--uninstall DIR] [--root DIR] [COMMAND [ARGS]...]
or: COMMAND [ARGS]... (via symlink)

PARAMETERS

--help
    Display usage information for busybox or specific applet and exit.

--list
    List available applets (subcommands) supported by this busybox binary.

--list-full
    List full paths to supported applets.

--install [-s] [-z] [-P] DIR
    Create symlinks in DIR for all applets. -s: static symlinks to 'busybox'; -z: gzip compress (-s implied); -P: preserve permissions.

--uninstall DIR
    Remove symlinks for all applets from DIR.

--root DIR
    Prepend DIR to applet paths (changes root directory for operations).

--install-u [-s] [-z] [-P] DIR USER GROUP
    Install symlinks in DIR with specified USER and GROUP ownership.

--install-m DIR MODE
    Install symlinks in DIR with specified MODE permissions.

DESCRIPTION

BusyBox is a versatile software suite that combines stripped-down versions of over 400 common Unix utilities into a single small executable file. Designed primarily for resource-constrained environments like embedded systems, routers, and bootloaders, it provides essential functionality such as shells (ash), file manipulation (cp, mv), networking tools (ping, wget), and process management (ps, kill) with minimal footprint.

It acts as a multi-call binary: symlinks or direct invocation with a subcommand name dispatches to the appropriate applet. This makes it ideal for initramfs, rescue disks, and IoT devices where space and memory are limited. BusyBox supports most POSIX standards but prioritizes size over full feature parity with standalone tools. Configuration at compile-time allows enabling/disabling applets and features via menuconfig. Widely used in distributions like OpenWrt, Alpine Linux, and Android recovery images.

CAVEATS

BusyBox applets are minimalistic and may lack advanced features of full tools (e.g., no ACL support in chmod). Compile-time config determines exact capabilities; check with --list. Not suitable for general-purpose desktops due to incompleteness.

COMMON USAGE

Invoke as busybox sh for shell, or create symlinks: busybox --install /bin. In scripts, use /bin/busybox directly for portability.

CONFIGURATION

Built with BusyBox make menuconfig; enable applets under 'Busybox Settings > Build Options'. Static builds common for minimal deps.

HISTORY

Created in 1996 by Erik Andersen for the Linux Router Project to consolidate utilities in embedded Linux. Maintained as open-source (GPLv2), it gained popularity with BusyBox 1.0 in 2001. Key milestones: applet count grew from ~70 to 450+; integrated into uClibc ecosystem; now standard in Yocto, Buildroot, and Android.

SEE ALSO

toybox(1), coreutils(1), util-linux(1), inetutils(1)

Copied to clipboard