add build files
This commit is contained in:
parent
0cd3096b97
commit
ad93368a73
1
busybox-1.33.0/.busybox_unstripped.cmd
Normal file
1
busybox-1.33.0/.busybox_unstripped.cmd
Normal file
@ -0,0 +1 @@
|
|||||||
|
cmd_busybox_unstripped := /home/someone/minimal-linux-script/busybox-1.33.0/scripts/trylink "busybox_unstripped" "gcc" "-malign-data=abi -Wall -Wshadow -Wwrite-strings -Wundef -Wstrict-prototypes -Wunused -Wunused-parameter -Wunused-function -Wunused-value -Wmissing-prototypes -Wmissing-declarations -Wno-format-security -Wdeclaration-after-statement -Wold-style-definition -finline-limit=0 -fno-builtin-strlen -fomit-frame-pointer -ffunction-sections -fdata-sections -fno-guess-branch-probability -funsigned-char -falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1 -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-builtin-printf -Os -static" " " " applets/built-in.o" " archival/lib.a archival/libarchive/lib.a console-tools/lib.a coreutils/lib.a coreutils/libcoreutils/lib.a debianutils/lib.a klibc-utils/lib.a e2fsprogs/lib.a editors/lib.a findutils/lib.a init/lib.a libbb/lib.a libpwdgrp/lib.a loginutils/lib.a mailutils/lib.a miscutils/lib.a modutils/lib.a networking/lib.a networking/libiproute/lib.a networking/udhcp/lib.a printutils/lib.a procps/lib.a runit/lib.a selinux/lib.a shell/lib.a sysklogd/lib.a util-linux/lib.a util-linux/volume_id/lib.a archival/built-in.o archival/libarchive/built-in.o console-tools/built-in.o coreutils/built-in.o coreutils/libcoreutils/built-in.o debianutils/built-in.o klibc-utils/built-in.o e2fsprogs/built-in.o editors/built-in.o findutils/built-in.o init/built-in.o libbb/built-in.o libpwdgrp/built-in.o loginutils/built-in.o mailutils/built-in.o miscutils/built-in.o modutils/built-in.o networking/built-in.o networking/libiproute/built-in.o networking/udhcp/built-in.o printutils/built-in.o procps/built-in.o runit/built-in.o selinux/built-in.o shell/built-in.o sysklogd/built-in.o util-linux/built-in.o util-linux/volume_id/built-in.o" "m rt crypt resolv" && /home/someone/minimal-linux-script/busybox-1.33.0/scripts/generate_BUFSIZ.sh --post include/common_bufsiz.h
|
1203
busybox-1.33.0/.config
Normal file
1203
busybox-1.33.0/.config
Normal file
File diff suppressed because it is too large
Load Diff
1203
busybox-1.33.0/.config.old
Normal file
1203
busybox-1.33.0/.config.old
Normal file
File diff suppressed because it is too large
Load Diff
33
busybox-1.33.0/.indent.pro
vendored
Normal file
33
busybox-1.33.0/.indent.pro
vendored
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
--blank-lines-after-declarations
|
||||||
|
--blank-lines-after-procedures
|
||||||
|
--break-before-boolean-operator
|
||||||
|
--no-blank-lines-after-commas
|
||||||
|
--braces-on-if-line
|
||||||
|
--braces-on-struct-decl-line
|
||||||
|
--comment-indentation25
|
||||||
|
--declaration-comment-column25
|
||||||
|
--no-comment-delimiters-on-blank-lines
|
||||||
|
--cuddle-else
|
||||||
|
--continuation-indentation4
|
||||||
|
--case-indentation0
|
||||||
|
--else-endif-column33
|
||||||
|
--space-after-cast
|
||||||
|
--line-comments-indentation0
|
||||||
|
--declaration-indentation1
|
||||||
|
--dont-format-first-column-comments
|
||||||
|
--dont-format-comments
|
||||||
|
--honour-newlines
|
||||||
|
--indent-level4
|
||||||
|
/* changed from 0 to 4 */
|
||||||
|
--parameter-indentation4
|
||||||
|
--line-length78 /* changed from 75 */
|
||||||
|
--continue-at-parentheses
|
||||||
|
--no-space-after-function-call-names
|
||||||
|
--dont-break-procedure-type
|
||||||
|
--dont-star-comments
|
||||||
|
--leave-optional-blank-lines
|
||||||
|
--dont-space-special-semicolon
|
||||||
|
--tab-size4
|
||||||
|
/* additions by Mark */
|
||||||
|
--case-brace-indentation0
|
||||||
|
--leave-preprocessor-space
|
32
busybox-1.33.0/.kconfig.d
Normal file
32
busybox-1.33.0/.kconfig.d
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
deps_config := \
|
||||||
|
sysklogd/Config.in \
|
||||||
|
shell/Config.in \
|
||||||
|
selinux/Config.in \
|
||||||
|
runit/Config.in \
|
||||||
|
procps/Config.in \
|
||||||
|
mailutils/Config.in \
|
||||||
|
printutils/Config.in \
|
||||||
|
networking/udhcp/Config.in \
|
||||||
|
networking/Config.in \
|
||||||
|
miscutils/Config.in \
|
||||||
|
util-linux/volume_id/Config.in \
|
||||||
|
util-linux/Config.in \
|
||||||
|
modutils/Config.in \
|
||||||
|
e2fsprogs/Config.in \
|
||||||
|
loginutils/Config.in \
|
||||||
|
init/Config.in \
|
||||||
|
findutils/Config.in \
|
||||||
|
editors/Config.in \
|
||||||
|
klibc-utils/Config.in \
|
||||||
|
debianutils/Config.in \
|
||||||
|
console-tools/Config.in \
|
||||||
|
coreutils/Config.in \
|
||||||
|
archival/Config.in \
|
||||||
|
libbb/Config.in \
|
||||||
|
Config.in
|
||||||
|
|
||||||
|
.config include/autoconf.h: $(deps_config)
|
||||||
|
|
||||||
|
include/autoconf.h: .config
|
||||||
|
|
||||||
|
$(deps_config):
|
1
busybox-1.33.0/.kernelrelease
Normal file
1
busybox-1.33.0/.kernelrelease
Normal file
@ -0,0 +1 @@
|
|||||||
|
1.33.0
|
183
busybox-1.33.0/AUTHORS
Normal file
183
busybox-1.33.0/AUTHORS
Normal file
@ -0,0 +1,183 @@
|
|||||||
|
List of the authors of code contained in BusyBox.
|
||||||
|
|
||||||
|
If you have code in BusyBox, you should be listed here. If you should be
|
||||||
|
listed, or the description of what you have done needs more detail, or is
|
||||||
|
incorrect, _please_ let me know.
|
||||||
|
|
||||||
|
-Erik
|
||||||
|
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Peter Willis <psyphreak@phreaker.net>
|
||||||
|
eject
|
||||||
|
|
||||||
|
Emanuele Aina <emanuele.aina@tiscali.it>
|
||||||
|
run-parts
|
||||||
|
|
||||||
|
Erik Andersen <andersen@codepoet.org>
|
||||||
|
Tons of new stuff, major rewrite of most of the
|
||||||
|
core apps, tons of new apps as noted in header files.
|
||||||
|
Lots of tedious effort writing these boring docs that
|
||||||
|
nobody is going to actually read.
|
||||||
|
|
||||||
|
Laurence Anderson <l.d.anderson@warwick.ac.uk>
|
||||||
|
rpm2cpio, unzip, get_header_cpio, read_gz interface, rpm
|
||||||
|
|
||||||
|
Jeff Angielski <jeff@theptrgroup.com>
|
||||||
|
ftpput, ftpget
|
||||||
|
|
||||||
|
Enrik Berkhan <Enrik.Berkhan@inka.de>
|
||||||
|
setconsole
|
||||||
|
|
||||||
|
Jim Bauer <jfbauer@nfr.com>
|
||||||
|
modprobe shell dependency
|
||||||
|
|
||||||
|
Edward Betts <edward@debian.org>
|
||||||
|
expr, hostid, logname, whoami
|
||||||
|
|
||||||
|
John Beppu <beppu@codepoet.org>
|
||||||
|
du, nslookup, sort
|
||||||
|
|
||||||
|
David Brownell <dbrownell@users.sourceforge.net>
|
||||||
|
zcip
|
||||||
|
|
||||||
|
Brian Candler <B.Candler@pobox.com>
|
||||||
|
tiny-ls(ls)
|
||||||
|
|
||||||
|
Randolph Chung <tausq@debian.org>
|
||||||
|
fbset, ping, hostname
|
||||||
|
|
||||||
|
Dave Cinege <dcinege@psychosis.com>
|
||||||
|
more(v2), makedevs, dutmp, modularization, auto links file,
|
||||||
|
various fixes, Linux Router Project maintenance
|
||||||
|
|
||||||
|
Jordan Crouse <jordan@cosmicpenguin.net>
|
||||||
|
ipcalc
|
||||||
|
|
||||||
|
Magnus Damm <damm@opensource.se>
|
||||||
|
tftp client
|
||||||
|
insmod powerpc support
|
||||||
|
|
||||||
|
Larry Doolittle <ldoolitt@recycle.lbl.gov>
|
||||||
|
pristine source directory compilation, lots of patches and fixes.
|
||||||
|
|
||||||
|
Glenn Engel <glenne@engel.org>
|
||||||
|
httpd
|
||||||
|
|
||||||
|
Gennady Feldman <gfeldman@gena01.com>
|
||||||
|
Sysklogd (single threaded syslogd, IPC Circular buffer support,
|
||||||
|
logread), various fixes.
|
||||||
|
|
||||||
|
Robert Griebl <sandman@handhelds.org>
|
||||||
|
modprobe, hwclock, suid/sgid handling, tinylogin integration
|
||||||
|
many bugfixes and enhancements
|
||||||
|
|
||||||
|
Karl M. Hegbloom <karlheg@debian.org>
|
||||||
|
cp_mv.c, the test suite, various fixes to utility.c, &c.
|
||||||
|
|
||||||
|
Daniel Jacobowitz <dan@debian.org>
|
||||||
|
mktemp.c
|
||||||
|
|
||||||
|
Matt Kraai <kraai@alumni.cmu.edu>
|
||||||
|
documentation, bugfixes, test suite
|
||||||
|
|
||||||
|
Rob Landley <rob@landley.net>
|
||||||
|
Became busybox maintainer in 2006.
|
||||||
|
|
||||||
|
sed (major rewrite in 2003, and I now maintain the thing)
|
||||||
|
bunzip2 (complete from-scratch rewrite, then mjn3 optimized the result)
|
||||||
|
sort (more or less from scratch rewrite in 2004, I now maintain it)
|
||||||
|
mount (rewrite in 2005, I maintain the new one)
|
||||||
|
|
||||||
|
Stephan Linz <linz@li-pro.net>
|
||||||
|
ipcalc, Red Hat equivalence
|
||||||
|
|
||||||
|
John Lombardo <john@deltanet.com>
|
||||||
|
tr
|
||||||
|
|
||||||
|
Glenn McGrath <glenn.l.mcgrath@gmail.com>
|
||||||
|
Common unarchiving code and unarchiving applets, ifupdown, ftpgetput,
|
||||||
|
nameif, sed, patch, fold, install, uudecode.
|
||||||
|
Various bugfixes, review and apply numerous patches.
|
||||||
|
|
||||||
|
Manuel Novoa III <mjn3@codepoet.org>
|
||||||
|
cat, head, mkfifo, mknod, rmdir, sleep, tee, tty, uniq, usleep, wc, yes,
|
||||||
|
mesg, vconfig, nice, renice,
|
||||||
|
make_directory, parse_mode, dirname, mode_string,
|
||||||
|
get_last_path_component, simplify_path, and a number trivial libbb routines
|
||||||
|
|
||||||
|
also bug fixes, partial rewrites, and size optimizations in
|
||||||
|
ash, basename, cal, cmp, cp, df, du, echo, env, ln, logname, md5sum, mkdir,
|
||||||
|
mv, realpath, rm, sort, tail, touch, uname, watch, arith, human_readable,
|
||||||
|
interface, dutmp, ifconfig, route
|
||||||
|
|
||||||
|
Vladimir Oleynik <dzo@simtreas.ru>
|
||||||
|
cmdedit; bb_mkdep, xargs(current), httpd(current);
|
||||||
|
ports: ash, crond, fdisk (initial, unmaintained now), inetd, stty, traceroute,
|
||||||
|
top;
|
||||||
|
locale, various fixes
|
||||||
|
and irreconcilable critic of everything not perfect.
|
||||||
|
|
||||||
|
Bruce Perens <bruce@pixar.com>
|
||||||
|
Original author of BusyBox in 1995, 1996. Some of his code can
|
||||||
|
still be found hiding here and there...
|
||||||
|
|
||||||
|
Rodney Radford <rradford@mindspring.com>
|
||||||
|
ipcs, ipcrm
|
||||||
|
|
||||||
|
Tim Riker <Tim@Rikers.org>
|
||||||
|
bug fixes, member of fan club
|
||||||
|
|
||||||
|
Kent Robotti <robotti@metconnect.com>
|
||||||
|
reset, tons and tons of bug reports and patches.
|
||||||
|
|
||||||
|
Chip Rosenthal <chip@unicom.com>, <crosenth@covad.com>
|
||||||
|
wget - Contributed by permission of Covad Communications
|
||||||
|
|
||||||
|
Pavel Roskin <proski@gnu.org>
|
||||||
|
Lots of bugs fixes and patches.
|
||||||
|
|
||||||
|
Gyepi Sam <gyepi@praxis-sw.com>
|
||||||
|
Remote logging feature for syslogd
|
||||||
|
|
||||||
|
Rob Sullivan <cogito.ergo.cogito@gmail.com>
|
||||||
|
comm
|
||||||
|
|
||||||
|
Linus Torvalds
|
||||||
|
mkswap, fsck.minix, mkfs.minix
|
||||||
|
|
||||||
|
Linus Walleij
|
||||||
|
fbset and fbsplash config RGBA parsing
|
||||||
|
rewrite of mdev helper to create devices from /sys/dev
|
||||||
|
|
||||||
|
Mark Whitley <markw@codepoet.org>
|
||||||
|
grep, sed, cut, xargs(previous),
|
||||||
|
style-guide, new-applet-HOWTO, bug fixes, etc.
|
||||||
|
|
||||||
|
Charles P. Wright <cpwright@villagenet.com>
|
||||||
|
gzip, mini-netcat(nc)
|
||||||
|
|
||||||
|
Enrique Zanardi <ezanardi@ull.es>
|
||||||
|
tarcat (since removed), loadkmap, various fixes, Debian maintenance
|
||||||
|
|
||||||
|
Tito Ragusa <farmatito@tiscali.it>
|
||||||
|
devfsd and size optimizations in strings, openvt, chvt, deallocvt, hdparm,
|
||||||
|
fdformat, lsattr, chattr, id and eject.
|
||||||
|
|
||||||
|
Paul Fox <pgf@foxharp.boston.ma.us>
|
||||||
|
vi editing mode for ash, various other patches/fixes
|
||||||
|
|
||||||
|
Roberto A. Foglietta <me@roberto.foglietta.name>
|
||||||
|
port: dnsd
|
||||||
|
|
||||||
|
Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
|
||||||
|
misc
|
||||||
|
|
||||||
|
Mike Frysinger <vapier@gentoo.org>
|
||||||
|
initial e2fsprogs, printenv, setarch, sum, misc
|
||||||
|
|
||||||
|
Jie Zhang <jie.zhang@analog.com>
|
||||||
|
fixed two bugs in msh and hush (exitcode of killed processes)
|
||||||
|
|
||||||
|
Maxime Coste <mawww@kakoune.org>
|
||||||
|
paste implementation
|
742
busybox-1.33.0/Config.in
Normal file
742
busybox-1.33.0/Config.in
Normal file
@ -0,0 +1,742 @@
|
|||||||
|
#
|
||||||
|
# For a description of the syntax of this configuration file,
|
||||||
|
# see docs/Kconfig-language.txt.
|
||||||
|
#
|
||||||
|
|
||||||
|
mainmenu "Configuration"
|
||||||
|
|
||||||
|
config HAVE_DOT_CONFIG
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
menu "Settings"
|
||||||
|
|
||||||
|
config DESKTOP
|
||||||
|
bool "Enable compatibility for full-blown desktop systems (8kb)"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
Enable applet options and features which are not essential.
|
||||||
|
Many applet options have dedicated config options to (de)select them
|
||||||
|
under that applet; this options enables those options which have no
|
||||||
|
individual config item for them.
|
||||||
|
|
||||||
|
Select this if you plan to use busybox on full-blown desktop machine
|
||||||
|
with common Linux distro, which needs higher level of command-line
|
||||||
|
compatibility.
|
||||||
|
|
||||||
|
If you are preparing your build to be used on an embedded box
|
||||||
|
where you have tighter control over the entire set of userspace
|
||||||
|
tools, you can unselect this option for smaller code size.
|
||||||
|
|
||||||
|
config EXTRA_COMPAT
|
||||||
|
bool "Provide compatible behavior for rare corner cases (bigger code)"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
This option makes grep, sed etc handle rare corner cases
|
||||||
|
(embedded NUL bytes and such). This makes code bigger and uses
|
||||||
|
some GNU extensions in libc. You probably only need this option
|
||||||
|
if you plan to run busybox on desktop.
|
||||||
|
|
||||||
|
config FEDORA_COMPAT
|
||||||
|
bool "Building for Fedora distribution"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
This option makes some tools behave like they do on Fedora.
|
||||||
|
|
||||||
|
At the time of this writing (2017-08) this only affects uname:
|
||||||
|
normally, uname -p (processor) and uname -i (platform)
|
||||||
|
are shown as "unknown", but with this option uname -p
|
||||||
|
shows the same string as uname -m (machine type),
|
||||||
|
and so does uname -i unless machine type is i486/i586/i686 -
|
||||||
|
then uname -i shows "i386".
|
||||||
|
|
||||||
|
config INCLUDE_SUSv2
|
||||||
|
bool "Enable obsolete features removed before SUSv3"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
This option will enable backwards compatibility with SuSv2,
|
||||||
|
specifically, old-style numeric options ('command -1 <file>')
|
||||||
|
will be supported in head, tail, and fold. (Note: should
|
||||||
|
affect renice too.)
|
||||||
|
|
||||||
|
config LONG_OPTS
|
||||||
|
bool "Support --long-options"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
Enable this if you want busybox applets to use the gnu --long-option
|
||||||
|
style, in addition to single character -a -b -c style options.
|
||||||
|
|
||||||
|
config SHOW_USAGE
|
||||||
|
bool "Show applet usage messages"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
Enabling this option, applets will show terse help messages
|
||||||
|
when invoked with wrong arguments.
|
||||||
|
If you do not want to show any (helpful) usage message when
|
||||||
|
issuing wrong command syntax, you can say 'N' here,
|
||||||
|
saving approximately 7k.
|
||||||
|
|
||||||
|
config FEATURE_VERBOSE_USAGE
|
||||||
|
bool "Show verbose applet usage messages"
|
||||||
|
default y
|
||||||
|
depends on SHOW_USAGE
|
||||||
|
help
|
||||||
|
All applets will show verbose help messages when invoked with --help.
|
||||||
|
This will add a lot of text to the binary.
|
||||||
|
|
||||||
|
config FEATURE_COMPRESS_USAGE
|
||||||
|
bool "Store applet usage messages in compressed form"
|
||||||
|
default y
|
||||||
|
depends on SHOW_USAGE
|
||||||
|
help
|
||||||
|
Store usage messages in .bz2 compressed form, uncompress them
|
||||||
|
on-the-fly when "APPLET --help" is run.
|
||||||
|
|
||||||
|
If you have a really tiny busybox with few applets enabled (and
|
||||||
|
bunzip2 isn't one of them), the overhead of the decompressor might
|
||||||
|
be noticeable. Also, if you run executables directly from ROM
|
||||||
|
and have very little memory, this might not be a win. Otherwise,
|
||||||
|
you probably want this.
|
||||||
|
|
||||||
|
config LFS
|
||||||
|
bool "Support files > 2 GB"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
If you need to work with large files, enable this option.
|
||||||
|
This will have no effect if your kernel or your C
|
||||||
|
library lacks large file support for large files. Some of the
|
||||||
|
programs that can benefit from large file support include dd, gzip,
|
||||||
|
cp, mount, tar.
|
||||||
|
|
||||||
|
config PAM
|
||||||
|
bool "Support PAM (Pluggable Authentication Modules)"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Use PAM in some applets (currently login and httpd) instead
|
||||||
|
of direct access to password database.
|
||||||
|
|
||||||
|
config FEATURE_DEVPTS
|
||||||
|
bool "Use the devpts filesystem for Unix98 PTYs"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
Enable if you want to use Unix98 PTY support. If enabled,
|
||||||
|
busybox will use /dev/ptmx for the master side of the pseudoterminal
|
||||||
|
and /dev/pts/<number> for the slave side. Otherwise, BSD style
|
||||||
|
/dev/ttyp<number> will be used. To use this option, you should have
|
||||||
|
devpts mounted.
|
||||||
|
|
||||||
|
config FEATURE_UTMP
|
||||||
|
bool "Support utmp file"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
The file /var/run/utmp is used to track who is currently logged in.
|
||||||
|
With this option on, certain applets (getty, login, telnetd etc)
|
||||||
|
will create and delete entries there.
|
||||||
|
"who" applet requires this option.
|
||||||
|
|
||||||
|
config FEATURE_WTMP
|
||||||
|
bool "Support wtmp file"
|
||||||
|
default y
|
||||||
|
depends on FEATURE_UTMP
|
||||||
|
help
|
||||||
|
The file /var/run/wtmp is used to track when users have logged into
|
||||||
|
and logged out of the system.
|
||||||
|
With this option on, certain applets (getty, login, telnetd etc)
|
||||||
|
will append new entries there.
|
||||||
|
"last" applet requires this option.
|
||||||
|
|
||||||
|
config FEATURE_PIDFILE
|
||||||
|
bool "Support writing pidfiles"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
This option makes some applets (e.g. crond, syslogd, inetd) write
|
||||||
|
a pidfile at the configured PID_FILE_PATH. It has no effect
|
||||||
|
on applets which require pidfiles to run.
|
||||||
|
|
||||||
|
config PID_FILE_PATH
|
||||||
|
string "Directory for pidfiles"
|
||||||
|
default "/var/run"
|
||||||
|
depends on FEATURE_PIDFILE || FEATURE_CROND_SPECIAL_TIMES
|
||||||
|
help
|
||||||
|
This is the default path where pidfiles are created. Applets which
|
||||||
|
allow you to set the pidfile path on the command line will override
|
||||||
|
this value. The option has no effect on applets that require you to
|
||||||
|
specify a pidfile path. When crond has the 'Support special times'
|
||||||
|
option enabled, the 'crond.reboot' file is also stored here.
|
||||||
|
|
||||||
|
config BUSYBOX
|
||||||
|
bool "Include busybox applet"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
The busybox applet provides general help message and allows
|
||||||
|
the included applets to be listed. It also provides
|
||||||
|
optional --install command to create applet links. If you unselect
|
||||||
|
this option, running busybox without any arguments will give
|
||||||
|
just a cryptic error message:
|
||||||
|
|
||||||
|
$ busybox
|
||||||
|
busybox: applet not found
|
||||||
|
|
||||||
|
Running "busybox APPLET [ARGS...]" will still work, of course.
|
||||||
|
|
||||||
|
config FEATURE_SHOW_SCRIPT
|
||||||
|
bool "Support --show SCRIPT"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX
|
||||||
|
|
||||||
|
config FEATURE_INSTALLER
|
||||||
|
bool "Support --install [-s] to install applet links at runtime"
|
||||||
|
default y
|
||||||
|
depends on BUSYBOX
|
||||||
|
help
|
||||||
|
Enable 'busybox --install [-s]' support. This will allow you to use
|
||||||
|
busybox at runtime to create hard links or symlinks for all the
|
||||||
|
applets that are compiled into busybox.
|
||||||
|
|
||||||
|
config INSTALL_NO_USR
|
||||||
|
bool "Don't use /usr"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Disable use of /usr. "busybox --install" and "make install"
|
||||||
|
will install applets only to /bin and /sbin,
|
||||||
|
never to /usr/bin or /usr/sbin.
|
||||||
|
|
||||||
|
config FEATURE_SUID
|
||||||
|
bool "Drop SUID state for most applets"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
With this option you can install the busybox binary belonging
|
||||||
|
to root with the suid bit set, enabling some applets to perform
|
||||||
|
root-level operations even when run by ordinary users
|
||||||
|
(for example, mounting of user mounts in fstab needs this).
|
||||||
|
|
||||||
|
With this option enabled, busybox drops privileges for applets
|
||||||
|
that don't need root access, before entering their main() function.
|
||||||
|
|
||||||
|
If you are really paranoid and don't want even initial busybox code
|
||||||
|
to run under root for every applet, build two busybox binaries with
|
||||||
|
different applets in them (and the appropriate symlinks pointing
|
||||||
|
to each binary), and only set the suid bit on the one that needs it.
|
||||||
|
|
||||||
|
Some applets which require root rights (need suid bit on the binary
|
||||||
|
or to be run by root) and will refuse to execute otherwise:
|
||||||
|
crontab, login, passwd, su, vlock, wall.
|
||||||
|
|
||||||
|
The applets which will use root rights if they have them
|
||||||
|
(via suid bit, or because run by root), but would try to work
|
||||||
|
without root right nevertheless:
|
||||||
|
findfs, ping[6], traceroute[6], mount.
|
||||||
|
|
||||||
|
Note that if you DO NOT select this option, but DO make busybox
|
||||||
|
suid root, ALL applets will run under root, which is a huge
|
||||||
|
security hole (think "cp /some/file /etc/passwd").
|
||||||
|
|
||||||
|
config FEATURE_SUID_CONFIG
|
||||||
|
bool "Enable SUID configuration via /etc/busybox.conf"
|
||||||
|
default y
|
||||||
|
depends on FEATURE_SUID
|
||||||
|
help
|
||||||
|
Allow the SUID/SGID state of an applet to be determined at runtime
|
||||||
|
by checking /etc/busybox.conf. (This is sort of a poor man's sudo.)
|
||||||
|
The format of this file is as follows:
|
||||||
|
|
||||||
|
APPLET = [Ssx-][Ssx-][x-] [USER.GROUP]
|
||||||
|
|
||||||
|
s: USER or GROUP is allowed to execute APPLET.
|
||||||
|
APPLET will run under USER or GROUP
|
||||||
|
(regardless of who's running it).
|
||||||
|
S: USER or GROUP is NOT allowed to execute APPLET.
|
||||||
|
APPLET will run under USER or GROUP.
|
||||||
|
This option is not very sensical.
|
||||||
|
x: USER/GROUP/others are allowed to execute APPLET.
|
||||||
|
No UID/GID change will be done when it is run.
|
||||||
|
-: USER/GROUP/others are not allowed to execute APPLET.
|
||||||
|
|
||||||
|
An example might help:
|
||||||
|
|
||||||
|
|[SUID]
|
||||||
|
|su = ssx root.0 # applet su can be run by anyone and runs with
|
||||||
|
| # euid=0,egid=0
|
||||||
|
|su = ssx # exactly the same
|
||||||
|
|
|
||||||
|
|mount = sx- root.disk # applet mount can be run by root and members
|
||||||
|
| # of group disk (but not anyone else)
|
||||||
|
| # and runs with euid=0 (egid is not changed)
|
||||||
|
|
|
||||||
|
|cp = --- # disable applet cp for everyone
|
||||||
|
|
||||||
|
The file has to be owned by user root, group root and has to be
|
||||||
|
writeable only by root:
|
||||||
|
(chown 0.0 /etc/busybox.conf; chmod 600 /etc/busybox.conf)
|
||||||
|
The busybox executable has to be owned by user root, group
|
||||||
|
root and has to be setuid root for this to work:
|
||||||
|
(chown 0.0 /bin/busybox; chmod 4755 /bin/busybox)
|
||||||
|
|
||||||
|
Robert 'sandman' Griebl has more information here:
|
||||||
|
<url: http://www.softforge.de/bb/suid.html >.
|
||||||
|
|
||||||
|
config FEATURE_SUID_CONFIG_QUIET
|
||||||
|
bool "Suppress warning message if /etc/busybox.conf is not readable"
|
||||||
|
default y
|
||||||
|
depends on FEATURE_SUID_CONFIG
|
||||||
|
help
|
||||||
|
/etc/busybox.conf should be readable by the user needing the SUID,
|
||||||
|
check this option to avoid users to be notified about missing
|
||||||
|
permissions.
|
||||||
|
|
||||||
|
config FEATURE_PREFER_APPLETS
|
||||||
|
bool "exec prefers applets"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
This is an experimental option which directs applets about to
|
||||||
|
call 'exec' to try and find an applicable busybox applet before
|
||||||
|
searching the PATH. This is typically done by exec'ing
|
||||||
|
/proc/self/exe.
|
||||||
|
|
||||||
|
This may affect shell, find -exec, xargs and similar applets.
|
||||||
|
They will use applets even if /bin/APPLET -> busybox link
|
||||||
|
is missing (or is not a link to busybox). However, this causes
|
||||||
|
problems in chroot jails without mounted /proc and with ps/top
|
||||||
|
(command name can be shown as 'exe' for applets started this way).
|
||||||
|
|
||||||
|
config BUSYBOX_EXEC_PATH
|
||||||
|
string "Path to busybox executable"
|
||||||
|
default "/proc/self/exe"
|
||||||
|
help
|
||||||
|
When applets need to run other applets, busybox
|
||||||
|
sometimes needs to exec() itself. When the /proc filesystem is
|
||||||
|
mounted, /proc/self/exe always points to the currently running
|
||||||
|
executable. If you haven't got /proc, set this to wherever you
|
||||||
|
want to run busybox from.
|
||||||
|
|
||||||
|
config SELINUX
|
||||||
|
bool "Support NSA Security Enhanced Linux"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Enable support for SELinux in applets ls, ps, and id. Also provide
|
||||||
|
the option of compiling in SELinux applets.
|
||||||
|
|
||||||
|
If you do not have a complete SELinux userland installed, this stuff
|
||||||
|
will not compile. Specifially, libselinux 1.28 or better is
|
||||||
|
directly required by busybox. If the installation is located in a
|
||||||
|
non-standard directory, provide it by invoking make as follows:
|
||||||
|
|
||||||
|
CFLAGS=-I<libselinux-include-path> \
|
||||||
|
LDFLAGS=-L<libselinux-lib-path> \
|
||||||
|
make
|
||||||
|
|
||||||
|
Most people will leave this set to 'N'.
|
||||||
|
|
||||||
|
config FEATURE_CLEAN_UP
|
||||||
|
bool "Clean up all memory before exiting (usually not needed)"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
As a size optimization, busybox normally exits without explicitly
|
||||||
|
freeing dynamically allocated memory or closing files. This saves
|
||||||
|
space since the OS will clean up for us, but it can confuse debuggers
|
||||||
|
like valgrind, which report tons of memory and resource leaks.
|
||||||
|
|
||||||
|
Don't enable this unless you have a really good reason to clean
|
||||||
|
things up manually.
|
||||||
|
|
||||||
|
config FEATURE_SYSLOG_INFO
|
||||||
|
bool "Support LOG_INFO level syslog messages"
|
||||||
|
default y
|
||||||
|
depends on FEATURE_SYSLOG
|
||||||
|
help
|
||||||
|
Applets which send their output to syslog use either LOG_INFO or
|
||||||
|
LOG_ERR log levels, but by disabling this option all messages will
|
||||||
|
be logged at the LOG_ERR level, saving just under 200 bytes.
|
||||||
|
|
||||||
|
# These are auto-selected by other options
|
||||||
|
|
||||||
|
config FEATURE_SYSLOG
|
||||||
|
bool #No description makes it a hidden option
|
||||||
|
default n
|
||||||
|
#help
|
||||||
|
#This option is auto-selected when you select any applet which may
|
||||||
|
#send its output to syslog. You do not need to select it manually.
|
||||||
|
|
||||||
|
comment 'Build Options'
|
||||||
|
|
||||||
|
config STATIC
|
||||||
|
bool "Build static binary (no shared libs)"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
If you want to build a static binary, which does not use
|
||||||
|
or require any shared libraries, enable this option.
|
||||||
|
Static binaries are larger, but do not require functioning
|
||||||
|
dynamic libraries to be present, which is important if used
|
||||||
|
as a system rescue tool.
|
||||||
|
|
||||||
|
config PIE
|
||||||
|
bool "Build position independent executable"
|
||||||
|
default n
|
||||||
|
depends on !STATIC
|
||||||
|
help
|
||||||
|
Hardened code option. PIE binaries are loaded at a different
|
||||||
|
address at each invocation. This has some overhead,
|
||||||
|
particularly on x86-32 which is short on registers.
|
||||||
|
|
||||||
|
Most people will leave this set to 'N'.
|
||||||
|
|
||||||
|
config NOMMU
|
||||||
|
bool "Force NOMMU build"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Busybox tries to detect whether architecture it is being
|
||||||
|
built against supports MMU or not. If this detection fails,
|
||||||
|
or if you want to build NOMMU version of busybox for testing,
|
||||||
|
you may force NOMMU build here.
|
||||||
|
|
||||||
|
Most people will leave this set to 'N'.
|
||||||
|
|
||||||
|
# PIE can be made to work with BUILD_LIBBUSYBOX, but currently
|
||||||
|
# build system does not support that
|
||||||
|
config BUILD_LIBBUSYBOX
|
||||||
|
bool "Build shared libbusybox"
|
||||||
|
default n
|
||||||
|
depends on !FEATURE_PREFER_APPLETS && !PIE && !STATIC
|
||||||
|
help
|
||||||
|
Build a shared library libbusybox.so.N.N.N which contains all
|
||||||
|
busybox code.
|
||||||
|
|
||||||
|
This feature allows every applet to be built as a really tiny
|
||||||
|
separate executable linked against the library:
|
||||||
|
|$ size 0_lib/l*
|
||||||
|
| text data bss dec hex filename
|
||||||
|
| 939 212 28 1179 49b 0_lib/last
|
||||||
|
| 939 212 28 1179 49b 0_lib/less
|
||||||
|
| 919138 8328 1556 929022 e2cfe 0_lib/libbusybox.so.1.N.M
|
||||||
|
|
||||||
|
This is useful on NOMMU systems which are not capable
|
||||||
|
of sharing executables, but are capable of sharing code
|
||||||
|
in dynamic libraries.
|
||||||
|
|
||||||
|
config FEATURE_LIBBUSYBOX_STATIC
|
||||||
|
bool "Pull in all external references into libbusybox"
|
||||||
|
default n
|
||||||
|
depends on BUILD_LIBBUSYBOX
|
||||||
|
help
|
||||||
|
Make libbusybox library independent, not using or requiring
|
||||||
|
any other shared libraries.
|
||||||
|
|
||||||
|
config FEATURE_INDIVIDUAL
|
||||||
|
bool "Produce a binary for each applet, linked against libbusybox"
|
||||||
|
default y
|
||||||
|
depends on BUILD_LIBBUSYBOX
|
||||||
|
help
|
||||||
|
If your CPU architecture doesn't allow for sharing text/rodata
|
||||||
|
sections of running binaries, but allows for runtime dynamic
|
||||||
|
libraries, this option will allow you to reduce memory footprint
|
||||||
|
when you have many different applets running at once.
|
||||||
|
|
||||||
|
If your CPU architecture allows for sharing text/rodata,
|
||||||
|
having single binary is more optimal.
|
||||||
|
|
||||||
|
Each applet will be a tiny program, dynamically linked
|
||||||
|
against libbusybox.so.N.N.N.
|
||||||
|
|
||||||
|
You need to have a working dynamic linker.
|
||||||
|
|
||||||
|
config FEATURE_SHARED_BUSYBOX
|
||||||
|
bool "Produce additional busybox binary linked against libbusybox"
|
||||||
|
default y
|
||||||
|
depends on BUILD_LIBBUSYBOX
|
||||||
|
help
|
||||||
|
Build busybox, dynamically linked against libbusybox.so.N.N.N.
|
||||||
|
|
||||||
|
You need to have a working dynamic linker.
|
||||||
|
|
||||||
|
### config BUILD_AT_ONCE
|
||||||
|
### bool "Compile all sources at once"
|
||||||
|
### default n
|
||||||
|
### help
|
||||||
|
### Normally each source-file is compiled with one invocation of
|
||||||
|
### the compiler.
|
||||||
|
### If you set this option, all sources are compiled at once.
|
||||||
|
### This gives the compiler more opportunities to optimize which can
|
||||||
|
### result in smaller and/or faster binaries.
|
||||||
|
###
|
||||||
|
### Setting this option will consume alot of memory, e.g. if you
|
||||||
|
### enable all applets with all features, gcc uses more than 300MB
|
||||||
|
### RAM during compilation of busybox.
|
||||||
|
###
|
||||||
|
### This option is most likely only beneficial for newer compilers
|
||||||
|
### such as gcc-4.1 and above.
|
||||||
|
###
|
||||||
|
### Say 'N' unless you know what you are doing.
|
||||||
|
|
||||||
|
config CROSS_COMPILER_PREFIX
|
||||||
|
string "Cross compiler prefix"
|
||||||
|
default ""
|
||||||
|
help
|
||||||
|
If you want to build busybox with a cross compiler, then you
|
||||||
|
will need to set this to the cross-compiler prefix, for example,
|
||||||
|
"i386-uclibc-".
|
||||||
|
|
||||||
|
Note that CROSS_COMPILE environment variable or
|
||||||
|
"make CROSS_COMPILE=xxx ..." will override this selection.
|
||||||
|
|
||||||
|
Native builds leave this empty.
|
||||||
|
|
||||||
|
config SYSROOT
|
||||||
|
string "Path to sysroot"
|
||||||
|
default ""
|
||||||
|
help
|
||||||
|
If you want to build busybox with a cross compiler, then you
|
||||||
|
might also need to specify where /usr/include and /usr/lib
|
||||||
|
will be found.
|
||||||
|
|
||||||
|
For example, busybox can be built against an installed
|
||||||
|
Android NDK, platform version 9, for ARM ABI with
|
||||||
|
|
||||||
|
CONFIG_SYSROOT=/opt/android-ndk/platforms/android-9/arch-arm
|
||||||
|
|
||||||
|
Native builds leave this empty.
|
||||||
|
|
||||||
|
config EXTRA_CFLAGS
|
||||||
|
string "Additional CFLAGS"
|
||||||
|
default ""
|
||||||
|
help
|
||||||
|
Additional CFLAGS to pass to the compiler verbatim.
|
||||||
|
|
||||||
|
config EXTRA_LDFLAGS
|
||||||
|
string "Additional LDFLAGS"
|
||||||
|
default ""
|
||||||
|
help
|
||||||
|
Additional LDFLAGS to pass to the linker verbatim.
|
||||||
|
|
||||||
|
config EXTRA_LDLIBS
|
||||||
|
string "Additional LDLIBS"
|
||||||
|
default ""
|
||||||
|
help
|
||||||
|
Additional LDLIBS to pass to the linker with -l.
|
||||||
|
|
||||||
|
config USE_PORTABLE_CODE
|
||||||
|
bool "Avoid using GCC-specific code constructs"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Use this option if you are trying to compile busybox with
|
||||||
|
compiler other than gcc.
|
||||||
|
If you do use gcc, this option may needlessly increase code size.
|
||||||
|
|
||||||
|
config STACK_OPTIMIZATION_386
|
||||||
|
bool "Use -mpreferred-stack-boundary=2 on i386 arch"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
This option makes for smaller code, but some libc versions
|
||||||
|
do not work with it (they use SSE instructions without
|
||||||
|
ensuring stack alignment).
|
||||||
|
|
||||||
|
config STATIC_LIBGCC
|
||||||
|
bool "Use -static-libgcc"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
This option instructs gcc to link in a static version of its
|
||||||
|
support library, libgcc. This means that the binary will require
|
||||||
|
one fewer dynamic library at run time.
|
||||||
|
|
||||||
|
comment 'Installation Options ("make install" behavior)'
|
||||||
|
|
||||||
|
choice
|
||||||
|
prompt "What kind of applet links to install"
|
||||||
|
default INSTALL_APPLET_SYMLINKS
|
||||||
|
help
|
||||||
|
Choose what kind of links to applets are created by "make install".
|
||||||
|
|
||||||
|
config INSTALL_APPLET_SYMLINKS
|
||||||
|
bool "as soft-links"
|
||||||
|
help
|
||||||
|
Install applets as soft-links to the busybox binary. This needs some
|
||||||
|
free inodes on the filesystem, but might help with filesystem
|
||||||
|
generators that can't cope with hard-links.
|
||||||
|
|
||||||
|
config INSTALL_APPLET_HARDLINKS
|
||||||
|
bool "as hard-links"
|
||||||
|
help
|
||||||
|
Install applets as hard-links to the busybox binary. This might
|
||||||
|
count on a filesystem with few inodes.
|
||||||
|
|
||||||
|
config INSTALL_APPLET_SCRIPT_WRAPPERS
|
||||||
|
bool "as script wrappers"
|
||||||
|
help
|
||||||
|
Install applets as script wrappers that call the busybox binary.
|
||||||
|
|
||||||
|
config INSTALL_APPLET_DONT
|
||||||
|
bool "not installed"
|
||||||
|
help
|
||||||
|
Do not install applet links. Useful when you plan to use
|
||||||
|
busybox --install for installing links, or plan to use
|
||||||
|
a standalone shell and thus don't need applet links.
|
||||||
|
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
choice
|
||||||
|
prompt "/bin/sh applet link"
|
||||||
|
default INSTALL_SH_APPLET_SYMLINK
|
||||||
|
depends on INSTALL_APPLET_SCRIPT_WRAPPERS
|
||||||
|
help
|
||||||
|
Choose how you install /bin/sh applet link.
|
||||||
|
|
||||||
|
config INSTALL_SH_APPLET_SYMLINK
|
||||||
|
bool "as soft-link"
|
||||||
|
help
|
||||||
|
Install /bin/sh applet as soft-link to the busybox binary.
|
||||||
|
|
||||||
|
config INSTALL_SH_APPLET_HARDLINK
|
||||||
|
bool "as hard-link"
|
||||||
|
help
|
||||||
|
Install /bin/sh applet as hard-link to the busybox binary.
|
||||||
|
|
||||||
|
config INSTALL_SH_APPLET_SCRIPT_WRAPPER
|
||||||
|
bool "as script wrapper"
|
||||||
|
help
|
||||||
|
Install /bin/sh applet as script wrapper that calls
|
||||||
|
the busybox binary.
|
||||||
|
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
config PREFIX
|
||||||
|
string "Destination path for 'make install'"
|
||||||
|
default "./_install"
|
||||||
|
help
|
||||||
|
Where "make install" should install busybox binary and links.
|
||||||
|
|
||||||
|
comment 'Debugging Options'
|
||||||
|
|
||||||
|
config DEBUG
|
||||||
|
bool "Build with debug information"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Say Y here to compile with debug information.
|
||||||
|
This increases the size of the binary considerably, and
|
||||||
|
should only be used when doing development.
|
||||||
|
|
||||||
|
This adds -g option to gcc command line.
|
||||||
|
|
||||||
|
Most people should answer N.
|
||||||
|
|
||||||
|
config DEBUG_PESSIMIZE
|
||||||
|
bool "Disable compiler optimizations"
|
||||||
|
default n
|
||||||
|
depends on DEBUG
|
||||||
|
help
|
||||||
|
The compiler's optimization of source code can eliminate and reorder
|
||||||
|
code, resulting in an executable that's hard to understand when
|
||||||
|
stepping through it with a debugger. This switches it off, resulting
|
||||||
|
in a much bigger executable that more closely matches the source
|
||||||
|
code.
|
||||||
|
|
||||||
|
This replaces -Os/-O2 with -O0 in gcc command line.
|
||||||
|
|
||||||
|
config DEBUG_SANITIZE
|
||||||
|
bool "Enable runtime sanitizers (ASAN/LSAN/USAN/etc...)"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Say Y here if you want to enable runtime sanitizers. These help
|
||||||
|
catch bad memory accesses (e.g. buffer overflows), but will make
|
||||||
|
the executable larger and slow down runtime a bit.
|
||||||
|
|
||||||
|
This adds -fsanitize=foo options to gcc command line.
|
||||||
|
|
||||||
|
If you aren't developing/testing busybox, say N here.
|
||||||
|
|
||||||
|
config UNIT_TEST
|
||||||
|
bool "Build unit tests"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Say Y here if you want to build unit tests (both the framework and
|
||||||
|
test cases) as an applet. This results in bigger code, so you
|
||||||
|
probably don't want this option in production builds.
|
||||||
|
|
||||||
|
config WERROR
|
||||||
|
bool "Abort compilation on any warning"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
This adds -Werror to gcc command line.
|
||||||
|
|
||||||
|
Most people should answer N.
|
||||||
|
|
||||||
|
config WARN_SIMPLE_MSG
|
||||||
|
bool "Warn about single parameter bb_xx_msg calls"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
This will cause warnings to be shown for any instances of
|
||||||
|
bb_error_msg(), bb_error_msg_and_die(), bb_perror_msg(),
|
||||||
|
bb_perror_msg_and_die(), bb_herror_msg() or bb_herror_msg_and_die()
|
||||||
|
being called with a single parameter. In these cases the equivalent
|
||||||
|
bb_simple_xx_msg function should be used instead.
|
||||||
|
Note that use of STRERROR_FMT may give false positives.
|
||||||
|
|
||||||
|
If you aren't developing busybox, say N here.
|
||||||
|
|
||||||
|
choice
|
||||||
|
prompt "Additional debugging library"
|
||||||
|
default NO_DEBUG_LIB
|
||||||
|
help
|
||||||
|
Using an additional debugging library will make busybox become
|
||||||
|
considerably larger and will cause it to run more slowly. You
|
||||||
|
should always leave this option disabled for production use.
|
||||||
|
|
||||||
|
dmalloc support:
|
||||||
|
----------------
|
||||||
|
This enables compiling with dmalloc ( http://dmalloc.com/ )
|
||||||
|
which is an excellent public domain mem leak and malloc problem
|
||||||
|
detector. To enable dmalloc, before running busybox you will
|
||||||
|
want to properly set your environment, for example:
|
||||||
|
export DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile
|
||||||
|
The 'debug=' value is generated using the following command
|
||||||
|
dmalloc -p log-stats -p log-non-free -p log-bad-space \
|
||||||
|
-p log-elapsed-time -p check-fence -p check-heap \
|
||||||
|
-p check-lists -p check-blank -p check-funcs -p realloc-copy \
|
||||||
|
-p allow-free-null
|
||||||
|
|
||||||
|
Electric-fence support:
|
||||||
|
-----------------------
|
||||||
|
This enables compiling with Electric-fence support. Electric
|
||||||
|
fence is another very useful malloc debugging library which uses
|
||||||
|
your computer's virtual memory hardware to detect illegal memory
|
||||||
|
accesses. This support will make busybox be considerably larger
|
||||||
|
and run slower, so you should leave this option disabled unless
|
||||||
|
you are hunting a hard to find memory problem.
|
||||||
|
|
||||||
|
|
||||||
|
config NO_DEBUG_LIB
|
||||||
|
bool "None"
|
||||||
|
|
||||||
|
config DMALLOC
|
||||||
|
bool "Dmalloc"
|
||||||
|
|
||||||
|
config EFENCE
|
||||||
|
bool "Electric-fence"
|
||||||
|
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
source libbb/Config.in
|
||||||
|
|
||||||
|
endmenu
|
||||||
|
|
||||||
|
comment "Applets"
|
||||||
|
|
||||||
|
source archival/Config.in
|
||||||
|
source coreutils/Config.in
|
||||||
|
source console-tools/Config.in
|
||||||
|
source debianutils/Config.in
|
||||||
|
source klibc-utils/Config.in
|
||||||
|
source editors/Config.in
|
||||||
|
source findutils/Config.in
|
||||||
|
source init/Config.in
|
||||||
|
source loginutils/Config.in
|
||||||
|
source e2fsprogs/Config.in
|
||||||
|
source modutils/Config.in
|
||||||
|
source util-linux/Config.in
|
||||||
|
source miscutils/Config.in
|
||||||
|
source networking/Config.in
|
||||||
|
source printutils/Config.in
|
||||||
|
source mailutils/Config.in
|
||||||
|
source procps/Config.in
|
||||||
|
source runit/Config.in
|
||||||
|
source selinux/Config.in
|
||||||
|
source shell/Config.in
|
||||||
|
source sysklogd/Config.in
|
142
busybox-1.33.0/INSTALL
Normal file
142
busybox-1.33.0/INSTALL
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
Building:
|
||||||
|
=========
|
||||||
|
|
||||||
|
The BusyBox build process is similar to the Linux kernel build:
|
||||||
|
|
||||||
|
make menuconfig # This creates a file called ".config"
|
||||||
|
make # This creates the "busybox" executable
|
||||||
|
make install # or make CONFIG_PREFIX=/path/from/root install
|
||||||
|
|
||||||
|
The full list of configuration and install options is available by typing:
|
||||||
|
|
||||||
|
make help
|
||||||
|
|
||||||
|
Quick Start:
|
||||||
|
============
|
||||||
|
|
||||||
|
The easy way to try out BusyBox for the first time, without having to install
|
||||||
|
it, is to enable all features and then use "standalone shell" mode with a
|
||||||
|
blank command $PATH.
|
||||||
|
|
||||||
|
To enable all features, use "make defconfig", which produces the largest
|
||||||
|
general-purpose configuration. It's allyesconfig minus debugging options,
|
||||||
|
optional packaging choices, and a few special-purpose features requiring
|
||||||
|
extra configuration to use. Then enable "standalone shell" feature:
|
||||||
|
|
||||||
|
make defconfig
|
||||||
|
make menuconfig
|
||||||
|
# select Busybox Settings
|
||||||
|
# then General Configuration
|
||||||
|
# then exec prefers applets
|
||||||
|
# exit back to top level menu
|
||||||
|
# select Shells
|
||||||
|
# then Standalone shell
|
||||||
|
# exit back to top level menu
|
||||||
|
# exit and save new configuration
|
||||||
|
# OR
|
||||||
|
# use these commands to modify .config directly:
|
||||||
|
sed -e 's/.*FEATURE_PREFER_APPLETS.*/CONFIG_FEATURE_PREFER_APPLETS=y/' -i .config
|
||||||
|
sed -e 's/.*FEATURE_SH_STANDALONE.*/CONFIG_FEATURE_SH_STANDALONE=y/' -i .config
|
||||||
|
make
|
||||||
|
PATH= ./busybox ash
|
||||||
|
|
||||||
|
Standalone shell mode causes busybox's built-in command shell to run
|
||||||
|
any built-in busybox applets directly, without looking for external
|
||||||
|
programs by that name. Supplying an empty command path (as above) means
|
||||||
|
the only commands busybox can find are the built-in ones.
|
||||||
|
|
||||||
|
Note that the standalone shell requires CONFIG_BUSYBOX_EXEC_PATH
|
||||||
|
to be set appropriately, depending on whether or not /proc/self/exe is
|
||||||
|
available. If you do not have /proc, then point that config option
|
||||||
|
to the location of your busybox binary, usually /bin/busybox.
|
||||||
|
Another solution is to patch the kernel (see
|
||||||
|
examples/linux-*_proc_self_exe.patch) to make exec("/proc/self/exe")
|
||||||
|
always work.
|
||||||
|
|
||||||
|
Configuring Busybox:
|
||||||
|
====================
|
||||||
|
|
||||||
|
Busybox is optimized for size, but enabling the full set of functionality
|
||||||
|
still results in a fairly large executable -- more than 1 megabyte when
|
||||||
|
statically linked. To save space, busybox can be configured with only the
|
||||||
|
set of applets needed for each environment. The minimal configuration, with
|
||||||
|
all applets disabled, produces a 4k executable. (It's useless, but very small.)
|
||||||
|
|
||||||
|
The manual configurator "make menuconfig" modifies the existing configuration.
|
||||||
|
(For systems without ncurses, try "make config" instead.) The two most
|
||||||
|
interesting starting configurations are "make allnoconfig" (to start with
|
||||||
|
everything disabled and add just what you need), and "make defconfig" (to
|
||||||
|
start with everything enabled and remove what you don't need). If menuconfig
|
||||||
|
is run without an existing configuration, make defconfig will run first to
|
||||||
|
create a known starting point.
|
||||||
|
|
||||||
|
Other starting configurations (mostly used for testing purposes) include
|
||||||
|
"make allbareconfig" (enables all applets but disables all optional features),
|
||||||
|
"make allyesconfig" (enables absolutely everything including debug features),
|
||||||
|
and "make randconfig" (produce a random configuration). The configs/ directory
|
||||||
|
contains a number of additional configuration files ending in _defconfig which
|
||||||
|
are useful in specific cases. "make help" will list them.
|
||||||
|
|
||||||
|
Configuring BusyBox produces a file ".config", which can be saved for future
|
||||||
|
use. Run "make oldconfig" to bring a .config file from an older version of
|
||||||
|
busybox up to date.
|
||||||
|
|
||||||
|
Installing Busybox:
|
||||||
|
===================
|
||||||
|
|
||||||
|
Busybox is a single executable that can behave like many different commands,
|
||||||
|
and BusyBox uses the name it was invoked under to determine the desired
|
||||||
|
behavior. (Try "mv busybox ls" and then "./ls -l".)
|
||||||
|
|
||||||
|
Installing busybox consists of creating symlinks (or hardlinks) to the busybox
|
||||||
|
binary for each applet enabled in busybox, and making sure these symlinks are
|
||||||
|
in the shell's command $PATH. Running "make install" creates these symlinks,
|
||||||
|
or "make install-hardlinks" creates hardlinks instead (useful on systems with
|
||||||
|
a limited number of inodes). This install process uses the file
|
||||||
|
"busybox.links" (created by make), which contains the list of enabled applets
|
||||||
|
and the path at which to install them.
|
||||||
|
|
||||||
|
Installing links to busybox is not always necessary. The special applet name
|
||||||
|
"busybox" (or with any optional suffix, such as "busybox-static") uses the
|
||||||
|
first argument to determine which applet to behave as, for example
|
||||||
|
"./busybox cat LICENSE". (Running the busybox applet with no arguments gives
|
||||||
|
a list of all enabled applets.) The standalone shell can also call busybox
|
||||||
|
applets without links to busybox under other names in the filesystem. You can
|
||||||
|
also configure a standalone install capability into the busybox base applet,
|
||||||
|
and then install such links at runtime with one of "busybox --install" (for
|
||||||
|
hardlinks) or "busybox --install -s" (for symlinks).
|
||||||
|
|
||||||
|
If you enabled the busybox shared library feature (libbusybox.so) and want
|
||||||
|
to run tests without installing, set your LD_LIBRARY_PATH accordingly when
|
||||||
|
running the executable:
|
||||||
|
|
||||||
|
LD_LIBRARY_PATH=`pwd` ./busybox
|
||||||
|
|
||||||
|
Building out-of-tree:
|
||||||
|
=====================
|
||||||
|
|
||||||
|
By default, the BusyBox build puts its temporary files in the source tree.
|
||||||
|
Building from a read-only source tree, or building multiple configurations from
|
||||||
|
the same source directory, requires the ability to put the temporary files
|
||||||
|
somewhere else.
|
||||||
|
|
||||||
|
To build out of tree, cd to an empty directory and configure busybox from there:
|
||||||
|
|
||||||
|
make KBUILD_SRC=/path/to/source -f /path/to/source/Makefile defconfig
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
|
||||||
|
Alternately, use the O=$BUILDPATH option (with an absolute path) during the
|
||||||
|
configuration step, as in:
|
||||||
|
|
||||||
|
make O=/some/empty/directory allyesconfig
|
||||||
|
cd /some/empty/directory
|
||||||
|
make
|
||||||
|
make CONFIG_PREFIX=. install
|
||||||
|
|
||||||
|
More Information:
|
||||||
|
=================
|
||||||
|
|
||||||
|
Se also the busybox FAQ, under the questions "How can I get started using
|
||||||
|
BusyBox" and "How do I build a BusyBox-based system?" The BusyBox FAQ is
|
||||||
|
available from http://www.busybox.net/FAQ.html
|
348
busybox-1.33.0/LICENSE
Normal file
348
busybox-1.33.0/LICENSE
Normal file
@ -0,0 +1,348 @@
|
|||||||
|
--- A note on GPL versions
|
||||||
|
|
||||||
|
BusyBox is distributed under version 2 of the General Public License (included
|
||||||
|
in its entirety, below). Version 2 is the only version of this license which
|
||||||
|
this version of BusyBox (or modified versions derived from this one) may be
|
||||||
|
distributed under.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
|
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software--to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Library General Public License instead.) You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
this service if you wish), that you receive source code or can get it
|
||||||
|
if you want it, that you can change the software or use pieces of it
|
||||||
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. You must make sure that they, too, receive or can get the
|
||||||
|
source code. And you must show them these terms so they know their
|
||||||
|
rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
convey the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program is interactive, make it output a short notice like this
|
||||||
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
|
Gnomovision version 69, Copyright (C) year name of author
|
||||||
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, the commands you use may
|
||||||
|
be called something other than `show w' and `show c'; they could even be
|
||||||
|
mouse-clicks or menu items--whatever suits your program.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||||
|
necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||||
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||||
|
|
||||||
|
<signature of Ty Coon>, 1 April 1989
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
This General Public License does not permit incorporating your program into
|
||||||
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
|
consider it more useful to permit linking proprietary applications with the
|
||||||
|
library. If this is what you want to do, use the GNU Library General
|
||||||
|
Public License instead of this License.
|
1335
busybox-1.33.0/Makefile
Normal file
1335
busybox-1.33.0/Makefile
Normal file
File diff suppressed because it is too large
Load Diff
201
busybox-1.33.0/Makefile.custom
Normal file
201
busybox-1.33.0/Makefile.custom
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
# ==========================================================================
|
||||||
|
# Build system
|
||||||
|
# ==========================================================================
|
||||||
|
|
||||||
|
busybox.links: $(srctree)/applets/busybox.mkll $(objtree)/include/autoconf.h include/applets.h
|
||||||
|
$(Q)-$(SHELL) $^ > $@
|
||||||
|
|
||||||
|
busybox.cfg.suid: $(srctree)/applets/busybox.mksuid $(objtree)/include/autoconf.h include/applets.h
|
||||||
|
$(Q)-SUID="yes" $(SHELL) $^ > $@
|
||||||
|
busybox.cfg.nosuid: $(srctree)/applets/busybox.mksuid $(objtree)/include/autoconf.h include/applets.h
|
||||||
|
$(Q)-SUID="DROP" $(SHELL) $^ > $@
|
||||||
|
|
||||||
|
.PHONY: install
|
||||||
|
ifeq ($(CONFIG_INSTALL_APPLET_DONT),y)
|
||||||
|
INSTALL_OPTS:= --none
|
||||||
|
endif
|
||||||
|
ifeq ($(CONFIG_INSTALL_APPLET_SYMLINKS),y)
|
||||||
|
INSTALL_OPTS:= --symlinks
|
||||||
|
endif
|
||||||
|
ifeq ($(CONFIG_INSTALL_APPLET_HARDLINKS),y)
|
||||||
|
INSTALL_OPTS:= --hardlinks
|
||||||
|
endif
|
||||||
|
ifeq ($(CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS),y)
|
||||||
|
ifeq ($(CONFIG_INSTALL_SH_APPLET_SYMLINK),y)
|
||||||
|
INSTALL_OPTS:= --sw-sh-sym
|
||||||
|
endif
|
||||||
|
ifeq ($(CONFIG_INSTALL_SH_APPLET_HARDLINK),y)
|
||||||
|
INSTALL_OPTS:= --sw-sh-hard
|
||||||
|
endif
|
||||||
|
ifeq ($(CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER),y)
|
||||||
|
INSTALL_OPTS:= --scriptwrapper
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
ifeq ($(CONFIG_FEATURE_INDIVIDUAL),y)
|
||||||
|
INSTALL_OPTS:= --binaries
|
||||||
|
LIBBUSYBOX_SONAME:= 0_lib/libbusybox.so.$(BB_VER)
|
||||||
|
endif
|
||||||
|
install: $(srctree)/applets/install.sh busybox busybox.links
|
||||||
|
$(Q)DO_INSTALL_LIBS="$(strip $(LIBBUSYBOX_SONAME) $(DO_INSTALL_LIBS))" \
|
||||||
|
$(SHELL) $< $(CONFIG_PREFIX) $(INSTALL_OPTS)
|
||||||
|
ifeq ($(strip $(CONFIG_FEATURE_SUID)),y)
|
||||||
|
@echo
|
||||||
|
@echo
|
||||||
|
@echo --------------------------------------------------
|
||||||
|
@echo You will probably need to make your busybox binary
|
||||||
|
@echo setuid root to ensure all configured applets will
|
||||||
|
@echo work properly.
|
||||||
|
@echo --------------------------------------------------
|
||||||
|
@echo
|
||||||
|
endif
|
||||||
|
|
||||||
|
install-noclobber: INSTALL_OPTS+=--noclobber
|
||||||
|
install-noclobber: install
|
||||||
|
|
||||||
|
uninstall: busybox.links
|
||||||
|
rm -f $(CONFIG_PREFIX)/bin/busybox
|
||||||
|
for i in `cat busybox.links` ; do rm -f $(CONFIG_PREFIX)$$i; done
|
||||||
|
ifneq ($(strip $(DO_INSTALL_LIBS)),n)
|
||||||
|
for i in $(LIBBUSYBOX_SONAME) $(DO_INSTALL_LIBS); do \
|
||||||
|
rm -f $(CONFIG_PREFIX)$$i; \
|
||||||
|
done
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Not very elegant: copies testsuite to objdir...
|
||||||
|
# (cp -pPR is POSIX-compliant (cp -dpR or cp -a would not be))
|
||||||
|
.PHONY: check
|
||||||
|
.PHONY: test
|
||||||
|
ifeq ($(CONFIG_UNIT_TEST),y)
|
||||||
|
UNIT_CMD = ./busybox unit
|
||||||
|
endif
|
||||||
|
check test: busybox busybox.links
|
||||||
|
$(UNIT_CMD)
|
||||||
|
test -d $(objtree)/testsuite || cp -pPR $(srctree)/testsuite $(objtree)
|
||||||
|
bindir=$(objtree) srcdir=$(srctree)/testsuite \
|
||||||
|
$(SHELL) -c "cd $(objtree)/testsuite && $(srctree)/testsuite/runtest $(if $(KBUILD_VERBOSE:0=),-v)"
|
||||||
|
|
||||||
|
.PHONY: release
|
||||||
|
release: distclean
|
||||||
|
cd ..; \
|
||||||
|
rm -r -f busybox-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION); \
|
||||||
|
cp -pPR busybox busybox-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) && { \
|
||||||
|
find busybox-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)/ -type d \
|
||||||
|
-name .svn \
|
||||||
|
-print \
|
||||||
|
-exec rm -r -f {} \; ; \
|
||||||
|
find busybox-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)/ -type d \
|
||||||
|
-name .git \
|
||||||
|
-print \
|
||||||
|
-exec rm -r -f {} \; ; \
|
||||||
|
find busybox-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)/ -type f \
|
||||||
|
-name .gitignore \
|
||||||
|
-print \
|
||||||
|
-exec rm -f {} \; ; \
|
||||||
|
find busybox-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)/ -type f \
|
||||||
|
-name .\#* \
|
||||||
|
-print \
|
||||||
|
-exec rm -f {} \; ; \
|
||||||
|
tar -czf busybox-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION).tar.gz \
|
||||||
|
busybox-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)/ ; }
|
||||||
|
|
||||||
|
.PHONY: checkhelp
|
||||||
|
checkhelp:
|
||||||
|
$(Q)$(srctree)/scripts/checkhelp.awk \
|
||||||
|
$(patsubst %,$(srctree)/%,$(wildcard $(patsubst %,%/Config.in,$(busybox-dirs) ./)))
|
||||||
|
|
||||||
|
.PHONY: sizes
|
||||||
|
sizes: busybox_unstripped
|
||||||
|
$(NM) --size-sort $(<)
|
||||||
|
|
||||||
|
.PHONY: bloatcheck
|
||||||
|
bloatcheck: busybox_old busybox_unstripped
|
||||||
|
@$(srctree)/scripts/bloat-o-meter busybox_old busybox_unstripped
|
||||||
|
@$(CROSS_COMPILE)size busybox_old busybox_unstripped
|
||||||
|
|
||||||
|
.PHONY: baseline
|
||||||
|
baseline: busybox_unstripped
|
||||||
|
@mv busybox_unstripped busybox_old
|
||||||
|
|
||||||
|
.PHONY: objsizes
|
||||||
|
objsizes: busybox_unstripped
|
||||||
|
$(srctree)/scripts/objsizes
|
||||||
|
|
||||||
|
.PHONY: stksizes
|
||||||
|
stksizes: busybox_unstripped
|
||||||
|
$(CROSS_COMPILE)objdump -d busybox_unstripped | $(srctree)/scripts/checkstack.pl $(ARCH) | uniq
|
||||||
|
|
||||||
|
.PHONY: bigdata
|
||||||
|
bigdata: busybox_unstripped
|
||||||
|
$(CROSS_COMPILE)nm --size-sort busybox_unstripped | grep -vi ' [trw] '
|
||||||
|
|
||||||
|
# Documentation Targets
|
||||||
|
.PHONY: doc
|
||||||
|
doc: docs/busybox.pod docs/BusyBox.txt docs/busybox.1 docs/BusyBox.html
|
||||||
|
|
||||||
|
# FIXME: Doesn't belong here
|
||||||
|
cmd_doc =
|
||||||
|
quiet_cmd_doc = $(Q)echo " DOC $(@F)"
|
||||||
|
silent_cmd_doc =
|
||||||
|
disp_doc = $($(quiet)cmd_doc)
|
||||||
|
|
||||||
|
# sed adds newlines after "Options:" etc,
|
||||||
|
# this is needed in order to get good BusyBox.{1,txt,html}
|
||||||
|
docs/busybox.pod: $(srctree)/docs/busybox_header.pod \
|
||||||
|
include/usage.h \
|
||||||
|
$(srctree)/docs/busybox_footer.pod \
|
||||||
|
applets/usage_pod
|
||||||
|
$(disp_doc)
|
||||||
|
$(Q)-mkdir -p docs
|
||||||
|
$(Q)-( \
|
||||||
|
cat $(srctree)/docs/busybox_header.pod; \
|
||||||
|
echo; \
|
||||||
|
applets/usage_pod | sed 's/^[A-Za-z][A-Za-z ]*[a-z]:$$/&\n/'; \
|
||||||
|
cat $(srctree)/docs/busybox_footer.pod; \
|
||||||
|
) > docs/busybox.pod
|
||||||
|
|
||||||
|
docs/BusyBox.txt: docs/busybox.pod
|
||||||
|
$(disp_doc)
|
||||||
|
$(Q)-mkdir -p docs
|
||||||
|
$(Q)-pod2text $< > $@
|
||||||
|
|
||||||
|
docs/busybox.1: docs/busybox.pod
|
||||||
|
$(disp_doc)
|
||||||
|
$(Q)-mkdir -p docs
|
||||||
|
$(Q)-pod2man --center=busybox --release="version $(KERNELVERSION)" $< > $@
|
||||||
|
|
||||||
|
docs/BusyBox.html: docs/busybox.net/BusyBox.html
|
||||||
|
$(disp_doc)
|
||||||
|
$(Q)-mkdir -p docs
|
||||||
|
$(Q)-rm -f docs/BusyBox.html
|
||||||
|
$(Q)-cp docs/busybox.net/BusyBox.html docs/BusyBox.html
|
||||||
|
|
||||||
|
docs/busybox.net/BusyBox.html: docs/busybox.pod
|
||||||
|
$(Q)-mkdir -p docs/busybox.net
|
||||||
|
$(Q)-pod2html --noindex $< > $@
|
||||||
|
$(Q)-rm -f pod2htm*
|
||||||
|
|
||||||
|
# documentation, cross-reference
|
||||||
|
# Modern distributions already ship synopsis packages (e.g. debian)
|
||||||
|
# If you have an old distribution go to http://synopsis.fresco.org/
|
||||||
|
syn_tgt = $(wildcard $(patsubst %,%/*.c,$(busybox-alldirs)))
|
||||||
|
syn = $(patsubst %.c, %.syn, $(syn_tgt))
|
||||||
|
|
||||||
|
comma:= ,
|
||||||
|
brace_open:= (
|
||||||
|
brace_close:= )
|
||||||
|
|
||||||
|
SYN_CPPFLAGS := $(strip $(CPPFLAGS) $(EXTRA_CPPFLAGS))
|
||||||
|
SYN_CPPFLAGS := $(subst $(brace_open),\$(brace_open),$(SYN_CPPFLAGS))
|
||||||
|
SYN_CPPFLAGS := $(subst $(brace_close),\$(brace_close),$(SYN_CPPFLAGS))
|
||||||
|
#SYN_CPPFLAGS := $(subst ",\",$(SYN_CPPFLAGS))
|
||||||
|
#")
|
||||||
|
#SYN_CPPFLAGS := [$(patsubst %,'%'$(comma),$(SYN_CPPFLAGS))'']
|
||||||
|
|
||||||
|
%.syn: %.c
|
||||||
|
synopsis -p C -l Comments.SSDFilter,Comments.Previous -Wp,preprocess=True,cppflags="'$(SYN_CPPFLAGS)'" -o $@ $<
|
||||||
|
|
||||||
|
.PHONY: html
|
||||||
|
html: $(syn)
|
||||||
|
synopsis -f HTML -Wf,title="'BusyBox Documentation'" -o $@ $^
|
||||||
|
|
||||||
|
-include $(srctree)/Makefile.local
|
219
busybox-1.33.0/Makefile.flags
Normal file
219
busybox-1.33.0/Makefile.flags
Normal file
@ -0,0 +1,219 @@
|
|||||||
|
# ==========================================================================
|
||||||
|
# Build system
|
||||||
|
# ==========================================================================
|
||||||
|
|
||||||
|
BB_VER = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
|
||||||
|
export BB_VER
|
||||||
|
SKIP_STRIP ?= n
|
||||||
|
|
||||||
|
# -std=gnu99 needed for [U]LLONG_MAX on some systems
|
||||||
|
CPPFLAGS += $(call cc-option,-std=gnu99,)
|
||||||
|
|
||||||
|
CPPFLAGS += \
|
||||||
|
-Iinclude -Ilibbb \
|
||||||
|
$(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include -I$(srctree)/libbb) \
|
||||||
|
-include include/autoconf.h \
|
||||||
|
-D_GNU_SOURCE -DNDEBUG \
|
||||||
|
$(if $(CONFIG_LFS),-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64) \
|
||||||
|
-DBB_VER=$(squote)$(quote)$(BB_VER)$(quote)$(squote)
|
||||||
|
|
||||||
|
CFLAGS += $(call cc-option,-Wall,)
|
||||||
|
CFLAGS += $(call cc-option,-Wshadow,)
|
||||||
|
CFLAGS += $(call cc-option,-Wwrite-strings,)
|
||||||
|
CFLAGS += $(call cc-option,-Wundef,)
|
||||||
|
CFLAGS += $(call cc-option,-Wstrict-prototypes,)
|
||||||
|
CFLAGS += $(call cc-option,-Wunused -Wunused-parameter,)
|
||||||
|
CFLAGS += $(call cc-option,-Wunused-function -Wunused-value,)
|
||||||
|
CFLAGS += $(call cc-option,-Wmissing-prototypes -Wmissing-declarations,)
|
||||||
|
CFLAGS += $(call cc-option,-Wno-format-security,)
|
||||||
|
# warn about C99 declaration after statement
|
||||||
|
CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
|
||||||
|
# If you want to add more -Wsomething above, make sure that it is
|
||||||
|
# still possible to build bbox without warnings.
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_WERROR),y)
|
||||||
|
CFLAGS += $(call cc-option,-Werror,)
|
||||||
|
## TODO:
|
||||||
|
## gcc version 4.4.0 20090506 (Red Hat 4.4.0-4) (GCC) is a PITA:
|
||||||
|
## const char *ptr; ... off_t v = *(off_t*)ptr; -> BOOM
|
||||||
|
## and no easy way to convince it to shut the hell up.
|
||||||
|
## We have a lot of such things all over the place.
|
||||||
|
## Classic *(off_t*)(void*)ptr does not work,
|
||||||
|
## and I am unwilling to do crazy gcc specific ({ void *ppp = ...; })
|
||||||
|
## stuff in macros. This would obfuscate the code too much.
|
||||||
|
## Maybe try __attribute__((__may_alias__))?
|
||||||
|
#CFLAGS += $(call cc-ifversion, -eq, 0404, -fno-strict-aliasing)
|
||||||
|
endif
|
||||||
|
# gcc 3.x emits bogus "old style proto" warning on find.c:alloc_action()
|
||||||
|
CFLAGS += $(call cc-ifversion, -ge, 0400, -Wold-style-definition)
|
||||||
|
|
||||||
|
ifneq ($(CC),clang)
|
||||||
|
# "clang-9: warning: optimization flag '-finline-limit=0' is not supported
|
||||||
|
CFLAGS += $(call cc-option,-finline-limit=0,)
|
||||||
|
endif
|
||||||
|
|
||||||
|
CFLAGS += $(call cc-option,-fno-builtin-strlen -fomit-frame-pointer -ffunction-sections -fdata-sections,)
|
||||||
|
# -fno-guess-branch-probability: prohibit pseudo-random guessing
|
||||||
|
# of branch probabilities (hopefully makes bloatcheck more stable):
|
||||||
|
CFLAGS += $(call cc-option,-fno-guess-branch-probability,)
|
||||||
|
CFLAGS += $(call cc-option,-funsigned-char,)
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_STATIC_LIBGCC),y)
|
||||||
|
# Disable it, for example, if you get
|
||||||
|
# "clang-9: warning: argument unused during compilation: '-static-libgcc'"
|
||||||
|
CFLAGS += $(call cc-option,-static-libgcc,)
|
||||||
|
endif
|
||||||
|
|
||||||
|
CFLAGS += $(call cc-option,-falign-functions=1,)
|
||||||
|
ifneq ($(CC),clang)
|
||||||
|
# "clang-9: warning: optimization flag '-falign-jumps=1' is not supported" (and same for other two)
|
||||||
|
CFLAGS += $(call cc-option,-falign-jumps=1 -falign-labels=1 -falign-loops=1,)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Defeat .eh_frame bloat (gcc 4.6.3 x86-32 defconfig: 20% smaller busybox binary):
|
||||||
|
CFLAGS += $(call cc-option,-fno-unwind-tables,)
|
||||||
|
CFLAGS += $(call cc-option,-fno-asynchronous-unwind-tables,)
|
||||||
|
# No automatic printf->puts,putchar conversions
|
||||||
|
# (try disabling this and comparing assembly, it's instructive)
|
||||||
|
CFLAGS += $(call cc-option,-fno-builtin-printf,)
|
||||||
|
|
||||||
|
# clang-9 does not like "str" + N and "if (CONFIG_ITEM && cond)" constructs
|
||||||
|
ifeq ($(CC),clang)
|
||||||
|
CFLAGS += $(call cc-option,-Wno-string-plus-int -Wno-constant-logical-operand)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# FIXME: These warnings are at least partially to be concerned about and should
|
||||||
|
# be fixed..
|
||||||
|
#CFLAGS += $(call cc-option,-Wconversion,)
|
||||||
|
|
||||||
|
ifneq ($(CONFIG_DEBUG),y)
|
||||||
|
CFLAGS += $(call cc-option,-Os,$(call cc-option,-O2,))
|
||||||
|
else
|
||||||
|
CFLAGS += $(call cc-option,-g,)
|
||||||
|
#CFLAGS += "-D_FORTIFY_SOURCE=2"
|
||||||
|
ifeq ($(CONFIG_DEBUG_PESSIMIZE),y)
|
||||||
|
CFLAGS += $(call cc-option,-O0,)
|
||||||
|
else
|
||||||
|
CFLAGS += $(call cc-option,-Os,$(call cc-option,-O2,))
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
ifeq ($(CONFIG_DEBUG_SANITIZE),y)
|
||||||
|
CFLAGS += $(call cc-option,-fsanitize=address,)
|
||||||
|
CFLAGS += $(call cc-option,-fsanitize=leak,)
|
||||||
|
CFLAGS += $(call cc-option,-fsanitize=undefined,)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# If arch/$(ARCH)/Makefile did not override it (with, say, -fPIC)...
|
||||||
|
ARCH_FPIC ?= -fpic
|
||||||
|
ARCH_FPIE ?= -fpie
|
||||||
|
ARCH_PIE ?= -pie
|
||||||
|
|
||||||
|
# Usage: $(eval $(call pkg_check_modules,VARIABLE-PREFIX,MODULES))
|
||||||
|
define pkg_check_modules
|
||||||
|
$(1)_CFLAGS := $(shell $(PKG_CONFIG) $(PKG_CONFIG_FLAGS) --cflags $(2))
|
||||||
|
$(1)_LIBS := $(shell $(PKG_CONFIG) $(PKG_CONFIG_FLAGS) --libs $(2))
|
||||||
|
endef
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_BUILD_LIBBUSYBOX),y)
|
||||||
|
# on i386: 14% smaller libbusybox.so
|
||||||
|
# (code itself is 9% bigger, we save on relocs/PLT/GOT)
|
||||||
|
CFLAGS += $(ARCH_FPIC)
|
||||||
|
# and another 4% reduction of libbusybox.so:
|
||||||
|
# (external entry points must be marked EXTERNALLY_VISIBLE)
|
||||||
|
CFLAGS += $(call cc-option,-fvisibility=hidden)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_STATIC),y)
|
||||||
|
CFLAGS_busybox += -static
|
||||||
|
PKG_CONFIG_FLAGS += --static
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_PIE),y)
|
||||||
|
CFLAGS_busybox += $(ARCH_PIE)
|
||||||
|
CFLAGS += $(ARCH_FPIE)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(CONFIG_EXTRA_CFLAGS),)
|
||||||
|
CFLAGS += $(strip $(subst ",,$(CONFIG_EXTRA_CFLAGS)))
|
||||||
|
#"))
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Note: both "" (string consisting of two quote chars) and empty string
|
||||||
|
# are possible, and should be skipped below.
|
||||||
|
ifneq ($(subst "",,$(CONFIG_SYSROOT)),)
|
||||||
|
CFLAGS += --sysroot=$(CONFIG_SYSROOT)
|
||||||
|
export SYSROOT=$(CONFIG_SYSROOT)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Android has no separate crypt library
|
||||||
|
# gcc-4.2.1 fails if we try to feed C source on stdin:
|
||||||
|
# echo 'int main(void){return 0;}' | $(CC) $(CFLAGS) -lcrypt -o /dev/null -xc -
|
||||||
|
# fall back to using a temp file:
|
||||||
|
CRYPT_AVAILABLE := $(shell echo 'int main(void){return 0;}' >crypttest.c; $(CC) $(CFLAGS) -lcrypt -o /dev/null crypttest.c >/dev/null 2>&1 && echo "y"; rm crypttest.c)
|
||||||
|
ifeq ($(CRYPT_AVAILABLE),y)
|
||||||
|
LDLIBS += m rt crypt
|
||||||
|
else
|
||||||
|
LDLIBS += m rt
|
||||||
|
endif
|
||||||
|
# libm may be needed for dc, awk, ntpd
|
||||||
|
# librt may be needed for clock_gettime()
|
||||||
|
|
||||||
|
# libpam may use libpthread, libdl and/or libaudit.
|
||||||
|
# On some platforms that requires an explicit -lpthread, -ldl, -laudit.
|
||||||
|
# However, on *other platforms* it fails when some of those flags
|
||||||
|
# given needlessly. On some systems, crypt needs pthread.
|
||||||
|
#
|
||||||
|
# I even had a system where a runtime test for pthread
|
||||||
|
# (similar to CRYPT_AVAILABLE test above) was not reliable.
|
||||||
|
#
|
||||||
|
# Do not propagate this mess by adding libraries to CONFIG_PAM/CRYPT_AVAILABLE blocks.
|
||||||
|
# Add libraries you need to CONFIG_EXTRA_LDLIBS instead.
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_PAM),y)
|
||||||
|
LDLIBS += pam pam_misc
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_SELINUX),y)
|
||||||
|
SELINUX_PC_MODULES = libselinux libsepol
|
||||||
|
$(eval $(call pkg_check_modules,SELINUX,$(SELINUX_PC_MODULES)))
|
||||||
|
CPPFLAGS += $(SELINUX_CFLAGS)
|
||||||
|
LDLIBS += $(if $(SELINUX_LIBS),$(SELINUX_LIBS:-l%=%),$(SELINUX_PC_MODULES:lib%=%))
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_FEATURE_NSLOOKUP_BIG),y)
|
||||||
|
LDLIBS += resolv
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_EFENCE),y)
|
||||||
|
LDLIBS += efence
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_DMALLOC),y)
|
||||||
|
LDLIBS += dmalloc
|
||||||
|
endif
|
||||||
|
|
||||||
|
# If a flat binary should be built, CFLAGS_busybox="-elf2flt"
|
||||||
|
# env var should be set for make invocation.
|
||||||
|
# Here we check whether CFLAGS_busybox indeed contains that flag.
|
||||||
|
# (For historical reasons, we also check LDFLAGS, which doesn't
|
||||||
|
# seem to be entirely correct variable to put "-elf2flt" into).
|
||||||
|
W_ELF2FLT = -elf2flt
|
||||||
|
ifneq (,$(findstring $(W_ELF2FLT),$(LDFLAGS) $(CFLAGS_busybox)))
|
||||||
|
SKIP_STRIP = y
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(CONFIG_EXTRA_LDFLAGS),)
|
||||||
|
LDFLAGS += $(strip $(subst ",,$(CONFIG_EXTRA_LDFLAGS)))
|
||||||
|
#"))
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(CONFIG_EXTRA_LDLIBS),)
|
||||||
|
LDLIBS += $(strip $(subst ",,$(CONFIG_EXTRA_LDLIBS)))
|
||||||
|
#"))
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Busybox is a stack-fatty so make sure we increase default size
|
||||||
|
# TODO: use "make stksizes" to find & fix big stack users
|
||||||
|
# (we stole scripts/checkstack.pl from the kernel... thanks guys!)
|
||||||
|
# Reduced from 20k to 16k in 1.9.0.
|
||||||
|
FLTFLAGS += -s 16000
|
44
busybox-1.33.0/Makefile.help
Normal file
44
busybox-1.33.0/Makefile.help
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
# ==========================================================================
|
||||||
|
# Build system
|
||||||
|
# ==========================================================================
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo 'Cleaning:'
|
||||||
|
@echo ' clean - delete temporary files created by build'
|
||||||
|
@echo ' distclean - delete all non-source files (including .config)'
|
||||||
|
@echo ' doc-clean - delete all generated documentation'
|
||||||
|
@echo
|
||||||
|
@echo 'Build:'
|
||||||
|
@echo ' all - Executable and documentation'
|
||||||
|
@echo ' busybox - the swiss-army executable'
|
||||||
|
@echo ' doc - docs/BusyBox.{txt,html,1}'
|
||||||
|
@echo ' html - create html-based cross-reference'
|
||||||
|
@echo
|
||||||
|
@echo 'Configuration:'
|
||||||
|
@echo ' allnoconfig - disable all symbols in .config'
|
||||||
|
@echo ' allyesconfig - enable all symbols in .config (see defconfig)'
|
||||||
|
@echo ' config - text based configurator (of last resort)'
|
||||||
|
@echo ' defconfig - set .config to largest generic configuration'
|
||||||
|
@echo ' menuconfig - interactive curses-based configurator'
|
||||||
|
@echo ' oldconfig - resolve any unresolved symbols in .config'
|
||||||
|
@$(if $(boards), \
|
||||||
|
$(foreach b, $(boards), \
|
||||||
|
printf " %-21s - Build for %s\\n" $(b) $(subst _defconfig,,$(b));) \
|
||||||
|
echo '')
|
||||||
|
@echo
|
||||||
|
@echo 'Installation:'
|
||||||
|
@echo ' install - install busybox into CONFIG_PREFIX'
|
||||||
|
@echo ' uninstall'
|
||||||
|
@echo
|
||||||
|
@echo 'Development:'
|
||||||
|
@echo ' baseline - create busybox_old for bloatcheck.'
|
||||||
|
@echo ' bloatcheck - show size difference between old and new versions'
|
||||||
|
@echo ' check - run the test suite for all applets'
|
||||||
|
@echo ' checkhelp - check for missing help-entries in Config.in'
|
||||||
|
@echo ' randconfig - generate a random configuration'
|
||||||
|
@echo ' release - create a distribution tarball'
|
||||||
|
@echo ' sizes - show size of all enabled busybox symbols'
|
||||||
|
@echo ' objsizes - show size of each .o object built'
|
||||||
|
@echo ' bigdata - show data objects, biggest first'
|
||||||
|
@echo ' stksizes - show stack users, biggest first'
|
||||||
|
@echo
|
437
busybox-1.33.0/NOFORK_NOEXEC.lst
Normal file
437
busybox-1.33.0/NOFORK_NOEXEC.lst
Normal file
@ -0,0 +1,437 @@
|
|||||||
|
Why an applet can't be NOFORK or NOEXEC?
|
||||||
|
|
||||||
|
Why can't be NOFORK:
|
||||||
|
interactive: may wait for user input, ^C has to work
|
||||||
|
spawner: "tool PROG ARGS" which changes program state and execs - must fork
|
||||||
|
changes state: e.g. environment, signal handlers
|
||||||
|
leaks: does not free allocated memory or opened fds
|
||||||
|
alloc+xfunc: xmalloc, then xfunc - leaks memory if xfunc dies
|
||||||
|
open+xfunc: opens fd, then calls xfunc - fd is leaked if xfunc dies
|
||||||
|
talks to network/serial/etc: it's not known how long the delay can be,
|
||||||
|
it's reasonable to expect it might be many seconds
|
||||||
|
(even if usually it is not), so ^C has to work
|
||||||
|
runner: sometimes may run for long(ish) time, and/or works with network:
|
||||||
|
^C has to work (cat BIGFILE, chmod -R, ftpget, nc)
|
||||||
|
|
||||||
|
"runners" can become eligible after shell is taught ^C to interrupt NOFORKs,
|
||||||
|
need to be inspected that they do not fall into alloc+xfunc, open+xfunc,
|
||||||
|
leak categories.
|
||||||
|
|
||||||
|
Why can't be NOEXEC:
|
||||||
|
suid: runs under different uid - must fork+exec
|
||||||
|
if it's important that /proc/PID/cmdline and comm are correct.
|
||||||
|
("pkill sh" killing itself before it kills real "sh" is no fun)
|
||||||
|
|
||||||
|
Why shouldn't be NOFORK/NOEXEC:
|
||||||
|
rare: not started often enough to bother optimizing (example: poweroff)
|
||||||
|
daemon: runs indefinitely; these are also always fit "rare" category
|
||||||
|
longterm: often runs for a long time (many seconds), execing makes
|
||||||
|
memory footprint smaller
|
||||||
|
complex: no immediately obvious reason why NOFORK wouldn't work,
|
||||||
|
but does some non-obvoius operations (example: fuser, lsof, losetup);
|
||||||
|
detailed audit often turns out that it's a leaker
|
||||||
|
hardware: performs unusual hardware ops which may take long,
|
||||||
|
or even hang due to hardware or firmware bugs
|
||||||
|
|
||||||
|
Interesting example of "interactive" applet which is nevertheless can be
|
||||||
|
(and is) NOEXEC is "rm". Yes, "rm -i" is interactive - but it's not that typical
|
||||||
|
for users to keep it waiting for many minutes, whereas running "rm" in shell
|
||||||
|
is very typical, and speeding up this common use via NOEXEC is useful.
|
||||||
|
IOW: rm is "interactive", but not "longterm".
|
||||||
|
|
||||||
|
Interesting example of an applet which can be NOFORK but if not,
|
||||||
|
then should not be NOEXEC, is "usleep". As NOFORK, it amount to simply
|
||||||
|
nanosleep()ing in the calling program (usually shell). No memory wasted.
|
||||||
|
But if ran as NOEXEC, it would create a potentially long-term process,
|
||||||
|
which would be taking more memory because it did not exec
|
||||||
|
and did not free much of the copied memory of the parent
|
||||||
|
(COW helps with this only as long as parent doesn't modify its memory).
|
||||||
|
|
||||||
|
|
||||||
|
[ - NOFORK
|
||||||
|
[[ - NOFORK
|
||||||
|
acpid - daemon
|
||||||
|
add-shell - noexec. leaks: open+xfunc
|
||||||
|
addgroup - noexec. leaks
|
||||||
|
adduser - noexec. leaks
|
||||||
|
adjtimex - NOFORK
|
||||||
|
ar - runner
|
||||||
|
arch - NOFORK
|
||||||
|
arp - talks to network: arp -n queries DNS
|
||||||
|
arping - longterm
|
||||||
|
ash - interactive, longterm
|
||||||
|
awk - noexec. runner
|
||||||
|
base64 - runner
|
||||||
|
basename - NOFORK
|
||||||
|
beep - longterm: beep -r 999999999
|
||||||
|
blkdiscard - noexec. leaks: open+xioctl
|
||||||
|
blkid - noexec
|
||||||
|
blockdev - noexec. leaks fd
|
||||||
|
bootchartd - daemon
|
||||||
|
brctl - noexec
|
||||||
|
bunzip2 - runner
|
||||||
|
bzcat - runner
|
||||||
|
bzip2 - runner
|
||||||
|
cal - noexec. can be runner: cal -n9999
|
||||||
|
cat - runner: cat HUGEFILE
|
||||||
|
chat - longterm (when used as intended - talking to modem over stdin/out)
|
||||||
|
chattr - noexec. runner
|
||||||
|
chgrp - noexec. runner
|
||||||
|
chmod - noexec. runner
|
||||||
|
chown - noexec. runner
|
||||||
|
chpasswd - longterm? (list of "user:password"s from stdin)
|
||||||
|
chpst - noexec. spawner
|
||||||
|
chroot - noexec. spawner
|
||||||
|
chrt - noexec. spawner
|
||||||
|
chvt - noexec. leaks: get_console_fd_or_die() may open a new fd, or return one of stdio fds
|
||||||
|
cksum - noexec. runner
|
||||||
|
clear - NOFORK
|
||||||
|
cmp - runner
|
||||||
|
comm - runner
|
||||||
|
conspy - interactive, longterm
|
||||||
|
cp - noexec. sometimes runner
|
||||||
|
cpio - runner
|
||||||
|
crond - daemon
|
||||||
|
crontab - longterm (runs $EDITOR), leaks: open+xasprintf
|
||||||
|
cryptpw - noexec. changes state: with --password-fd=N, moves N to stdin
|
||||||
|
cttyhack - noexec. spawner
|
||||||
|
cut - noexec. runner
|
||||||
|
date - noexec. nofork candidate(needs to stop messing up env, free xasprintf result, not use xfuncs after xasprintf)
|
||||||
|
dc - longterm (eats stdin if no params)
|
||||||
|
dd - noexec. runner
|
||||||
|
deallocvt - noexec. leaks: get_console_fd_or_die() may open a new fd, or return one of stdio fds
|
||||||
|
delgroup - noexec. leaks
|
||||||
|
deluser - noexec. leaks
|
||||||
|
depmod - longterm(ish)
|
||||||
|
devmem - hardware (access to device memory may hang)
|
||||||
|
df - noexec. leaks: nested allocs
|
||||||
|
dhcprelay - daemon
|
||||||
|
diff - runner
|
||||||
|
dirname - NOFORK
|
||||||
|
dmesg - runner
|
||||||
|
dnsd - daemon
|
||||||
|
dnsdomainname - noexec. talks to network (may query DNS)
|
||||||
|
dos2unix - noexec. runner
|
||||||
|
dpkg - runner
|
||||||
|
du - runner
|
||||||
|
dumpkmap - noexec. leaks: get_console_fd_or_die() may open a new fd, or return one of stdio fds
|
||||||
|
dumpleases - noexec. leaks: open+xread
|
||||||
|
echo - NOFORK
|
||||||
|
ed - interactive, longterm
|
||||||
|
egrep - longterm runner ("CMD | egrep ..." may run indefinitely, better to exec to conserve memory)
|
||||||
|
eject - hardware, leaks: open+ioctl_or_perror_and_die, changes state (moves fds)
|
||||||
|
env - noexec. spawner, changes state (env)
|
||||||
|
envdir - noexec. spawner
|
||||||
|
envuidgid - noexec. spawner
|
||||||
|
expand - runner
|
||||||
|
expr - noexec. leaks: nested allocs
|
||||||
|
factor - longterm (eats stdin if no params)
|
||||||
|
fakeidentd - daemon
|
||||||
|
false - NOFORK
|
||||||
|
fatattr - noexec. leaks: open+xioctl, complex
|
||||||
|
fbset - hardware, leaks: open+xfunc
|
||||||
|
fbsplash - runner, longterm
|
||||||
|
fdflush - hardware, leaks: open+ioctl_or_perror_and_die
|
||||||
|
fdformat - hardware, longterm
|
||||||
|
fdisk - interactive, longterm
|
||||||
|
fgconsole - noexec. leaks: get_console_fd_or_die() may open a new fd, or return one of stdio fds
|
||||||
|
fgrep - longterm runner ("CMD | fgrep ..." may run indefinitely, better to exec to conserve memory)
|
||||||
|
find - noexec. runner
|
||||||
|
findfs - suid
|
||||||
|
flash_eraseall - hardware
|
||||||
|
flash_lock - hardware
|
||||||
|
flash_unlock - hardware
|
||||||
|
flashcp - hardware
|
||||||
|
flock - spawner, changes state (file locks), let's play safe and not be noexec
|
||||||
|
fold - noexec. runner
|
||||||
|
free - NOFORK
|
||||||
|
freeramdisk - noexec. leaks: open+ioctl_or_perror_and_die
|
||||||
|
fsck - interactive, longterm
|
||||||
|
fsck.minix - needs ^C
|
||||||
|
fsfreeze - noexec. leaks: open+xioctl
|
||||||
|
fstrim - noexec. leaks: open+xioctl, find_block_device -> readdir+xstrdup
|
||||||
|
fsync - NOFORK
|
||||||
|
ftpd - daemon
|
||||||
|
ftpget - runner
|
||||||
|
ftpput - runner
|
||||||
|
fuser - complex
|
||||||
|
getopt - noexec. leaks: many allocs
|
||||||
|
getty - interactive, longterm
|
||||||
|
grep - longterm runner ("CMD | grep ..." may run indefinitely, better to exec to conserve memory)
|
||||||
|
groups - noexec
|
||||||
|
gunzip - runner
|
||||||
|
gzip - runner
|
||||||
|
halt - rare
|
||||||
|
hd - noexec. runner
|
||||||
|
hdparm - hardware
|
||||||
|
head - noexec. runner
|
||||||
|
hexdump - noexec. runner
|
||||||
|
hexedit - interactive, longterm
|
||||||
|
hostid - NOFORK
|
||||||
|
hostname - noexec. talks to network (hostname -d may query DNS)
|
||||||
|
httpd - daemon
|
||||||
|
hush - interactive, longterm
|
||||||
|
hwclock - hardware (xioctl(RTC_RD_TIME))
|
||||||
|
i2cdetect - hardware
|
||||||
|
i2cdump - hardware
|
||||||
|
i2cget - hardware
|
||||||
|
i2cset - hardware
|
||||||
|
id - noexec
|
||||||
|
ifconfig - hardware? (mem_start NN io_addr NN irq NN), leaks: xsocket+ioctl_or_perror_and_die
|
||||||
|
ifenslave - noexec. leaks: xsocket+bb_perror_msg_and_die
|
||||||
|
ifplugd - daemon
|
||||||
|
inetd - daemon
|
||||||
|
init - daemon
|
||||||
|
inotifyd - daemon
|
||||||
|
insmod - noexec
|
||||||
|
install - runner
|
||||||
|
ionice - noexec. spawner
|
||||||
|
iostat - longterm: "iostat 1" runs indefinitely
|
||||||
|
ip - noexec
|
||||||
|
ipaddr - noexec
|
||||||
|
ipcalc - noexec. ipcalc -h talks to network
|
||||||
|
ipcrm - noexec
|
||||||
|
ipcs - noexec
|
||||||
|
iplink - noexec
|
||||||
|
ipneigh - noexec
|
||||||
|
iproute - noexec
|
||||||
|
iprule - noexec
|
||||||
|
iptunnel - noexec
|
||||||
|
kbd_mode - noexec. leaks: xopen_nonblocking+xioctl
|
||||||
|
kill - NOFORK
|
||||||
|
killall - NOFORK
|
||||||
|
killall5 - NOFORK
|
||||||
|
klogd - daemon
|
||||||
|
last - runner (I've got 1300 lines of output when tried it)
|
||||||
|
less - interactive, longterm
|
||||||
|
link - NOFORK
|
||||||
|
linux32 - noexec. spawner
|
||||||
|
linux64 - noexec. spawner
|
||||||
|
linuxrc - daemon
|
||||||
|
ln - noexec
|
||||||
|
loadfont - noexec. leaks: config_open+bb_error_msg_and_die("map format")
|
||||||
|
loadkmap - noexec. leaks: get_console_fd_or_die() may open a new fd, or return one of stdio fds
|
||||||
|
logger - runner
|
||||||
|
login - suid, interactive, longterm
|
||||||
|
logname - NOFORK
|
||||||
|
losetup - noexec. complex
|
||||||
|
lpd - daemon
|
||||||
|
lpq - runner
|
||||||
|
lpr - runner
|
||||||
|
ls - noexec. runner
|
||||||
|
lsattr - noexec. runner
|
||||||
|
lsmod - noexec
|
||||||
|
lsof - complex
|
||||||
|
lspci - noexec. too rare to bother for nofork
|
||||||
|
lsscsi - noexec. too rare to bother for nofork
|
||||||
|
lsusb - noexec. too rare to bother for nofork
|
||||||
|
lzcat - runner
|
||||||
|
lzma - runner
|
||||||
|
lzop - runner
|
||||||
|
lzopcat - runner
|
||||||
|
makedevs - noexec
|
||||||
|
makemime - runner
|
||||||
|
man - spawner, interactive, longterm
|
||||||
|
md5sum - noexec. runner
|
||||||
|
mdev - daemon
|
||||||
|
mesg - NOFORK
|
||||||
|
microcom - interactive, longterm
|
||||||
|
minips - noexec
|
||||||
|
mkdir - NOFORK
|
||||||
|
mkdosfs - needs ^C
|
||||||
|
mke2fs - needs ^C
|
||||||
|
mkfifo - noexec
|
||||||
|
mkfs.ext2 - needs ^C
|
||||||
|
mkfs.minix - needs ^C
|
||||||
|
mkfs.vfat - needs ^C
|
||||||
|
mknod - noexec
|
||||||
|
mkpasswd - noexec. changes state: with --password-fd=N, moves N to stdin
|
||||||
|
mkswap - needs ^C
|
||||||
|
mktemp - noexec. leaks: xstrdup+concat_path_file
|
||||||
|
modinfo - noexec
|
||||||
|
modprobe - noexec
|
||||||
|
more - interactive, longterm
|
||||||
|
mount - suid
|
||||||
|
mountpoint - noexec. leaks: option -n "print dev name": find_block_device -> readdir+xstrdup
|
||||||
|
mpstat - longterm: "mpstat 1" runs indefinitely
|
||||||
|
mt - hardware
|
||||||
|
mv - noexec. sometimes runner
|
||||||
|
nameif - noexec. openlog(), leaks: config_open2+ioctl_or_perror_and_die
|
||||||
|
nbd-client - noexec
|
||||||
|
nc - runner
|
||||||
|
netstat - longterm with -c (continuous listing)
|
||||||
|
nice - noexec. spawner
|
||||||
|
nl - runner
|
||||||
|
nmeter - longterm
|
||||||
|
nohup - noexec. spawner
|
||||||
|
nproc - NOFORK
|
||||||
|
ntpd - daemon
|
||||||
|
nuke - noexec
|
||||||
|
od - runner
|
||||||
|
openvt - longterm: spawns a child and waits for it
|
||||||
|
partprobe - noexec. leaks: open+ioctl_or_perror_and_die(BLKRRPART)
|
||||||
|
passwd - suid
|
||||||
|
paste - noexec. runner
|
||||||
|
patch - needs ^C
|
||||||
|
pgrep - must fork+exec to get correct /proc/PID/cmdline and comm field
|
||||||
|
pidof - must fork+exec to get correct /proc/PID/cmdline and comm field
|
||||||
|
ping - suid, longterm
|
||||||
|
ping6 - suid, longterm
|
||||||
|
pipe_progress - longterm
|
||||||
|
pivot_root - NOFORK
|
||||||
|
pkill - must fork+exec to get correct /proc/PID/cmdline and comm field
|
||||||
|
pmap - noexec candidate, leaks: open+xstrdup
|
||||||
|
popmaildir - runner
|
||||||
|
poweroff - rare
|
||||||
|
powertop - interactive, longterm
|
||||||
|
printenv - NOFORK
|
||||||
|
printf - NOFORK
|
||||||
|
ps - noexec
|
||||||
|
pscan - talks to network
|
||||||
|
pstree - noexec
|
||||||
|
pwd - NOFORK
|
||||||
|
pwdx - NOFORK
|
||||||
|
raidautorun - noexec. very simple. leaks: open+xioctl
|
||||||
|
rdate - talks to network
|
||||||
|
rdev - noexec. leaks: find_block_device -> readdir+xstrdup
|
||||||
|
readlink - NOFORK
|
||||||
|
readprofile - reads /boot/System.map and /proc/profile, better to free more memory by execing?
|
||||||
|
realpath - NOFORK
|
||||||
|
reboot - rare
|
||||||
|
reformime - runner
|
||||||
|
remove-shell - noexec. leaks: open+xfunc
|
||||||
|
renice - noexec. nofork candidate(uses getpwnam, is that ok?)
|
||||||
|
reset - noexec. spawner (execs "stty")
|
||||||
|
resize - noexec. changes state (signal handlers)
|
||||||
|
resume - noexec
|
||||||
|
rev - runner
|
||||||
|
rm - noexec. rm -i interactive
|
||||||
|
rmdir - NOFORK
|
||||||
|
rmmod - noexec
|
||||||
|
route - talks to network (may query DNS to convert IPs to names)
|
||||||
|
rpm - runner
|
||||||
|
rpm2cpio - runner
|
||||||
|
rtcwake - longterm: puts system to sleep, optimizing this for speed is pointless
|
||||||
|
run-init - spawner, rare, changes state (oh yes), execing may be important to free binary's inode
|
||||||
|
run-parts - longterm
|
||||||
|
runlevel - noexec. can be nofork if "endutxent()" is called unconditionally, but too rare to bother?
|
||||||
|
runsv - daemon
|
||||||
|
runsvdir - daemon
|
||||||
|
rx - runner
|
||||||
|
script - longterm: pumps script output from slave pty
|
||||||
|
scriptreplay - longterm: plays back "script" saved output, sleeping as necessary.
|
||||||
|
sed - runner
|
||||||
|
sendmail - runner
|
||||||
|
seq - noexec. runner
|
||||||
|
setarch - noexec. spawner
|
||||||
|
setconsole - noexec
|
||||||
|
setfattr - noexec
|
||||||
|
setfont - noexec. leaks a lot of stuff
|
||||||
|
setkeycodes - noexec
|
||||||
|
setlogcons - noexec
|
||||||
|
setpriv - spawner, changes state, let's play safe and not be noexec
|
||||||
|
setserial - noexec
|
||||||
|
setsid - spawner, uses fork_or_rexec() [not audited to work in noexec], let's play safe and not be noexec
|
||||||
|
setuidgid - noexec. spawner
|
||||||
|
sha1sum - noexec. runner
|
||||||
|
sha256sum - noexec. runner
|
||||||
|
sha3sum - noexec. runner
|
||||||
|
sha512sum - noexec. runner
|
||||||
|
showkey - interactive, longterm
|
||||||
|
shred - runner
|
||||||
|
shuf - noexec. runner
|
||||||
|
slattach - longterm (may sleep forever), uses bb_common_bufsiz1
|
||||||
|
sleep - longterm. Could be nofork, if not the problem of "killall sleep" not killing it.
|
||||||
|
smemcap - runner
|
||||||
|
softlimit - noexec. spawner
|
||||||
|
sort - noexec. runner
|
||||||
|
split - runner
|
||||||
|
ssl_client - longterm
|
||||||
|
start-stop-daemon - not noexec: uses bb_common_bufsiz1
|
||||||
|
stat - noexec. nofork candidate(needs fewer allocs)
|
||||||
|
strings - runner
|
||||||
|
stty - noexec. nofork candidate: has no allocs or opens except xmove_fd(xopen("-F DEVICE"),STDIN). tcsetattr(STDIN) is not a problem: it would work the same across processes sharing this fd
|
||||||
|
su - suid, spawner
|
||||||
|
sulogin - noexec. spawner
|
||||||
|
sum - runner
|
||||||
|
sv - noexec. needs ^C (uses usleep(420000))
|
||||||
|
svc - noexec. needs ^C (uses usleep(420000))
|
||||||
|
svlogd - daemon
|
||||||
|
swapoff - longterm: may cause memory pressure, execing is beneficial
|
||||||
|
swapon - rare
|
||||||
|
switch_root - spawner, rare, changes state (oh yes), execing may be important to free binary's inode
|
||||||
|
sync - NOFORK
|
||||||
|
sysctl - noexec. leaks: xstrdup+xmalloc_read
|
||||||
|
syslogd - daemon
|
||||||
|
tac - noexec. runner
|
||||||
|
tail - runner
|
||||||
|
tar - runner
|
||||||
|
taskset - noexec. spawner
|
||||||
|
tcpsvd - daemon
|
||||||
|
tee - runner
|
||||||
|
telnet - interactive, longterm
|
||||||
|
telnetd - daemon
|
||||||
|
test - NOFORK
|
||||||
|
tftp - runner
|
||||||
|
tftpd - daemon
|
||||||
|
time - spawner, longterm, changes state (signals)
|
||||||
|
timeout - spawner, longterm, changes state (signals)
|
||||||
|
top - interactive, longterm
|
||||||
|
touch - NOFORK
|
||||||
|
tr - runner
|
||||||
|
traceroute - suid, longterm
|
||||||
|
traceroute6 - suid, longterm
|
||||||
|
true - NOFORK
|
||||||
|
truncate - NOFORK
|
||||||
|
tty - NOFORK
|
||||||
|
ttysize - NOFORK
|
||||||
|
tunctl - noexec
|
||||||
|
tune2fs - noexec. leaks: open+xfunc
|
||||||
|
ubiattach - hardware
|
||||||
|
ubidetach - hardware
|
||||||
|
ubimkvol - hardware
|
||||||
|
ubirename - hardware
|
||||||
|
ubirmvol - hardware
|
||||||
|
ubirsvol - hardware
|
||||||
|
ubiupdatevol - hardware
|
||||||
|
udhcpc - daemon
|
||||||
|
udhcpd - daemon
|
||||||
|
udpsvd - daemon
|
||||||
|
uevent - daemon
|
||||||
|
umount - noexec. leaks: nested xmalloc
|
||||||
|
uname - NOFORK
|
||||||
|
uncompress - runner
|
||||||
|
unexpand - runner
|
||||||
|
uniq - runner
|
||||||
|
unix2dos - noexec. runner
|
||||||
|
unlink - NOFORK
|
||||||
|
unlzma - runner
|
||||||
|
unlzop - runner
|
||||||
|
unxz - runner
|
||||||
|
unzip - runner
|
||||||
|
uptime - noexec. nofork candidate(is getutxent ok?)
|
||||||
|
users - noexec. nofork candidate(is getutxent ok?)
|
||||||
|
usleep - NOFORK. But what about "killall usleep"?
|
||||||
|
uudecode - runner
|
||||||
|
uuencode - runner
|
||||||
|
vconfig - noexec. leaks: xsocket+ioctl_or_perror_and_die
|
||||||
|
vi - interactive, longterm
|
||||||
|
vlock - suid
|
||||||
|
volname - hardware (reads CDROM, this can take long-ish if need to spin up)
|
||||||
|
w - noexec. nofork candidate(is getutxent ok?)
|
||||||
|
wall - suid
|
||||||
|
watch - longterm
|
||||||
|
watchdog - daemon
|
||||||
|
wc - runner
|
||||||
|
wget - longterm
|
||||||
|
which - NOFORK
|
||||||
|
who - noexec. nofork candidate(is getutxent ok?)
|
||||||
|
whoami - NOFORK
|
||||||
|
whois - talks to network
|
||||||
|
xargs - noexec. spawner
|
||||||
|
xxd - noexec. runner
|
||||||
|
xz - runner
|
||||||
|
xzcat - runner
|
||||||
|
yes - noexec. runner
|
||||||
|
zcat - runner
|
||||||
|
zcip - daemon
|
34
busybox-1.33.0/NOFORK_NOEXEC.sh
Executable file
34
busybox-1.33.0/NOFORK_NOEXEC.sh
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
exec >NOFORK_NOEXEC.lst1
|
||||||
|
|
||||||
|
false && grep -Fv 'NOFORK' NOFORK_NOEXEC.lst \
|
||||||
|
| grep -v 'noexec.' | grep -v 'noexec$' \
|
||||||
|
| grep -v ' suid' \
|
||||||
|
| grep -v ' daemon' \
|
||||||
|
| grep -v ' longterm' \
|
||||||
|
| grep rare
|
||||||
|
|
||||||
|
echo === nofork candidate
|
||||||
|
grep -F 'nofork candidate' NOFORK_NOEXEC.lst \
|
||||||
|
|
||||||
|
echo === noexec candidate
|
||||||
|
grep -F 'noexec candidate' NOFORK_NOEXEC.lst \
|
||||||
|
|
||||||
|
echo === ^C
|
||||||
|
grep -F '^C' NOFORK_NOEXEC.lst \
|
||||||
|
| grep -F ' - ' \
|
||||||
|
|
||||||
|
echo === talks
|
||||||
|
grep -F 'talks' NOFORK_NOEXEC.lst \
|
||||||
|
| grep -F ' - ' \
|
||||||
|
|
||||||
|
echo ===
|
||||||
|
grep -Fv 'NOFORK' NOFORK_NOEXEC.lst \
|
||||||
|
| grep '^[^ ][^ ]* - ' \
|
||||||
|
| grep -v 'noexec.' | grep -v ' - noexec$' \
|
||||||
|
| grep -v ' suid' \
|
||||||
|
| grep -v ' daemon' \
|
||||||
|
| grep -v 'longterm' \
|
||||||
|
| grep -v 'interactive' \
|
||||||
|
| grep -v 'hardware' \
|
204
busybox-1.33.0/README
Normal file
204
busybox-1.33.0/README
Normal file
@ -0,0 +1,204 @@
|
|||||||
|
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 built-in 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://git.busybox.net/busybox/
|
||||||
|
|
||||||
|
Anonymous GIT access is available. For instructions, check out:
|
||||||
|
|
||||||
|
http://www.busybox.net/source.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
|
||||||
|
(https://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 git changelog.
|
||||||
|
|
||||||
|
Note: if you want to compile busybox in a busybox environment you must
|
||||||
|
select CONFIG_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.
|
||||||
|
|
||||||
|
-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 surprised 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.
|
||||||
|
|
||||||
|
In 2005 Shaun Jackman has ported busybox to a combination of newlib
|
||||||
|
and libgloss, and some of his patches have been integrated.
|
||||||
|
|
||||||
|
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, and v850e. 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
|
||||||
|
mailing list:
|
||||||
|
|
||||||
|
busybox@busybox.net
|
||||||
|
|
||||||
|
and/or maintainer:
|
||||||
|
|
||||||
|
Denys Vlasenko
|
||||||
|
<vda.linux@googlemail.com>
|
258
busybox-1.33.0/TODO
Normal file
258
busybox-1.33.0/TODO
Normal file
@ -0,0 +1,258 @@
|
|||||||
|
Busybox TODO
|
||||||
|
|
||||||
|
Harvest patches from
|
||||||
|
http://git.openembedded.org/cgit.cgi/openembedded/tree/recipes/busybox/
|
||||||
|
https://dev.openwrt.org/browser/trunk/package/busybox/patches/
|
||||||
|
|
||||||
|
|
||||||
|
Stuff that needs to be done. This is organized by who plans to get around to
|
||||||
|
doing it eventually, but that doesn't mean they "own" the item. If you want to
|
||||||
|
do one of these bounce an email off the person it's listed under to see if they
|
||||||
|
have any suggestions how they plan to go about it, and to minimize conflicts
|
||||||
|
between your work and theirs. But otherwise, all of these are fair game.
|
||||||
|
|
||||||
|
Rob Landley suggested this:
|
||||||
|
Implement bb_realpath() that can handle NULL on non-glibc.
|
||||||
|
|
||||||
|
sh
|
||||||
|
The command shell situation is a mess. We have two different
|
||||||
|
shells that don't really share any code, and the "standalone shell" doesn't
|
||||||
|
work all that well (especially not in a chroot environment), due to apps not
|
||||||
|
being reentrant.
|
||||||
|
|
||||||
|
Do a SUSv3 audit
|
||||||
|
Look at the full Single Unix Specification version 3 (available online at
|
||||||
|
"http://www.opengroup.org/onlinepubs/009695399/nfindex.html") and
|
||||||
|
figure out which of our apps are compliant, and what we're missing that
|
||||||
|
we might actually care about.
|
||||||
|
|
||||||
|
Even better would be some kind of automated compliance test harness that
|
||||||
|
exercises each command line option and the various corner cases.
|
||||||
|
|
||||||
|
Internationalization
|
||||||
|
How much internationalization should we do?
|
||||||
|
|
||||||
|
The low hanging fruit is UTF-8 character set support. We should do this.
|
||||||
|
See TODO_unicode file.
|
||||||
|
|
||||||
|
We also have lots of hardwired english text messages. Consolidating this
|
||||||
|
into some kind of message table not only makes translation easier, but
|
||||||
|
also allows us to consolidate redundant (or close) strings.
|
||||||
|
|
||||||
|
We probably don't want to be bloated with locale support. (Not unless we
|
||||||
|
can cleanly export it from our underlying C library without having to
|
||||||
|
concern ourselves with it directly. Perhaps a few specific things like a
|
||||||
|
config option for "date" are low hanging fruit here?)
|
||||||
|
|
||||||
|
What level should things happen at? How much do we care about
|
||||||
|
internationalizing the text console when X11 and xterms are so much better
|
||||||
|
at it? (There's some infrastructure here we don't implement: The
|
||||||
|
"unicode_start" and "unicode_stop" shell scripts need "vt-is-UTF8" and a
|
||||||
|
--unicode option to loadkeys. That implies a real loadkeys/dumpkeys
|
||||||
|
implementation to replace loadkmap/dumpkmap. Plus messing with console font
|
||||||
|
loading. Is it worth it, or do we just say "use X"?)
|
||||||
|
|
||||||
|
Individual compilation of applets.
|
||||||
|
It would be nice if busybox had the option to compile to individual applets,
|
||||||
|
for people who want an alternate implementation less bloated than the gnu
|
||||||
|
utils (or simply with less political baggage), but without it being one big
|
||||||
|
executable.
|
||||||
|
|
||||||
|
Turning libbb into a real dll is another possibility, especially if libbb
|
||||||
|
could export some of the other library interfaces we've already more or less
|
||||||
|
got the code for (like zlib).
|
||||||
|
|
||||||
|
buildroot - Make a "dogfood" option
|
||||||
|
Busybox 1.1 will be capable of replacing most gnu packages for real world
|
||||||
|
use, such as developing software or in a live CD. It needs wider testing.
|
||||||
|
|
||||||
|
Busybox should now be able to replace bzip2, coreutils, e2fsprogs, file,
|
||||||
|
findutils, gawk, grep, inetutils, less, modutils, net-tools, patch, procps,
|
||||||
|
sed, shadow, sysklogd, sysvinit, tar, util-linux, and vim. The resulting
|
||||||
|
system should be self-hosting (I.E. able to rebuild itself from source
|
||||||
|
code). This means it would need (at least) binutils, gcc, and make, or
|
||||||
|
equivalents.
|
||||||
|
|
||||||
|
It would be a good "eating our own dogfood" test if buildroot had the option
|
||||||
|
of using a "make allyesconfig" busybox instead of the all of the above
|
||||||
|
packages. Anything that's wrong with the resulting system, we can fix. (It
|
||||||
|
would be nice to be able to upgrade busybox to be able to replace bash and
|
||||||
|
diffutils as well, but we're not there yet.)
|
||||||
|
|
||||||
|
One example of an existing system that does this already is Firmware Linux:
|
||||||
|
http://www.landley.net/code/firmware
|
||||||
|
|
||||||
|
initramfs
|
||||||
|
Busybox should have a sample initramfs build script. This depends on
|
||||||
|
shell, mdev, and switch_root.
|
||||||
|
|
||||||
|
mkdep
|
||||||
|
Write a mkdep that doesn't segfault if there's a directory it doesn't
|
||||||
|
have permission to read, isn't based on manually editing the output of
|
||||||
|
lexx and yacc, doesn't make such a mess under include/config, etc.
|
||||||
|
|
||||||
|
Group globals into unions of structures.
|
||||||
|
Go through and turn all the global and static variables into structures,
|
||||||
|
and have all those structures be in a big union shared between processes,
|
||||||
|
so busybox uses less bss. (This is a big win on nommu machines.) See
|
||||||
|
sed.c and mdev.c for examples.
|
||||||
|
|
||||||
|
Go through bugs.busybox.net and close out all of that somehow.
|
||||||
|
This one's open to everybody, but I'll wind up doing it...
|
||||||
|
|
||||||
|
Bernhard Reutner-Fischer <busybox@busybox.net> suggests to look at these:
|
||||||
|
New debug options:
|
||||||
|
-Wlarger-than-127
|
||||||
|
Cleanup any big users
|
||||||
|
Collate BUFSIZ IOBUF_SIZE MY_BUF_SIZE PIPE_PROGRESS_SIZE BUFSIZE PIPESIZE
|
||||||
|
make bb_common_bufsiz1 configurable, size wise.
|
||||||
|
make pipesize configurable, size wise.
|
||||||
|
Use bb_common_bufsiz1 throughout applets!
|
||||||
|
|
||||||
|
As yet unclaimed:
|
||||||
|
|
||||||
|
----
|
||||||
|
diff
|
||||||
|
Make sure we handle empty files properly:
|
||||||
|
From the patch man page:
|
||||||
|
|
||||||
|
you can remove a file by sending out a context diff that compares
|
||||||
|
the file to be deleted with an empty file dated the Epoch. The
|
||||||
|
file will be removed unless patch is conforming to POSIX and the
|
||||||
|
-E or --remove-empty-files option is not given.
|
||||||
|
---
|
||||||
|
patch
|
||||||
|
Should have simple fuzz factor support to apply patches at an offset which
|
||||||
|
shouldn't take up too much space.
|
||||||
|
|
||||||
|
And while we're at it, a new patch filename quoting format is apparently
|
||||||
|
coming soon: http://marc.theaimsgroup.com/?l=git&m=112927316408690&w=2
|
||||||
|
|
||||||
|
Architectural issues:
|
||||||
|
|
||||||
|
bb_close() with fsync()
|
||||||
|
We should have a bb_close() in place of normal close, with a CONFIG_ option
|
||||||
|
to not just check the return value of close() for an error, but fsync().
|
||||||
|
Close can't reliably report anything useful because if write() accepted the
|
||||||
|
data then it either went out to the network or it's in cache or a pipe
|
||||||
|
buffer. Either way, there's no guarantee it'll make it to its final
|
||||||
|
destination before close() gets called, so there's no guarantee that any
|
||||||
|
error will be reported.
|
||||||
|
|
||||||
|
You need to call fsync() if you care about errors that occur after write(),
|
||||||
|
but that can have a big performance impact. So make it a config option.
|
||||||
|
---
|
||||||
|
Unify archivers
|
||||||
|
Lots of archivers have the same general infrastructure. The directory
|
||||||
|
traversal code should be factored out, and the guts of each archiver could
|
||||||
|
be some setup code and a series of callbacks for "add this file",
|
||||||
|
"add this directory", "add this symlink" and so on.
|
||||||
|
|
||||||
|
This could clean up tar and zip, and make it cheaper to add cpio and ar
|
||||||
|
write support, and possibly even cheaply add things like mkisofs or
|
||||||
|
mksquashfs someday, if they become relevant.
|
||||||
|
---
|
||||||
|
Text buffer support.
|
||||||
|
Several existing applets (sort, vi, less...) read
|
||||||
|
a whole file into memory and act on it. Use open_read_close().
|
||||||
|
---
|
||||||
|
Memory Allocation
|
||||||
|
We have a CONFIG_BUFFER mechanism that lets us select whether to do memory
|
||||||
|
allocation on the stack or the heap. Unfortunately, we're not using it much.
|
||||||
|
We need to audit our memory allocations and turn a lot of malloc/free calls
|
||||||
|
into RESERVE_CONFIG_BUFFER/RELEASE_CONFIG_BUFFER.
|
||||||
|
For a start, see e.g. make EXTRA_CFLAGS=-Wlarger-than-64
|
||||||
|
|
||||||
|
And while we're at it, many of the CONFIG_FEATURE_CLEAN_UP #ifdefs will be
|
||||||
|
optimized out by the compiler in the stack allocation case (since there's no
|
||||||
|
free for an alloca()), and this means that various cleanup loops that just
|
||||||
|
call free might also be optimized out by the compiler if written right, so
|
||||||
|
we can yank those #ifdefs too, and generally clean up the code.
|
||||||
|
---
|
||||||
|
FEATURE_CLEAN_UP
|
||||||
|
This is more an unresolved issue than a to-do item. More thought is needed.
|
||||||
|
|
||||||
|
Normally we rely on exit() to free memory, close files and unmap segments
|
||||||
|
for us. This makes most calls to free(), close(), and unmap() optional in
|
||||||
|
busybox applets that don't intend to run for very long, and optional stuff
|
||||||
|
can be omitted to save size.
|
||||||
|
|
||||||
|
The idea was raised that we could simulate fork/exit with setjmp/longjmp
|
||||||
|
for _really_ brainless embedded systems, or speed up the standalone shell
|
||||||
|
by not forking. Doing so would require a reliable FEATURE_CLEAN_UP.
|
||||||
|
Unfortunately, this isn't as easy as it sounds.
|
||||||
|
|
||||||
|
The problem is, lots of things exit(), sometimes unexpectedly (xmalloc())
|
||||||
|
and sometimes reliably (bb_perror_msg_and_die() or show_usage()). This
|
||||||
|
jumps out of the normal flow control and bypasses any cleanup code we
|
||||||
|
put at the end of our applets.
|
||||||
|
|
||||||
|
It's possible to add hooks to libbb functions like xmalloc() and xopen()
|
||||||
|
to add their entries to a linked list, which could be traversed and
|
||||||
|
freed/closed automatically. (This would need to be able to free just the
|
||||||
|
entries after a checkpoint to be usable for a forkless standalone shell.
|
||||||
|
You don't want to free the shell's own resources.)
|
||||||
|
|
||||||
|
Right now, FEATURE_CLEAN_UP is more or less a debugging aid, to make things
|
||||||
|
like valgrind happy. It's also documentation of _what_ we're trusting
|
||||||
|
exit() to clean up for us. But new infrastructure to auto-free stuff would
|
||||||
|
render the existing FEATURE_CLEAN_UP code redundant.
|
||||||
|
|
||||||
|
For right now, exit() handles it just fine.
|
||||||
|
|
||||||
|
|
||||||
|
Minor stuff:
|
||||||
|
watchdog.c could autodetect the timer duration via:
|
||||||
|
if(!ioctl (fd, WDIOC_GETTIMEOUT, &tmo)) timer_duration = 1 + (tmo / 2);
|
||||||
|
Unfortunately, that needs linux/watchdog.h and that contains unfiltered
|
||||||
|
kernel types on some distros, which breaks the build.
|
||||||
|
---
|
||||||
|
use bb_error_msg where appropriate: See
|
||||||
|
egrep "(printf.*\([[:space:]]*(stderr|2)|[^_]write.*\([[:space:]]*(stderr|2))"
|
||||||
|
---
|
||||||
|
use bb_perror_msg where appropriate: See
|
||||||
|
egrep "[^_]perror"
|
||||||
|
---
|
||||||
|
possible code duplication ingroup() and is_a_group_member()
|
||||||
|
---
|
||||||
|
Move __get_hz() to a better place and (re)use it in route.c, ash.c
|
||||||
|
---
|
||||||
|
See grep -r strtod
|
||||||
|
Alot of duplication that wants cleanup.
|
||||||
|
---
|
||||||
|
unify progress_meter. wget, flash_eraseall, pipe_progress, fbsplash, setfiles.
|
||||||
|
---
|
||||||
|
support start-stop-daemon -d <chdir-path>
|
||||||
|
---
|
||||||
|
|
||||||
|
(TODO list after discussion 11.05.2009)
|
||||||
|
|
||||||
|
* shrink tc/brctl/ip
|
||||||
|
tc/brctl seem like fairly large things to try and tackle in your timeframe,
|
||||||
|
and i think people have posted attempts in the past. Adding additional
|
||||||
|
options to ip though seems reasonable.
|
||||||
|
|
||||||
|
* add tests for some applets
|
||||||
|
|
||||||
|
* implement POSIX utilities and audit them for POSIX conformance. then
|
||||||
|
audit them for GNU conformance. then document all your findings in a new
|
||||||
|
doc/conformance.txt file while perhaps implementing some of the missing
|
||||||
|
features.
|
||||||
|
you can find the latest POSIX documentation (1003.1-2008) here:
|
||||||
|
http://www.opengroup.org/onlinepubs/9699919799/
|
||||||
|
and the complete list of all utilities that POSIX covers:
|
||||||
|
http://www.opengroup.org/onlinepubs/9699919799/idx/utilities.html
|
||||||
|
The first step would to generate a file/matrix what is already archived
|
||||||
|
(also IPV6)
|
||||||
|
|
||||||
|
* implement 'at'
|
||||||
|
|
||||||
|
* rpcbind (former portmap) or equivalent
|
||||||
|
so that we don't have to use -o nolock on nfs mounts
|
||||||
|
|
||||||
|
* check IPV6 compliance
|
||||||
|
|
||||||
|
* generate a mini example using kernel+busybox only (+libc) for example
|
||||||
|
|
||||||
|
* more support for advanced linux 2.6.x features, see: iotop
|
||||||
|
most likely there is more
|
45
busybox-1.33.0/TODO_unicode
Normal file
45
busybox-1.33.0/TODO_unicode
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
Already fixed applets:
|
||||||
|
cal
|
||||||
|
lsmod
|
||||||
|
df
|
||||||
|
dumpleases
|
||||||
|
|
||||||
|
Applets which may need unicode handling (more extensive than sanitizing
|
||||||
|
of filenames in error messages):
|
||||||
|
|
||||||
|
ls - work in progress
|
||||||
|
expand, unexpand - uses unicode_strlen, not scrlen
|
||||||
|
ash, hush through lineedit - uses unicode_strlen, not scrlen
|
||||||
|
top - need to sanitize process args
|
||||||
|
ps - need to sanitize process args
|
||||||
|
less
|
||||||
|
more
|
||||||
|
vi
|
||||||
|
ed
|
||||||
|
cut
|
||||||
|
awk
|
||||||
|
sed
|
||||||
|
tr
|
||||||
|
grep egrep fgrep
|
||||||
|
fold
|
||||||
|
sort
|
||||||
|
head, tail
|
||||||
|
catv - "display nonprinting chars" - what this could mean for unicode?
|
||||||
|
wc
|
||||||
|
chat
|
||||||
|
dumpkmap
|
||||||
|
last - just line up columns
|
||||||
|
man
|
||||||
|
microcom
|
||||||
|
strings
|
||||||
|
watch
|
||||||
|
|
||||||
|
Unsure, may need fixing:
|
||||||
|
|
||||||
|
hostname - do we really want to protect against bad chars in it?
|
||||||
|
patch
|
||||||
|
addgroup, adduser, delgroup, deluser
|
||||||
|
telnet
|
||||||
|
telnetd
|
||||||
|
od
|
||||||
|
printf
|
1
busybox-1.33.0/_install/bin/arch
Symbolic link
1
busybox-1.33.0/_install/bin/arch
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/ash
Symbolic link
1
busybox-1.33.0/_install/bin/ash
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/base32
Symbolic link
1
busybox-1.33.0/_install/bin/base32
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/base64
Symbolic link
1
busybox-1.33.0/_install/bin/base64
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
BIN
busybox-1.33.0/_install/bin/busybox
Executable file
BIN
busybox-1.33.0/_install/bin/busybox
Executable file
Binary file not shown.
1
busybox-1.33.0/_install/bin/cat
Symbolic link
1
busybox-1.33.0/_install/bin/cat
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/chattr
Symbolic link
1
busybox-1.33.0/_install/bin/chattr
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/chgrp
Symbolic link
1
busybox-1.33.0/_install/bin/chgrp
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/chmod
Symbolic link
1
busybox-1.33.0/_install/bin/chmod
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/chown
Symbolic link
1
busybox-1.33.0/_install/bin/chown
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/conspy
Symbolic link
1
busybox-1.33.0/_install/bin/conspy
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/cp
Symbolic link
1
busybox-1.33.0/_install/bin/cp
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/cpio
Symbolic link
1
busybox-1.33.0/_install/bin/cpio
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/cttyhack
Symbolic link
1
busybox-1.33.0/_install/bin/cttyhack
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/date
Symbolic link
1
busybox-1.33.0/_install/bin/date
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/dd
Symbolic link
1
busybox-1.33.0/_install/bin/dd
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/df
Symbolic link
1
busybox-1.33.0/_install/bin/df
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/dmesg
Symbolic link
1
busybox-1.33.0/_install/bin/dmesg
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/dnsdomainname
Symbolic link
1
busybox-1.33.0/_install/bin/dnsdomainname
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/dumpkmap
Symbolic link
1
busybox-1.33.0/_install/bin/dumpkmap
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/echo
Symbolic link
1
busybox-1.33.0/_install/bin/echo
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/ed
Symbolic link
1
busybox-1.33.0/_install/bin/ed
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/egrep
Symbolic link
1
busybox-1.33.0/_install/bin/egrep
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/false
Symbolic link
1
busybox-1.33.0/_install/bin/false
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/fatattr
Symbolic link
1
busybox-1.33.0/_install/bin/fatattr
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/fdflush
Symbolic link
1
busybox-1.33.0/_install/bin/fdflush
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/fgrep
Symbolic link
1
busybox-1.33.0/_install/bin/fgrep
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/fsync
Symbolic link
1
busybox-1.33.0/_install/bin/fsync
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/getopt
Symbolic link
1
busybox-1.33.0/_install/bin/getopt
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/grep
Symbolic link
1
busybox-1.33.0/_install/bin/grep
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/gunzip
Symbolic link
1
busybox-1.33.0/_install/bin/gunzip
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/gzip
Symbolic link
1
busybox-1.33.0/_install/bin/gzip
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/hostname
Symbolic link
1
busybox-1.33.0/_install/bin/hostname
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/hush
Symbolic link
1
busybox-1.33.0/_install/bin/hush
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/ionice
Symbolic link
1
busybox-1.33.0/_install/bin/ionice
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/iostat
Symbolic link
1
busybox-1.33.0/_install/bin/iostat
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/ipcalc
Symbolic link
1
busybox-1.33.0/_install/bin/ipcalc
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/kbd_mode
Symbolic link
1
busybox-1.33.0/_install/bin/kbd_mode
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/kill
Symbolic link
1
busybox-1.33.0/_install/bin/kill
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/link
Symbolic link
1
busybox-1.33.0/_install/bin/link
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/linux32
Symbolic link
1
busybox-1.33.0/_install/bin/linux32
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/linux64
Symbolic link
1
busybox-1.33.0/_install/bin/linux64
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/ln
Symbolic link
1
busybox-1.33.0/_install/bin/ln
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/login
Symbolic link
1
busybox-1.33.0/_install/bin/login
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/ls
Symbolic link
1
busybox-1.33.0/_install/bin/ls
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/lsattr
Symbolic link
1
busybox-1.33.0/_install/bin/lsattr
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/lzop
Symbolic link
1
busybox-1.33.0/_install/bin/lzop
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/makemime
Symbolic link
1
busybox-1.33.0/_install/bin/makemime
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/mkdir
Symbolic link
1
busybox-1.33.0/_install/bin/mkdir
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/mknod
Symbolic link
1
busybox-1.33.0/_install/bin/mknod
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/mktemp
Symbolic link
1
busybox-1.33.0/_install/bin/mktemp
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/more
Symbolic link
1
busybox-1.33.0/_install/bin/more
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/mount
Symbolic link
1
busybox-1.33.0/_install/bin/mount
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/mountpoint
Symbolic link
1
busybox-1.33.0/_install/bin/mountpoint
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/mpstat
Symbolic link
1
busybox-1.33.0/_install/bin/mpstat
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/mt
Symbolic link
1
busybox-1.33.0/_install/bin/mt
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/mv
Symbolic link
1
busybox-1.33.0/_install/bin/mv
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/netstat
Symbolic link
1
busybox-1.33.0/_install/bin/netstat
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/nice
Symbolic link
1
busybox-1.33.0/_install/bin/nice
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/nuke
Symbolic link
1
busybox-1.33.0/_install/bin/nuke
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/pidof
Symbolic link
1
busybox-1.33.0/_install/bin/pidof
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/ping
Symbolic link
1
busybox-1.33.0/_install/bin/ping
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/ping6
Symbolic link
1
busybox-1.33.0/_install/bin/ping6
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/pipe_progress
Symbolic link
1
busybox-1.33.0/_install/bin/pipe_progress
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/printenv
Symbolic link
1
busybox-1.33.0/_install/bin/printenv
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/ps
Symbolic link
1
busybox-1.33.0/_install/bin/ps
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/pwd
Symbolic link
1
busybox-1.33.0/_install/bin/pwd
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/reformime
Symbolic link
1
busybox-1.33.0/_install/bin/reformime
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/resume
Symbolic link
1
busybox-1.33.0/_install/bin/resume
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/rev
Symbolic link
1
busybox-1.33.0/_install/bin/rev
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/rm
Symbolic link
1
busybox-1.33.0/_install/bin/rm
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/rmdir
Symbolic link
1
busybox-1.33.0/_install/bin/rmdir
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/rpm
Symbolic link
1
busybox-1.33.0/_install/bin/rpm
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/run-parts
Symbolic link
1
busybox-1.33.0/_install/bin/run-parts
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/scriptreplay
Symbolic link
1
busybox-1.33.0/_install/bin/scriptreplay
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/sed
Symbolic link
1
busybox-1.33.0/_install/bin/sed
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/setarch
Symbolic link
1
busybox-1.33.0/_install/bin/setarch
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/setpriv
Symbolic link
1
busybox-1.33.0/_install/bin/setpriv
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/setserial
Symbolic link
1
busybox-1.33.0/_install/bin/setserial
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/sh
Symbolic link
1
busybox-1.33.0/_install/bin/sh
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
1
busybox-1.33.0/_install/bin/sleep
Symbolic link
1
busybox-1.33.0/_install/bin/sleep
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
busybox
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user