busybox
Provide minimal tools for embedded systems
TLDR
Execute a BusyBox function
Display help and a list of functions
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.


