diff options
author | Hannu Nyman <hannu.nyman@iki.fi> | 2018-03-27 20:06:38 +0300 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2018-04-03 23:26:45 +0200 |
commit | d674422a814a4458af35e79587129a161b50a1ff (patch) | |
tree | 1613b1df5b3a61d93286607349b9b4b123d6faf2 /package/utils/busybox/config | |
parent | a74fd570a23f2226afcf63f92f22bcb9df37beee (diff) | |
download | upstream-d674422a814a4458af35e79587129a161b50a1ff.tar.gz upstream-d674422a814a4458af35e79587129a161b50a1ff.tar.bz2 upstream-d674422a814a4458af35e79587129a161b50a1ff.zip |
busybox: update to 1.28.2
Update busybox to 1.28.2, refresh patches and default config.
* modify 230-add_nslookup_lede.patch as opt_complementary was removed
Also move nslookup_longopts variable declaration to be inside
the same conditional as the function itself.
* modify 250-date-k-flag.patch to match upstream (opt_complementary)
* remove 600-cve-2017-16544.patch that is upstreamed
Notes about config changes:
* Some applet-specific LONG_OPTIONS config options were removed
* Config help text indentation changed, caused lots of
text formatting changes for convert_menuconfig.pl
* convert_defaults.pl moved lots of defaults around, summary of
actual changes below
New applets/features:
---------------------
ARCH
HEXEDIT
MINIPS
NETCAT
NUKE
RESUME
RUN_INIT
SETFATTR
New options:
------------
FEATURE_CATN
FEATURE_CROND_SPECIAL_TIMES
FEATURE_LIBBUSYBOX_STATIC
FEATURE_SETPRIV_CAPABILITIES
FEATURE_SETPRIV_CAPABILITY_NAMES
FEATURE_SETPRIV_DUMP
FEATURE_SH_READ_FRAC
FEATURE_SWAPONOFF_LABEL
FEATURE_VOLUMEID_MINIX
FEATURE_XARGS_SUPPORT_ARGS_FILE
FEATURE_XARGS_SUPPORT_PARALLEL
HUSH_GETOPTS
HUSH_READONLY
HUSH_TIMES
Removed:
--------
FEATURE_HAVE_RPC
MSH
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Diffstat (limited to 'package/utils/busybox/config')
-rw-r--r-- | package/utils/busybox/config/Config.in | 733 |
1 files changed, 364 insertions, 369 deletions
diff --git a/package/utils/busybox/config/Config.in b/package/utils/busybox/config/Config.in index c66aa08e73..68f140a9c7 100644 --- a/package/utils/busybox/config/Config.in +++ b/package/utils/busybox/config/Config.in @@ -11,26 +11,30 @@ config BUSYBOX_CONFIG_HAVE_DOT_CONFIG menu "Busybox Settings" config BUSYBOX_CONFIG_DESKTOP - bool "Enable options for full-blown desktop systems" + bool "Enable compatibility for full-blown desktop systems" default BUSYBOX_DEFAULT_DESKTOP help - Enable options and features which are not essential. - 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. + 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. - 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. + 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 BUSYBOX_CONFIG_EXTRA_COMPAT bool "Provide compatible behavior for rare corner cases (bigger code)" default BUSYBOX_DEFAULT_EXTRA_COMPAT 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. + 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 BUSYBOX_CONFIG_FEDORA_COMPAT bool "Building for Fedora distribution" @@ -49,279 +53,285 @@ config BUSYBOX_CONFIG_INCLUDE_SUSv2 bool "Enable obsolete features removed before SUSv3" default BUSYBOX_DEFAULT_INCLUDE_SUSv2 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.) + 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 BUSYBOX_CONFIG_USE_PORTABLE_CODE - bool "Avoid using GCC-specific code constructs" - default BUSYBOX_DEFAULT_USE_PORTABLE_CODE +config BUSYBOX_CONFIG_LONG_OPTS + bool "Support --long-options" + default BUSYBOX_DEFAULT_LONG_OPTS 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. + 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 BUSYBOX_CONFIG_SHOW_USAGE bool "Show applet usage messages" default BUSYBOX_DEFAULT_SHOW_USAGE help - Enabling this option, BusyBox 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. + 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 BUSYBOX_CONFIG_FEATURE_VERBOSE_USAGE bool "Show verbose applet usage messages" default BUSYBOX_DEFAULT_FEATURE_VERBOSE_USAGE depends on BUSYBOX_CONFIG_SHOW_USAGE help - All BusyBox applets will show verbose help messages when - busybox is invoked with --help. This will add a lot of text to the - busybox binary. In the default configuration, this will add about - 13k, but it can add much more depending on your configuration. + All applets will show verbose help messages when invoked with --help. + This will add a lot of text to the binary. config BUSYBOX_CONFIG_FEATURE_COMPRESS_USAGE bool "Store applet usage messages in compressed form" default BUSYBOX_DEFAULT_FEATURE_COMPRESS_USAGE depends on BUSYBOX_CONFIG_SHOW_USAGE help - Store usage messages in .bz compressed form, uncompress them - on-the-fly when <applet> --help is called. + 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. + 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 BUSYBOX_CONFIG_BUSYBOX - bool "Include busybox applet" - default BUSYBOX_DEFAULT_BUSYBOX - help - The busybox applet provides general help regarding busybox and - allows the included applets to be listed. It's also required - if applet links are to be installed at runtime. - - If you can live without these features disabling this will save - some space. - -config BUSYBOX_CONFIG_FEATURE_INSTALLER - bool "Support --install [-s] to install applet links at runtime" - default BUSYBOX_DEFAULT_FEATURE_INSTALLER - depends on BUSYBOX_CONFIG_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 BUSYBOX_CONFIG_INSTALL_NO_USR - bool "Don't use /usr" - default BUSYBOX_DEFAULT_INSTALL_NO_USR +config BUSYBOX_CONFIG_LFS + bool + default BUSYBOX_DEFAULT_LFS 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. + 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 BUSYBOX_CONFIG_PAM bool "Support PAM (Pluggable Authentication Modules)" default BUSYBOX_DEFAULT_PAM help - Use PAM in some busybox applets (currently login and httpd) instead - of direct access to password database. - -config BUSYBOX_CONFIG_LONG_OPTS - bool "Support --long-options" - default BUSYBOX_DEFAULT_LONG_OPTS - 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. + Use PAM in some applets (currently login and httpd) instead + of direct access to password database. config BUSYBOX_CONFIG_FEATURE_DEVPTS bool "Use the devpts filesystem for Unix98 PTYs" default BUSYBOX_DEFAULT_FEATURE_DEVPTS help - Enable if you want BusyBox 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 BUSYBOX_CONFIG_FEATURE_CLEAN_UP - bool "Clean up all memory before exiting (usually not needed)" - default BUSYBOX_DEFAULT_FEATURE_CLEAN_UP - 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. + 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 BUSYBOX_CONFIG_FEATURE_UTMP bool "Support utmp file" default BUSYBOX_DEFAULT_FEATURE_UTMP 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. + 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 BUSYBOX_CONFIG_FEATURE_WTMP bool "Support wtmp file" default BUSYBOX_DEFAULT_FEATURE_WTMP depends on BUSYBOX_CONFIG_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. + 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 BUSYBOX_CONFIG_FEATURE_PIDFILE bool "Support writing pidfiles" default BUSYBOX_DEFAULT_FEATURE_PIDFILE 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. + 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 BUSYBOX_CONFIG_PID_FILE_PATH - string "Path to directory for pidfile" + string "Directory for pidfiles" default BUSYBOX_DEFAULT_PID_FILE_PATH depends on BUSYBOX_CONFIG_FEATURE_PIDFILE 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. + 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. -config BUSYBOX_CONFIG_FEATURE_SUID - bool "Support SUID/SGID handling" - default BUSYBOX_DEFAULT_FEATURE_SUID +config BUSYBOX_CONFIG_BUSYBOX + bool "Include busybox applet" + default BUSYBOX_DEFAULT_BUSYBOX 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). - - Busybox will automatically drop privileges for applets - that don't need root access. - - If you are really paranoid and don't want to do this, 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. - - The applets which require root rights (need suid bit or - to be run by root) and will refuse to execute otherwise: - crontab, login, passwd, su, vlock, wall. + 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: - 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. + $ busybox + busybox: applet not found - Note that if you DONT 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"). + Running "busybox APPLET [ARGS...]" will still work, of course. -config BUSYBOX_CONFIG_FEATURE_SUID_CONFIG - bool "Runtime SUID/SGID configuration via /etc/busybox.conf" - default BUSYBOX_DEFAULT_FEATURE_SUID_CONFIG - depends on BUSYBOX_CONFIG_FEATURE_SUID +config BUSYBOX_CONFIG_FEATURE_INSTALLER + bool "Support --install [-s] to install applet links at runtime" + default BUSYBOX_DEFAULT_FEATURE_INSTALLER + depends on BUSYBOX_CONFIG_BUSYBOX 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: + 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. - APPLET = [Ssx-][Ssx-][x-] [USER.GROUP] +config BUSYBOX_CONFIG_INSTALL_NO_USR + bool "Don't use /usr" + default BUSYBOX_DEFAULT_INSTALL_NO_USR + 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. - s: USER or GROUP is allowed to execute APPLET. - APPLET will run under USER or GROUP - (reagardless 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. +config BUSYBOX_CONFIG_FEATURE_SUID + bool "Drop SUID state for most applets" + default BUSYBOX_DEFAULT_FEATURE_SUID + 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). - An example might help: + With this option enabled, busybox drops privileges for applets + that don't need root access, before entering their main() function. - [SUID] - su = ssx root.0 # applet su can be run by anyone and runs with - # euid=0/egid=0 - su = ssx # exactly the same + 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. - 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) + 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. - cp = --- # disable applet cp for everyone + 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. - 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) + 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"). - Robert 'sandman' Griebl has more information here: - <url: http://www.softforge.de/bb/suid.html >. +config BUSYBOX_CONFIG_FEATURE_SUID_CONFIG + bool "Enable SUID configuration via /etc/busybox.conf" + default BUSYBOX_DEFAULT_FEATURE_SUID_CONFIG + depends on BUSYBOX_CONFIG_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 BUSYBOX_CONFIG_FEATURE_SUID_CONFIG_QUIET bool "Suppress warning message if /etc/busybox.conf is not readable" default BUSYBOX_DEFAULT_FEATURE_SUID_CONFIG_QUIET depends on BUSYBOX_CONFIG_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. + /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 BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS + bool "exec prefers applets" + default BUSYBOX_DEFAULT_FEATURE_PREFER_APPLETS + 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_CONFIG_BUSYBOX_EXEC_PATH + string "Path to busybox executable" + default BUSYBOX_DEFAULT_BUSYBOX_EXEC_PATH + 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 BUSYBOX_CONFIG_SELINUX bool "Support NSA Security Enhanced Linux" default BUSYBOX_DEFAULT_SELINUX select BUSYBOX_CONFIG_PLATFORM_LINUX help - Enable support for SELinux in applets ls, ps, and id. Also provide - the option of compiling in SELinux applets. + 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: - 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'. + Most people will leave this set to 'N'. -config BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS - bool "exec prefers applets" - default BUSYBOX_DEFAULT_FEATURE_PREFER_APPLETS +config BUSYBOX_CONFIG_FEATURE_CLEAN_UP + bool "Clean up all memory before exiting (usually not needed)" + default BUSYBOX_DEFAULT_FEATURE_CLEAN_UP 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). + 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. -config BUSYBOX_CONFIG_BUSYBOX_EXEC_PATH - string "Path to BusyBox executable" - default BUSYBOX_DEFAULT_BUSYBOX_EXEC_PATH - help - When Busybox applets need to run other busybox 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. + Don't enable this unless you have a really good reason to clean + things up manually. # These are auto-selected by other options @@ -329,64 +339,53 @@ config BUSYBOX_CONFIG_FEATURE_SYSLOG bool #No description makes it a hidden option default BUSYBOX_DEFAULT_FEATURE_SYSLOG #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. - -config BUSYBOX_CONFIG_FEATURE_HAVE_RPC - bool #No description makes it a hidden option - default BUSYBOX_DEFAULT_FEATURE_HAVE_RPC - #help - # This is automatically selected if any of enabled applets need it. - # You do not need to select it manually. + #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. config BUSYBOX_CONFIG_PLATFORM_LINUX bool #No description makes it a hidden option default BUSYBOX_DEFAULT_PLATFORM_LINUX #help - # For the most part, busybox requires only POSIX compatibility - # from the target system, but some applets and features use - # Linux-specific interfaces. + #For the most part, busybox requires only POSIX compatibility + #from the target system, but some applets and features use + #Linux-specific interfaces. # - # This is automatically selected if any applet or feature requires - # Linux-specific interfaces. You do not need to select it manually. + #This is automatically selected if any applet or feature requires + #Linux-specific interfaces. You do not need to select it manually. comment 'Build Options' config BUSYBOX_CONFIG_STATIC - bool "Build BusyBox as a static binary (no shared libs)" + bool "Build static binary (no shared libs)" default BUSYBOX_DEFAULT_STATIC help - If you want to build a static BusyBox binary, which does not - use or require any shared libraries, then enable this option. - This can cause BusyBox to be considerably larger, so you should - leave this option false unless you have a good reason (i.e. - your target platform does not support shared libraries, or - you are building an initrd which doesn't need anything but - BusyBox, etc). - - Most people will leave this set to 'N'. + 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 BUSYBOX_CONFIG_PIE - bool "Build BusyBox as a position independent executable" + bool "Build position independent executable" default BUSYBOX_DEFAULT_PIE depends on !BUSYBOX_CONFIG_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. + 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'. + Most people will leave this set to 'N'. config BUSYBOX_CONFIG_NOMMU bool "Force NOMMU build" default BUSYBOX_DEFAULT_NOMMU 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. + 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'. + 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 @@ -395,135 +394,128 @@ config BUSYBOX_CONFIG_BUILD_LIBBUSYBOX default BUSYBOX_DEFAULT_BUILD_LIBBUSYBOX depends on !BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS && !BUSYBOX_CONFIG_PIE && !BUSYBOX_CONFIG_STATIC help - Build a shared library libbusybox.so.N.N.N which contains all - busybox code. + Build a shared library libbusybox.so.N.N.N which contains all + busybox code. - This feature allows every applet to be built as a tiny - separate executable. Enabling it for "one big busybox binary" - approach serves no purpose and increases code size. - You should almost certainly say "no" to this. + 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 -### config FEATURE_FULL_LIBBUSYBOX -### bool "Feature-complete libbusybox" -### default n if !FEATURE_SHARED_BUSYBOX -### depends on BUILD_LIBBUSYBOX -### help -### Build a libbusybox with the complete feature-set, disregarding -### the actually selected config. -### -### Normally, libbusybox will only contain the features which are -### used by busybox itself. If you plan to write a separate -### standalone application which uses libbusybox say 'Y'. -### -### Note: libbusybox is GPL, not LGPL, and exports no stable API that -### might act as a copyright barrier. We can and will modify the -### exported function set between releases (even minor version number -### changes), and happily break out-of-tree features. -### -### Say 'N' if in doubt. + This is useful on NOMMU systems which are not capable + of sharing executables, but are capable of sharing code + in dynamic libraries. + +config BUSYBOX_CONFIG_FEATURE_LIBBUSYBOX_STATIC + bool "Pull in all external references into libbusybox" + default BUSYBOX_DEFAULT_FEATURE_LIBBUSYBOX_STATIC + depends on BUSYBOX_CONFIG_BUILD_LIBBUSYBOX + help + Make libbusybox library independent, not using or requiring + any other shared libraries. config BUSYBOX_CONFIG_FEATURE_INDIVIDUAL bool "Produce a binary for each applet, linked against libbusybox" default BUSYBOX_DEFAULT_FEATURE_INDIVIDUAL depends on BUSYBOX_CONFIG_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 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. + 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. + Each applet will be a tiny program, dynamically linked + against libbusybox.so.N.N.N. - You need to have a working dynamic linker. + You need to have a working dynamic linker. config BUSYBOX_CONFIG_FEATURE_SHARED_BUSYBOX bool "Produce additional busybox binary linked against libbusybox" default BUSYBOX_DEFAULT_FEATURE_SHARED_BUSYBOX depends on BUSYBOX_CONFIG_BUILD_LIBBUSYBOX help - Build busybox, dynamically linked against libbusybox.so.N.N.N. + Build busybox, dynamically linked against libbusybox.so.N.N.N. - You need to have a working dynamic linker. + 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. +### 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. +### 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. +### 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 BUSYBOX_CONFIG_LFS - bool - default BUSYBOX_DEFAULT_LFS - help - If you want to build BusyBox with large file support, then 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, and many others. If you want to access files larger - than 2 Gigabytes, enable this option. Otherwise, leave it set to 'N'. +### Say 'N' unless you know what you are doing. config BUSYBOX_CONFIG_CROSS_COMPILER_PREFIX - string "Cross Compiler prefix" + string "Cross compiler prefix" default BUSYBOX_DEFAULT_CROSS_COMPILER_PREFIX 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-". + 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. + Note that CROSS_COMPILE environment variable or + "make CROSS_COMPILE=xxx ..." will override this selection. - Native builds leave this empty. + Native builds leave this empty. config BUSYBOX_CONFIG_SYSROOT string "Path to sysroot" default BUSYBOX_DEFAULT_SYSROOT 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. + 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 + 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 + CONFIG_SYSROOT=/opt/android-ndk/platforms/android-9/arch-arm - Native builds leave this empty. + Native builds leave this empty. config BUSYBOX_CONFIG_EXTRA_CFLAGS string "Additional CFLAGS" default BUSYBOX_DEFAULT_EXTRA_CFLAGS help - Additional CFLAGS to pass to the compiler verbatim. + Additional CFLAGS to pass to the compiler verbatim. config BUSYBOX_CONFIG_EXTRA_LDFLAGS string "Additional LDFLAGS" default BUSYBOX_DEFAULT_EXTRA_LDFLAGS help - Additional LDFLAGS to pass to the linker verbatim. + Additional LDFLAGS to pass to the linker verbatim. config BUSYBOX_CONFIG_EXTRA_LDLIBS string "Additional LDLIBS" default BUSYBOX_DEFAULT_EXTRA_LDLIBS help - Additional LDLIBS to pass to the linker with -l. + Additional LDLIBS to pass to the linker with -l. + +config BUSYBOX_CONFIG_USE_PORTABLE_CODE + bool "Avoid using GCC-specific code constructs" + default BUSYBOX_DEFAULT_USE_PORTABLE_CODE + 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. comment 'Installation Options ("make install" behavior)' @@ -531,32 +523,32 @@ choice prompt "What kind of applet links to install" default BUSYBOX_CONFIG_INSTALL_APPLET_SYMLINKS help - Choose what kind of links to applets are created by "make install". + Choose what kind of links to applets are created by "make install". config BUSYBOX_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. + 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 BUSYBOX_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. + Install applets as hard-links to the busybox binary. This might + count on a filesystem with few inodes. config BUSYBOX_CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS bool "as script wrappers" help - Install applets as script wrappers that call the busybox binary. + Install applets as script wrappers that call the busybox binary. config BUSYBOX_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. + 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 @@ -565,113 +557,116 @@ choice default BUSYBOX_CONFIG_INSTALL_SH_APPLET_SYMLINK depends on BUSYBOX_CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS help - Choose how you install /bin/sh applet link. + Choose how you install /bin/sh applet link. config BUSYBOX_CONFIG_INSTALL_SH_APPLET_SYMLINK bool "as soft-link" help - Install /bin/sh applet as soft-link to the busybox binary. + Install /bin/sh applet as soft-link to the busybox binary. config BUSYBOX_CONFIG_INSTALL_SH_APPLET_HARDLINK bool "as hard-link" help - Install /bin/sh applet as hard-link to the busybox binary. + Install /bin/sh applet as hard-link to the busybox binary. config BUSYBOX_CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER bool "as script wrapper" help - Install /bin/sh applet as script wrapper that calls - the busybox binary. + Install /bin/sh applet as script wrapper that calls + the busybox binary. endchoice config BUSYBOX_CONFIG_PREFIX - string "BusyBox installation prefix" + string "Destination path for 'make install'" default BUSYBOX_DEFAULT_PREFIX help - Define your directory to install BusyBox files/subdirs in. + Where "make install" should install busybox binary and links. comment 'Debugging Options' config BUSYBOX_CONFIG_DEBUG - bool "Build BusyBox with extra Debugging symbols" + bool "Build with debug information" default BUSYBOX_DEFAULT_DEBUG help - Say Y here if you wish to examine BusyBox internals while applets are - running. This increases the size of the binary considerably, and - should only be used when doing development. If you are doing - development and want to debug BusyBox, answer Y. + 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. + Most people should answer N. config BUSYBOX_CONFIG_DEBUG_PESSIMIZE bool "Disable compiler optimizations" default BUSYBOX_DEFAULT_DEBUG_PESSIMIZE depends on BUSYBOX_CONFIG_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. + 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 BUSYBOX_CONFIG_DEBUG_SANITIZE bool "Enable runtime sanitizers (ASAN/LSAN/USAN/etc...)" default BUSYBOX_DEFAULT_DEBUG_SANITIZE 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. + 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. + This adds -fsanitize=foo options to gcc command line. - If you aren't developing/testing busybox, say N here. + If you aren't developing/testing busybox, say N here. config BUSYBOX_CONFIG_UNIT_TEST bool "Build unit tests" default BUSYBOX_DEFAULT_UNIT_TEST help - Say Y here if you want to build unit tests (both the framework and - test cases) as a Busybox applet. This results in bigger code, so you - probably don't want this option in production builds. + 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 BUSYBOX_CONFIG_WERROR bool "Abort compilation on any warning" default BUSYBOX_DEFAULT_WERROR help - This adds -Werror to gcc command line. + This adds -Werror to gcc command line. - Most people should answer N. + Most people should answer N. choice prompt "Additional debugging library" default BUSYBOX_CONFIG_NO_DEBUG_LIB help - Using an additional debugging library will make BusyBox become - considerable 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 considerable larger - and run slower, so you should leave this option disabled unless - you are hunting a hard to find memory problem. + 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 BUSYBOX_CONFIG_NO_DEBUG_LIB |