123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- Please see the LICENSE file for details on copying and usage.
- Please refer to the INSTALL file for instructions on how to build.
- What is busybox:
- BusyBox combines tiny versions of many common UNIX utilities into a single
- small executable. It provides minimalist replacements for most of the
- utilities you usually find in bzip2, coreutils, dhcp, diffutils, e2fsprogs,
- file, findutils, gawk, grep, inetutils, less, modutils, net-tools, procps,
- sed, shadow, sysklogd, sysvinit, tar, util-linux, and vim. The utilities
- in BusyBox often have fewer options than their full-featured cousins;
- however, the options that are included provide the expected functionality
- and behave very much like their larger counterparts.
- BusyBox has been written with size-optimization and limited resources in
- mind, both to produce small binaries and to reduce run-time memory usage.
- Busybox is also extremely modular so you can easily include or exclude
- commands (or features) at compile time. This makes it easy to customize
- embedded systems; to create a working system, just add /dev, /etc, and a
- Linux kernel. Busybox (usually together with uClibc) has also been used as
- a component of "thin client" desktop systems, live-CD distributions, rescue
- disks, installers, and so on.
- BusyBox provides a fairly complete POSIX environment for any small system,
- both embedded environments and more full featured systems concerned about
- space. Busybox is slowly working towards implementing the full Single Unix
- Specification V3 (http://www.opengroup.org/onlinepubs/009695399/), but isn't
- there yet (and for size reasons will probably support at most UTF-8 for
- internationalization). We are also interested in passing the Linux Test
- Project (http://ltp.sourceforge.net).
- ----------------
- Using busybox:
- BusyBox is extremely configurable. This allows you to include only the
- components and options you need, thereby reducing binary size. Run 'make
- config' or 'make menuconfig' to select the functionality that you wish to
- enable. (See 'make help' for more commands.)
- The behavior of busybox is determined by the name it's called under: as
- "cp" it behaves like cp, as "sed" it behaves like sed, and so on. Called
- as "busybox" it takes the second argument as the name of the applet to
- run (I.E. "./busybox ls -l /proc").
- The "standalone shell" mode is an easy way to try out busybox; this is a
- command shell that calls the builtin applets without needing them to be
- installed in the path. (Note that this requires /proc to be mounted, if
- testing from a boot floppy or in a chroot environment.)
- The build automatically generates a file "busybox.links", which is used by
- 'make install' to create symlinks to the BusyBox binary for all compiled in
- commands. This uses the CONFIG_PREFIX environment variable to specify
- where to install, and installs hardlinks or symlinks depending
- on the configuration preferences. (You can also manually run
- the install script at "applets/install.sh").
- ----------------
- Downloading the current source code:
- Source for the latest released version, as well as daily snapshots, can always
- be downloaded from
- http://busybox.net/downloads/
- You can browse the up to the minute source code and change history online.
- http://www.busybox.net/cgi-bin/viewcvs.cgi/trunk/busybox/
- Anonymous SVN access is available. For instructions, check out:
- http://busybox.net/subversion.html
- For those that are actively contributing and would like to check files in,
- see:
- http://busybox.net/developer.html
- The developers also have a bug and patch tracking system
- (http://bugs.busybox.net) although posting a bug/patch to the mailing list
- is generally a faster way of getting it fixed, and the complete archive of
- what happened is the subversion changelog.
- Note: if you want to compile busybox in a busybox environment you must
- select ENABLE_DESKTOP.
- ----------------
- getting help:
- when you find you need help, you can check out the busybox mailing list
- archives at http://busybox.net/lists/busybox/ or even join
- the mailing list if you are interested.
- ----------------
- bugs:
- if you find bugs, please submit a detailed bug report to the busybox mailing
- list at busybox@busybox.net. a well-written bug report should include a
- transcript of a shell session that demonstrates the bad behavior and enables
- anyone else to duplicate the bug on their own machine. the following is such
- an example:
- to: busybox@busybox.net
- from: diligent@testing.linux.org
- subject: /bin/date doesn't work
- package: busybox
- version: 1.00
- when i execute busybox 'date' it produces unexpected results.
- with gnu date i get the following output:
- $ date
- fri oct 8 14:19:41 mdt 2004
- but when i use busybox date i get this instead:
- $ date
- illegal instruction
- i am using debian unstable, kernel version 2.4.25-vrs2 on a netwinder,
- and the latest uclibc from cvs. thanks for the wonderful program!
- -diligent
- note the careful description and use of examples showing not only what
- busybox does, but also a counter example showing what an equivalent app
- does (or pointing to the text of a relevant standard). Bug reports lacking
- such detail may never be fixed... Thanks for understanding.
- ----------------
- Portability:
- Busybox is developed and tested on Linux 2.4 and 2.6 kernels, compiled
- with gcc (the unit-at-a-time optimizations in version 3.4 and later are
- worth upgrading to get, but older versions should work), and linked against
- uClibc (0.9.27 or greater) or glibc (2.2 or greater). In such an
- environment, the full set of busybox features should work, and if
- anything doesn't we want to know about it so we can fix it.
- There are many other environments out there, in which busybox may build
- and run just fine. We just don't test them. Since busybox consists of a
- large number of more or less independent applets, portability is a question
- of which features work where. Some busybox applets (such as cat and rm) are
- highly portable and likely to work just about anywhere, while others (such as
- insmod and losetup) require recent Linux kernels with recent C libraries.
- Earlier versions of Linux and glibc may or may not work, for any given
- configuration. Linux 2.2 or earlier should mostly work (there's still
- some support code in things like mount.c) but this is no longer regularly
- tested, and inherently won't support certain features (such as long files
- and --bind mounts). The same is true for glibc 2.0 and 2.1: expect a higher
- testing and debugging burden using such old infrastructure. (The busybox
- developers are not very interested in supporting these older versions, but
- will probably accept small self-contained patches to fix simple problems.)
- Some environments are not recommended. Early versions of uClibc were buggy
- and missing many features: upgrade. Linking against libc5 or dietlibc is
- not supported and not interesting to the busybox developers. (The first is
- obsolete and has no known size or feature advantages over uClibc, the second
- has known bugs that its developers have actively refused to fix.) Ancient
- Linux kernels (2.0.x and earlier) are similarly uninteresting.
- In theory it's possible to use Busybox under other operating systems (such as
- MacOS X, Solaris, Cygwin, or the BSD Fork Du Jour). This generally involves
- a different kernel and a different C library at the same time. While it
- should be possible to port the majority of the code to work in one of
- these environments, don't be suprised if it doesn't work out of the box. If
- you're into that sort of thing, start small (selecting just a few applets)
- and work your way up.
- Shaun Jackman has recently (2005) ported busybox to a combination of newlib
- and libgloss, and some of his patches have been integrated. This platform
- may join glibc/uclibc and Linux as a supported combination with the 1.1
- release, but is not supported in 1.0.
- Supported hardware:
- BusyBox in general will build on any architecture supported by gcc. We
- support both 32 and 64 bit platforms, and both big and little endian
- systems.
- Under 2.4 Linux kernels, kernel module loading was implemented in a
- platform-specific manner. Busybox's insmod utility has been reported to
- work under ARM, CRIS, H8/300, x86, ia64, x86_64, m68k, MIPS, PowerPC, S390,
- SH3/4/5, Sparc, v850e, and x86_64. Anything else probably won't work.
- The module loading mechanism for the 2.6 kernel is much more generic, and
- we believe 2.6.x kernel module loading support should work on all
- architectures supported by the kernel.
- ----------------
- Please feed suggestions, bug reports, insults, and bribes back to the busybox
- maintainer:
- Denis Vlasenko
- <vda.linux@googlemail.com>
|