WIN32 native port of BusyBox. For additional information and binaries see my website.
C Shell Makefile C++ Yacc HTML Other
Pull request Compare This branch is 562 commits ahead of pclouds:master.
Latest commit 373ca86 Jan 8, 2017 @rmyorston unzip: use data from local header rather than CDF
The zip file referenced in this bug report:

   https://bugs.busybox.net/show_bug.cgi?id=9536

isn't extracted correctly with the upstream fix.
Permalink
Failed to load latest commit information.
applets Merge branch 'busybox' into merge Jan 8, 2017
applets_sh applets_sh/*: Add a few more examples of "shell applets" Feb 9, 2012
arch/i386 add comment why preferred stack boundary is 4 on i386 Jul 23, 2007
archival unzip: use data from local header rather than CDF Jan 8, 2017
configs Update default configuration Jan 4, 2017
console-tools Convert all console-tools/* applets to "new style" applet definitions Nov 23, 2016
coreutils Merge branch 'busybox' into merge Jan 4, 2017
debianutils Merge branch 'busybox' into merge Jul 7, 2016
docs docs: Update filenames in keep_data_small.txt Aug 22, 2016
e2fsprogs Code style fixes, no code changes Nov 28, 2016
editors Merge branch 'busybox' into merge Nov 29, 2016
examples README_distro_proposal.txt: typo fixes Jan 3, 2017
findutils Merge branch 'busybox' into merge Nov 29, 2016
include Merge branch 'busybox' into merge Jan 4, 2017
init Tweak some config defaults; fix MODPROBE_SMALL ordering in "make config" Dec 22, 2016
libbb Merge branch 'busybox' into merge Jan 8, 2017
libpwdgrp libbb: make parse_chown_usergroup_or_die() set unspecified uid/gid to -1 Oct 19, 2015
loginutils Selinux complains about deprecated selinux/flask.h, stop including it Dec 23, 2016
mailutils Convert all mailutils/* applets to "new style" applet definitions Nov 23, 2016
miscutils Merge branch 'busybox' into merge Nov 29, 2016
modutils modutils: remove special handling of uClibc Jan 4, 2017
networking Merge branch 'busybox' into merge Jan 8, 2017
printutils printutils/*: convert to new-style "one file" applets Oct 18, 2015
procps Merge branch 'busybox' into merge Jan 4, 2017
qemu_multiarch_testing qemu_multiarch_testing: small improvements Jan 2, 2017
runit randomconfig fixes Dec 8, 2016
scripts Merge branch 'busybox' into merge Jan 4, 2017
selinux Selinux complains about deprecated selinux/flask.h, stop including it Dec 23, 2016
shell Merge branch 'busybox' into merge Jan 8, 2017
sysklogd fix breakage found by mass one-applet builds Dec 23, 2016
testsuite unzip: properly use CDF to find compressed files. Closes 9536 Jan 5, 2017
util-linux Merge branch 'busybox' into merge Jan 4, 2017
win32 win32: allow ANSI emulation to be disabled Nov 10, 2016
.gitignore Merge branch 'busybox' into merge Mar 14, 2015
.indent.pro First revision of the Busybox Style Guide and an accompanying .indent… Jul 24, 2000
AUTHORS AUTHORS: Add myself to AUTHORS Sep 22, 2016
Config.in Merge branch 'busybox' into merge Nov 29, 2016
INSTALL Tweak INSTALL text Apr 17, 2012
LICENSE LICENSE: update address of the FSF May 6, 2009
Makefile Merge branch 'busybox' into merge Jan 4, 2017
Makefile.custom applets: Add installation of individual binaries Jul 1, 2015
Makefile.flags mingw: add -fno-ident to CFLAGS Feb 22, 2016
Makefile.help build system: "make hosttools" doesn't exist, remove it from "make help" Jan 9, 2014
README Merge branch 'busybox' into merge May 18, 2015
README.md Update README.md Jan 4, 2017
TODO TODO file: remove mpstat, iostat, powertop - we have them now Nov 4, 2015
TODO_unicode ls: unicode fixes Jan 31, 2010
make_single_applets.sh make_single_applets.sh: SH_IS_HUSH needs special handling too Dec 23, 2016

README.md

Status

Things may work for you, or may not. Things may never work because of huge differences between Linux and Windows. Or things may work in future, if you report the problem to https://github.com/rmyorston/busybox-w32. If you don't have a GitHub account you can email me: rmy@pobox.com.

Building

You need a MinGW compiler and a POSIX environment (so that make menuconfig works). I cross-compile on Linux. On Fedora or RHEL/CentOS+EPEL installing mingw32-gcc (32-bit build) or mingw64-gcc (64-bit build) will pull in everything needed.

To start, run make mingw32_defconfig or make mingw64_defconfig. You can then customize your build with make menuconfig.

In particular you may need to adjust the compiler by going to Busybox Settings -> Build Options -> Cross Compiler Prefix

Then just make.

Limitations

  • Use forward slashes in paths: Windows doesn't mind and the shell will be happier.
  • Don't do wild things with Windows drive or UNC notation.
  • Wildcard expansion is disabled by default, though it can be turned on at compile time. This only affects command line arguments to the binary: the BusyBox shell has full support for wildcards.
  • Handling of users, groups and permissions is totally bogus. The system only admits to knowing about the current user and always returns the same hardcoded uid, gid and permission values.
  • Some crufty old Windows code (Windows XP, cmd.exe) doesn't like forward slashes in environment variables. The -X shell option (which must be the first argument) prevents busybox-w32 from changing backslashes to forward slashes. If Windows programs don't run from the shell it's worth trying it.
  • If you want to install 32-bit BusyBox in a system directory on a 64-bit version of Windows you should put it in C:\Windows\SysWOW64, not C:\Windows\System32 as you might expect. On 64-bit systems the latter is for 64-bit binaries.
  • ANSI escape sequences are emulated by converting to the equivalent in the Windows console API. Setting the environment variable BB_SKIP_ANSI_EMULATION will cause ANSI escapes to be passed to the console without emulation. This may be useful for Windows consoles that support ANSI escapes (e.g. ConEmu).