BusyBox for Windows

BusyBox is a single binary that contains many common Unix tools. It's often found in embedded Linux systems like routers, in Android smartphones, in Linux containers and anywhere else it would be handy to have a compact set of Unix command line tools.

Screenshot of BusyBox running on Windows

busybox-w32 is a port of BusyBox to the Microsoft Windows WIN32 API. It brings a subset of the functionality of BusyBox to Windows in a single self-contained native executable.

This version of BusyBox implements well over a hundred Unix-style commands. Some of the more significant are:

ash
The BusyBox shell is based on ash. It strives to be POSIX-compatible, though it does support some features of bash. A UNIX-style shell is something like the Windows command prompt, though much more powerful. It can be used as an interactive command line or to run shell scripts (like Windows batch files, though again, much more powerful).
awk
awk is a scripting language with a particular emphasis on pattern matching. It's commonly used to process text files containing rows and columns of data.
sed
sed is a stream editor. It can be used to make automatic, non-interactive changes to text files.
vi
vi is a powerful visual editor. If you're already familiar with vi you'll know what to expect. If not you should be aware that it's not particularly intuitive: you need to learn how to use vi. Try this BusyBox vi tutorial.

Other staples of Unix shell programming, such as find and grep are also available. Most of the commands have a --help option that displays a brief description and documents the available options. Help for everything in the current release is available in this man page.

If you need the full power of bash or the other GNU utilities busybox-w32 may not be what you want: Cygwin , Gow or UnxUtils may be more suitable. However, if you need to ship some shell scripts with your software or if you need to run some random Unix utility on Windows busybox-w32 may be a compact alternative. The full executable is less than half the size of the Cygwin setup program!

You can run individual BusyBox commands from a Command Prompt window:

   C:\Users\rmy>busybox uname -a
   Window_NT win81 6.2 9200 i686 MS/Windows
However, for the best experience I recommend using the BusyBox shell. This is configured to run BusyBox commands without having to link each of them into your path. Set up a shortcut on your desktop to run the shell using a command like this:

   C:\path\to\busybox.exe sh -l

The last character there is a lowercase 'L' (for login).

Though I don't recommend it, it's possible to create links to each of the BusyBox applets using the command:

   busybox --install C:\path\to\directory

Omitting the directory will result in the links being made in the same directory as the busybox.exe executable you're running. The --install option creates 'hard' links which are available on NTFS filesystems but not FAT. Adding the option -s creates symbolic links, but this may not work if you don't have the required privileges.

It's possible to remove the hard links to busybox.exe (including busybox.exe itself) by running:

   busybox --uninstall C:\path\to\busybox

Since Microsoft Windows can't delete a running executable this only works if the 'busybox' in the command above is different from the binary you're trying to delete. The command:

   busybox --uninstall -n C:\path\to\busybox

displays the links to the binary without deleting them.

If you want to install a 32-bit build of BusyBox in a system directory on a 64-bit Windows system you should put it in C:\Windows\SysWOW64, which is the correct location for 32-bit binaries on 64-bit Windows. Putting it in C:\Windows\System32 will result in mysterious failures.

Documentation

Downloads

From time to time binary builds and source tarballs will be made available. The latest version is always busybox.exe. Currently this executable is 614,926 bytes in size.

A checksum for this binary (and all others) is in the SHA256SUM file. A GPG signature for the checksum file has been created using this key. The same key is used to sign release tags in the Git source repository. You can also get a copy of the key from GitHub.

The 32-bit binary above will work on 64-bit systems but if you have a 64-bit version of Windows there's some advantage in using the 64-bit executable busybox64.exe. It's 659,968 bytes in size.

An experimental 64-bit binary with Unicode support is also available (busybox64u.exe). This only works on Windows 10 release 1903 and higher or Windows 11. See here for additional information. It's 666,112 bytes in size.

A binary for 64-bit Windows on ARM systems is provided as busybox64a.exe. It's 670,208 bytes in size. Take care to download this binary for Windows on ARM: binaries for other architectures will run, slowly and imperfectly, as emulations.

Note:

The binaries are built using the MinGW-w64 and llvm-mingw toolchains on Fedora Linux and are tested on Microsoft Windows 7, 8.1, 10 and 11. busybox-w32 is also known to work on Windows XP, ReactOS and WINE, though with reduced functionality.

Source is available in a Git repository which is mirrored on GitHub and Gitlab. It can also be obtained using (IPv6 only):

   git clone git://git.frippery.org/busybox-w32

Bug reports can be submitted via GitHub, GitLab or by email to the address below.


Ron Yorston
15th February 2013 (updated 21st February 2024)