config BUSYBOX_DEFAULT_FEATURE_COMPRESS_USAGE
bool
default y
+config BUSYBOX_DEFAULT_BUSYBOX
+ bool
+ default n
config BUSYBOX_DEFAULT_FEATURE_INSTALLER
bool
default n
config BUSYBOX_DEFAULT_DEBUG_PESSIMIZE
bool
default n
+config BUSYBOX_DEFAULT_DEBUG_SANITIZE
+ bool
+ default n
config BUSYBOX_DEFAULT_UNIT_TEST
bool
default n
config BUSYBOX_DEFAULT_PREFIX
string
default "./_install"
-config BUSYBOX_DEFAULT_FEATURE_SYSTEMD
+config BUSYBOX_DEFAULT_FEATURE_USE_BSS_TAIL
bool
default n
config BUSYBOX_DEFAULT_FEATURE_RTMINMAX
config BUSYBOX_DEFAULT_GUNZIP
bool
default y
+config BUSYBOX_DEFAULT_FEATURE_GUNZIP_LONG_OPTIONS
+ bool
+ default n
config BUSYBOX_DEFAULT_BUNZIP2
bool
default y
config BUSYBOX_DEFAULT_SHUF
bool
default n
+config BUSYBOX_DEFAULT_STAT
+ bool
+ default n
+config BUSYBOX_DEFAULT_FEATURE_STAT_FORMAT
+ bool
+ default n
+config BUSYBOX_DEFAULT_FEATURE_STAT_FILESYSTEM
+ bool
+ default n
config BUSYBOX_DEFAULT_SYNC
bool
default y
config BUSYBOX_DEFAULT_FEATURE_SPLIT_FANCY
bool
default n
-config BUSYBOX_DEFAULT_STAT
- bool
- default n
-config BUSYBOX_DEFAULT_FEATURE_STAT_FORMAT
- bool
- default n
config BUSYBOX_DEFAULT_STTY
bool
default n
config BUSYBOX_DEFAULT_INIT
bool
default n
+config BUSYBOX_DEFAULT_LINUXRC
+ bool
+ default n
config BUSYBOX_DEFAULT_FEATURE_USE_INITTAB
bool
default n
config BUSYBOX_DEFAULT_FEATURE_INIT_COREDUMPS
bool
default n
-config BUSYBOX_DEFAULT_FEATURE_INITRD
- bool
- default n
config BUSYBOX_DEFAULT_INIT_TERMINAL_TYPE
string
default ""
-config BUSYBOX_DEFAULT_MESG
+config BUSYBOX_DEFAULT_FEATURE_INIT_MODIFY_CMDLINE
bool
default n
-config BUSYBOX_DEFAULT_FEATURE_MESG_ENABLE_ONLY_GROUP
- bool
- default n
-config BUSYBOX_DEFAULT_ADD_SHELL
+config BUSYBOX_DEFAULT_MESG
bool
default n
-config BUSYBOX_DEFAULT_REMOVE_SHELL
+config BUSYBOX_DEFAULT_FEATURE_MESG_ENABLE_ONLY_GROUP
bool
default n
config BUSYBOX_DEFAULT_FEATURE_SHADOWPASSWDS
config BUSYBOX_DEFAULT_USE_BB_CRYPT_SHA
bool
default n
+config BUSYBOX_DEFAULT_ADD_SHELL
+ bool
+ default n
+config BUSYBOX_DEFAULT_REMOVE_SHELL
+ bool
+ default n
+config BUSYBOX_DEFAULT_ADDGROUP
+ bool
+ default n
+config BUSYBOX_DEFAULT_FEATURE_ADDGROUP_LONG_OPTIONS
+ bool
+ default n
+config BUSYBOX_DEFAULT_FEATURE_ADDUSER_TO_GROUP
+ bool
+ default n
config BUSYBOX_DEFAULT_ADDUSER
bool
default n
config BUSYBOX_DEFAULT_LAST_SYSTEM_ID
int
default 0
-config BUSYBOX_DEFAULT_ADDGROUP
+config BUSYBOX_DEFAULT_CHPASSWD
bool
default n
-config BUSYBOX_DEFAULT_FEATURE_ADDGROUP_LONG_OPTIONS
+config BUSYBOX_DEFAULT_FEATURE_DEFAULT_PASSWD_ALGO
+ string
+ default "md5"
+config BUSYBOX_DEFAULT_CRYPTPW
bool
default n
-config BUSYBOX_DEFAULT_FEATURE_ADDUSER_TO_GROUP
+config BUSYBOX_DEFAULT_MKPASSWD
bool
default n
config BUSYBOX_DEFAULT_DELUSER
config BUSYBOX_DEFAULT_FEATURE_PASSWD_WEAK_CHECK
bool
default y
-config BUSYBOX_DEFAULT_CRYPTPW
- bool
- default n
-config BUSYBOX_DEFAULT_CHPASSWD
- bool
- default n
-config BUSYBOX_DEFAULT_FEATURE_DEFAULT_PASSWD_ALGO
- string
- default "md5"
config BUSYBOX_DEFAULT_SU
bool
default n
config BUSYBOX_DEFAULT_DEFAULT_DEPMOD_FILE
string
default ""
+config BUSYBOX_DEFAULT_BLKDISCARD
+ bool
+ default n
config BUSYBOX_DEFAULT_BLOCKDEV
bool
default n
config BUSYBOX_DEFAULT_FEATURE_MOUNT_OTHERTAB
bool
default n
+config BUSYBOX_DEFAULT_NSENTER
+ bool
+ default n
+config BUSYBOX_DEFAULT_FEATURE_NSENTER_LONG_OPTS
+ bool
+ default n
config BUSYBOX_DEFAULT_REV
bool
default n
+config BUSYBOX_DEFAULT_SETARCH
+ bool
+ default n
config BUSYBOX_DEFAULT_UEVENT
bool
default n
+config BUSYBOX_DEFAULT_UNSHARE
+ bool
+ default n
config BUSYBOX_DEFAULT_ACPID
bool
default n
config BUSYBOX_DEFAULT_SCRIPTREPLAY
bool
default n
-config BUSYBOX_DEFAULT_SETARCH
- bool
- default n
config BUSYBOX_DEFAULT_SWAPONOFF
bool
default n
config BUSYBOX_DEFAULT_VOLUMEID
bool
default n
+config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_BCACHE
+ bool
+ default n
config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_BTRFS
bool
default n
config BUSYBOX_DEFAULT_UBIUPDATEVOL
bool
default n
+config BUSYBOX_DEFAULT_UBIRENAME
+ bool
+ default n
config BUSYBOX_DEFAULT_WALL
bool
default n
config BUSYBOX_DEFAULT_LAST
bool
default n
-config BUSYBOX_DEFAULT_FEATURE_LAST_SMALL
- bool
- default n
config BUSYBOX_DEFAULT_FEATURE_LAST_FANCY
bool
default n
default n
config BUSYBOX_DEFAULT_FEATURE_WGET_STATUSBAR
bool
- default y
+ default n
config BUSYBOX_DEFAULT_FEATURE_WGET_AUTHENTICATION
bool
- default y
+ default n
config BUSYBOX_DEFAULT_FEATURE_WGET_LONG_OPTIONS
bool
- default y
+ default n
config BUSYBOX_DEFAULT_FEATURE_WGET_TIMEOUT
bool
default n
config BUSYBOX_DEFAULT_FEATURE_IP_RULE
bool
default y
+config BUSYBOX_DEFAULT_FEATURE_IP_NEIGH
+ bool
+ default n
config BUSYBOX_DEFAULT_FEATURE_IP_SHORT_FORMS
bool
default n
config BUSYBOX_DEFAULT_IPRULE
bool
default n
+config BUSYBOX_DEFAULT_IPNEIGH
+ bool
+ default n
config BUSYBOX_DEFAULT_IPCALC
bool
default n
config BUSYBOX_DEFAULT_WATCH
bool
default n
-config BUSYBOX_DEFAULT_RUNSV
+config BUSYBOX_DEFAULT_CHPST
bool
default n
-config BUSYBOX_DEFAULT_RUNSVDIR
+config BUSYBOX_DEFAULT_SETUIDGID
bool
default n
-config BUSYBOX_DEFAULT_FEATURE_RUNSVDIR_LOG
+config BUSYBOX_DEFAULT_ENVUIDGID
bool
default n
-config BUSYBOX_DEFAULT_SV
+config BUSYBOX_DEFAULT_ENVDIR
bool
default n
-config BUSYBOX_DEFAULT_SV_DEFAULT_SERVICE_DIR
- string
- default ""
-config BUSYBOX_DEFAULT_SVLOGD
+config BUSYBOX_DEFAULT_SOFTLIMIT
bool
default n
-config BUSYBOX_DEFAULT_CHPST
+config BUSYBOX_DEFAULT_RUNSV
bool
default n
-config BUSYBOX_DEFAULT_SETUIDGID
+config BUSYBOX_DEFAULT_RUNSVDIR
bool
default n
-config BUSYBOX_DEFAULT_ENVUIDGID
+config BUSYBOX_DEFAULT_FEATURE_RUNSVDIR_LOG
bool
default n
-config BUSYBOX_DEFAULT_ENVDIR
+config BUSYBOX_DEFAULT_SV
bool
default n
-config BUSYBOX_DEFAULT_SOFTLIMIT
+config BUSYBOX_DEFAULT_SV_DEFAULT_SERVICE_DIR
+ string
+ default ""
+config BUSYBOX_DEFAULT_SVLOGD
bool
default n
config BUSYBOX_DEFAULT_CHCON
config BUSYBOX_DEFAULT_FEATURE_SH_HISTFILESIZE
bool
default n
+config BUSYBOX_DEFAULT_KLOGD
+ bool
+ default n
+config BUSYBOX_DEFAULT_FEATURE_KLOGD_KLOGCTL
+ bool
+ default n
+config BUSYBOX_DEFAULT_LOGGER
+ bool
+ default y
+config BUSYBOX_DEFAULT_LOGREAD
+ bool
+ default n
+config BUSYBOX_DEFAULT_FEATURE_LOGREAD_REDUCED_LOCKING
+ bool
+ default n
config BUSYBOX_DEFAULT_SYSLOGD
bool
default n
config BUSYBOX_DEFAULT_FEATURE_IPC_SYSLOG_BUFFER_SIZE
int
default 0
-config BUSYBOX_DEFAULT_LOGREAD
- bool
- default n
-config BUSYBOX_DEFAULT_FEATURE_LOGREAD_REDUCED_LOCKING
- bool
- default n
config BUSYBOX_DEFAULT_FEATURE_KMSG_SYSLOG
bool
default n
-config BUSYBOX_DEFAULT_KLOGD
- bool
- default n
-config BUSYBOX_DEFAULT_FEATURE_KLOGD_KLOGCTL
- bool
- default n
-config BUSYBOX_DEFAULT_LOGGER
- bool
- default y
include $(TOPDIR)/rules.mk
PKG_NAME:=busybox
-PKG_VERSION:=1.24.2
-PKG_RELEASE:=4
+PKG_VERSION:=1.25.0
+PKG_RELEASE:=1
PKG_FLAGS:=essential
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
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
in a much bigger executable that more closely matches the source
code.
+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.
+
+ If you aren't developing/testing busybox, say N here.
+
config BUSYBOX_CONFIG_UNIT_TEST
bool "Build unit tests"
default BUSYBOX_DEFAULT_UNIT_TEST
config BUSYBOX_CONFIG_FEATURE_SEAMLESS_Z
bool "tar, rpm, modprobe etc understand .Z data"
- default BUSYBOX_DEFAULT_FEATURE_SEAMLESS_Z
+ default BUSYBOX_DEFAULT_FEATURE_SEAMLESS_Z # it is ancient
help
Make tar, rpm, modprobe etc understand .Z data.
default BUSYBOX_DEFAULT_AR # needs to be improved to be able to replace binutils ar
help
ar is an archival utility program used to create, modify, and
- extract contents from archives. An archive is a single file holding
- a collection of other files in a structure that makes it possible to
- retrieve the original individual files (called archive members).
- The original files' contents, mode (permissions), timestamp, owner,
- and group are preserved in the archive, and can be restored on
- extraction.
-
- The stored filename is limited to 15 characters. (for more information
- see long filename support).
- ar has 60 bytes of overheads for every stored file.
-
- This implementation of ar can extract archives, it cannot create or
- modify them.
+ extract contents from archives. In practice, it is used exclusively
+ for object module archives used by compilers.
+
On an x86 system, the ar applet adds about 1K.
Unless you have a specific application which requires ar, you should
- probably say N here.
+ probably say N here: most compilers come with their own ar utility.
config BUSYBOX_CONFIG_FEATURE_AR_LONG_FILENAMES
bool "Support for long filenames (not needed for debs)"
This enables archive creation (-c and -r) with busybox ar.
config BUSYBOX_CONFIG_UNCOMPRESS
bool "uncompress"
- default BUSYBOX_DEFAULT_UNCOMPRESS
+ default BUSYBOX_DEFAULT_UNCOMPRESS # ancient
help
uncompress is used to decompress archives created by compress.
Not much used anymore, replaced by gzip/gunzip.
gunzip is used to decompress archives created by gzip.
You can use the `-t' option to test the integrity of
an archive, without decompressing it.
+
+config BUSYBOX_CONFIG_FEATURE_GUNZIP_LONG_OPTIONS
+ bool "Enable long options"
+ default BUSYBOX_DEFAULT_FEATURE_GUNZIP_LONG_OPTIONS
+ depends on BUSYBOX_CONFIG_GUNZIP && BUSYBOX_CONFIG_LONG_OPTS
+ help
+ Enable use of long options.
config BUSYBOX_CONFIG_BUNZIP2
bool "bunzip2"
default BUSYBOX_DEFAULT_BUNZIP2
default BUSYBOX_DEFAULT_SHUF
help
Generate random permutations
+config BUSYBOX_CONFIG_STAT
+ bool "stat"
+ default BUSYBOX_DEFAULT_STAT
+ help
+ display file or filesystem status.
+
+config BUSYBOX_CONFIG_FEATURE_STAT_FORMAT
+ bool "Enable custom formats (-c)"
+ default BUSYBOX_DEFAULT_FEATURE_STAT_FORMAT
+ depends on BUSYBOX_CONFIG_STAT
+ help
+ Without this, stat will not support the '-c format' option where
+ users can pass a custom format string for output. This adds about
+ 7k to a nonstatic build on amd64.
+
+config BUSYBOX_CONFIG_FEATURE_STAT_FILESYSTEM
+ bool "Enable display of filesystem status (-f)"
+ default BUSYBOX_DEFAULT_FEATURE_STAT_FILESYSTEM
+ depends on BUSYBOX_CONFIG_STAT
+ select BUSYBOX_CONFIG_PLATFORM_LINUX # statfs()
+ help
+ Without this, stat will not support the '-f' option to display
+ information about filesystem status.
config BUSYBOX_CONFIG_SYNC
bool "sync"
default BUSYBOX_DEFAULT_SYNC
Supports additional suffixes 'b' for 512 bytes,
'g' for 1GiB for the -b option.
-config BUSYBOX_CONFIG_STAT
- bool "stat"
- default BUSYBOX_DEFAULT_STAT
- select BUSYBOX_CONFIG_PLATFORM_LINUX # statfs()
- help
- display file or filesystem status.
-
-config BUSYBOX_CONFIG_FEATURE_STAT_FORMAT
- bool "Enable custom formats (-c)"
- default BUSYBOX_DEFAULT_FEATURE_STAT_FORMAT
- depends on BUSYBOX_CONFIG_STAT
- help
- Without this, stat will not support the '-c format' option where
- users can pass a custom format string for output. This adds about
- 7k to a nonstatic build on amd64.
-
config BUSYBOX_CONFIG_STTY
bool "stty"
default BUSYBOX_DEFAULT_STTY
menu "Debian Utilities"
-
config BUSYBOX_CONFIG_MKTEMP
bool "mktemp"
default BUSYBOX_DEFAULT_MKTEMP
help
mktemp is used to create unique temporary files
-
config BUSYBOX_CONFIG_PIPE_PROGRESS
bool "pipe_progress"
default BUSYBOX_DEFAULT_PIPE_PROGRESS
help
Display a dot to indicate pipe activity.
-
config BUSYBOX_CONFIG_RUN_PARTS
bool "run-parts"
default BUSYBOX_DEFAULT_RUN_PARTS
Support additional options:
-l --list print the names of the all matching files (not
limited to executables), but don't actually run them.
-
config BUSYBOX_CONFIG_START_STOP_DAEMON
bool "start-stop-daemon"
default BUSYBOX_DEFAULT_START_STOP_DAEMON
depends on BUSYBOX_CONFIG_START_STOP_DAEMON && BUSYBOX_CONFIG_LONG_OPTS
help
Support long options for the start-stop-daemon applet.
-
config BUSYBOX_CONFIG_WHICH
bool "which"
default BUSYBOX_DEFAULT_WHICH
menu "Linux Ext2 FS Progs"
-
config BUSYBOX_CONFIG_CHATTR
bool "chattr"
default BUSYBOX_DEFAULT_CHATTR
help
chattr changes the file attributes on a second extended file system.
-
-### config E2FSCK
-### bool "e2fsck"
-### default y
-### help
-### e2fsck is used to check Linux second extended file systems (ext2fs).
-### e2fsck also supports ext2 filesystems countaining a journal (ext3).
-### The normal compat symlinks 'fsck.ext2' and 'fsck.ext3' are also
-### provided.
-
config BUSYBOX_CONFIG_FSCK
bool "fsck"
default BUSYBOX_DEFAULT_FSCK
fsck is used to check and optionally repair one or more filesystems.
In actuality, fsck is simply a front-end for the various file system
checkers (fsck.fstype) available under Linux.
-
config BUSYBOX_CONFIG_LSATTR
bool "lsattr"
default BUSYBOX_DEFAULT_LSATTR
select BUSYBOX_CONFIG_PLATFORM_LINUX
help
lsattr lists the file attributes on a second extended file system.
+config BUSYBOX_CONFIG_TUNE2FS
+ bool "tune2fs"
+ default BUSYBOX_DEFAULT_TUNE2FS # off: it is too limited compared to upstream version
+ help
+ tune2fs allows the system administrator to adjust various tunable
+ filesystem parameters on Linux ext2/ext3 filesystems.
+
+### config E2FSCK
+### bool "e2fsck"
+### default y
+### help
+### e2fsck is used to check Linux second extended file systems (ext2fs).
+### e2fsck also supports ext2 filesystems countaining a journal (ext3).
+### The normal compat symlinks 'fsck.ext2' and 'fsck.ext3' are also
+### provided.
### config MKE2FS
### bool "mke2fs"
### mke2fs is used to create an ext2/ext3 filesystem. The normal compat
### symlinks 'mkfs.ext2' and 'mkfs.ext3' are also provided.
-config BUSYBOX_CONFIG_TUNE2FS
- bool "tune2fs"
- default BUSYBOX_DEFAULT_TUNE2FS # off: it is too limited compared to upstream version
- help
- tune2fs allows the system administrator to adjust various tunable
- filesystem parameters on Linux ext2/ext3 filesystems.
-
### config E2LABEL
### bool "e2label"
### default y
help
init is the first program run when the system boots.
+config BUSYBOX_CONFIG_LINUXRC
+ bool "Support running init from within an initrd (not initramfs)"
+ default BUSYBOX_DEFAULT_LINUXRC
+ select BUSYBOX_CONFIG_FEATURE_SYSLOG
+ help
+ Legacy support for running init under the old-style initrd. Allows
+ the name linuxrc to act as init, and it doesn't assume init is PID 1.
+
+ This does not apply to initramfs, which runs /init as PID 1 and
+ requires no special support.
+
config BUSYBOX_CONFIG_FEATURE_USE_INITTAB
bool "Support reading an inittab file"
default BUSYBOX_DEFAULT_FEATURE_USE_INITTAB
- depends on BUSYBOX_CONFIG_INIT
+ depends on BUSYBOX_CONFIG_INIT || BUSYBOX_CONFIG_LINUXRC
help
Allow init to read an inittab file when the system boot.
config BUSYBOX_CONFIG_FEATURE_INIT_SCTTY
bool "Run commands with leading dash with controlling tty"
default BUSYBOX_DEFAULT_FEATURE_INIT_SCTTY
- depends on BUSYBOX_CONFIG_INIT
+ depends on BUSYBOX_CONFIG_INIT || BUSYBOX_CONFIG_LINUXRC
help
If this option is enabled, init will try to give a controlling
tty to any command which has leading hyphen (often it's "-/bin/sh").
config BUSYBOX_CONFIG_FEATURE_INIT_SYSLOG
bool "Enable init to write to syslog"
default BUSYBOX_DEFAULT_FEATURE_INIT_SYSLOG
- depends on BUSYBOX_CONFIG_INIT
+ depends on BUSYBOX_CONFIG_INIT || BUSYBOX_CONFIG_LINUXRC
config BUSYBOX_CONFIG_FEATURE_EXTRA_QUIET
bool "Be _extra_ quiet on boot"
default BUSYBOX_DEFAULT_FEATURE_EXTRA_QUIET
- depends on BUSYBOX_CONFIG_INIT
+ depends on BUSYBOX_CONFIG_INIT || BUSYBOX_CONFIG_LINUXRC
help
Prevent init from logging some messages to the console during boot.
config BUSYBOX_CONFIG_FEATURE_INIT_COREDUMPS
bool "Support dumping core for child processes (debugging only)"
default BUSYBOX_DEFAULT_FEATURE_INIT_COREDUMPS
- depends on BUSYBOX_CONFIG_INIT
+ depends on BUSYBOX_CONFIG_INIT || BUSYBOX_CONFIG_LINUXRC
help
If this option is enabled and the file /.init_enable_core
exists, then init will call setrlimit() to allow unlimited
core file sizes. If this option is disabled, processes
will not generate any core files.
-config BUSYBOX_CONFIG_FEATURE_INITRD
- bool "Support running init from within an initrd (not initramfs)"
- default BUSYBOX_DEFAULT_FEATURE_INITRD
- depends on BUSYBOX_CONFIG_INIT
- help
- Legacy support for running init under the old-style initrd. Allows
- the name linuxrc to act as init, and it doesn't assume init is PID 1.
-
- This does not apply to initramfs, which runs /init as PID 1 and
- requires no special support.
-
config BUSYBOX_CONFIG_INIT_TERMINAL_TYPE
string "Initial terminal type"
default BUSYBOX_DEFAULT_INIT_TERMINAL_TYPE
- depends on BUSYBOX_CONFIG_INIT
+ depends on BUSYBOX_CONFIG_INIT || BUSYBOX_CONFIG_LINUXRC
help
This is the initial value set by init for the TERM environment
variable. This variable is used by programs which make use of
Note that on Linux, init attempts to detect serial terminal and
sets TERM to "vt102" if one is found.
+
+config BUSYBOX_CONFIG_FEATURE_INIT_MODIFY_CMDLINE
+ bool "Modify the command-line to \"init\""
+ default BUSYBOX_DEFAULT_FEATURE_INIT_MODIFY_CMDLINE
+ depends on BUSYBOX_CONFIG_INIT || BUSYBOX_CONFIG_LINUXRC
+ help
+ When launched as PID 1 and after parsing its arguments, init
+ wipes all the arguments but argv[0] and rewrites argv[0] to
+ contain only "init", so that its command-line appears solely as
+ "init" in tools such as ps.
+ If this option is set to Y, init will keep its original behavior,
+ otherwise, all the arguments including argv[0] will be preserved,
+ be they parsed or ignored by init.
+ The original command-line used to launch init can then be
+ retrieved in /proc/1/cmdline on Linux, for example.
config BUSYBOX_CONFIG_MESG
bool "mesg"
default BUSYBOX_DEFAULT_MESG
menu "Busybox Library Tuning"
-config BUSYBOX_CONFIG_FEATURE_SYSTEMD
- bool "Enable systemd support"
- default BUSYBOX_DEFAULT_FEATURE_SYSTEMD
- help
- If you plan to use busybox daemons on a system where daemons
- are controlled by systemd, enable this option.
- If you don't use systemd, it is still safe to enable it,
- but the downside is increased code size.
+config BUSYBOX_CONFIG_FEATURE_USE_BSS_TAIL
+ bool "Use the end of BSS page"
+ default BUSYBOX_DEFAULT_FEATURE_USE_BSS_TAIL
+ help
+ Attempt to reclaim a small unused part of BSS.
+
+ Executables have the following parts:
+ = read-only executable code and constants, also known as "text"
+ = read-write data
+ = non-initialized (zeroed on demand) data, also known as "bss"
+
+ At link time, "text" is padded to a full page. At runtime, all "text"
+ pages are mapped RO and executable.
+ "Data" starts on the next page boundary, but is not padded
+ to a full page at the end. "Bss" starts wherever "data" ends.
+ At runtime, "data" pages are mapped RW and they are file-backed
+ (this includes a small portion of "bss" which may live in the last
+ partial page of "data").
+ Pages which are fully in "bss" are mapped to anonymous memory.
+
+ "Bss" end is usually not page-aligned. There is an unused space
+ in the last page. Linker marks its start with the "_end" symbol.
+
+ This option will attempt to use that space for bb_common_bufsiz1[]
+ array. If it fits after _end, it will be used, and COMMON_BUFSIZE
+ will be enlarged from its guaranteed minimum size of 1 kbyte.
+ This may require recompilation a second time, since value of _end
+ is known only after final link.
+
+ If you are getting a build error like this:
+ appletlib.c:(.text.main+0xd): undefined reference to '_end'
+ disable this option.
config BUSYBOX_CONFIG_FEATURE_RTMINMAX
bool "Support RTMIN[+n] and RTMAX[-n] signal names"
default BUSYBOX_DEFAULT_FEATURE_RTMINMAX
config BUSYBOX_CONFIG_MD5_SMALL
int "MD5: Trade bytes for speed (0:fast, 3:slow)"
- default BUSYBOX_DEFAULT_MD5_SMALL
+ default BUSYBOX_DEFAULT_MD5_SMALL # all "fast or small" options default to small
range 0 3
help
Trade binary size versus speed for the md5sum algorithm.
config BUSYBOX_CONFIG_SHA3_SMALL
int "SHA3: Trade bytes for speed (0:fast, 1:slow)"
- default BUSYBOX_DEFAULT_SHA3_SMALL
+ default BUSYBOX_DEFAULT_SHA3_SMALL # all "fast or small" options default to small
range 0 1
help
Trade binary size versus speed for the sha3sum algorithm.
config BUSYBOX_CONFIG_FEATURE_FAST_TOP
bool "Faster /proc scanning code (+100 bytes)"
- default BUSYBOX_DEFAULT_FEATURE_FAST_TOP
+ default BUSYBOX_DEFAULT_FEATURE_FAST_TOP # all "fast or small" options default to small
help
This option makes top (and ps) ~20% faster (or 20% less CPU hungry),
but code size is slightly bigger.
config BUSYBOX_CONFIG_FEATURE_REVERSE_SEARCH
bool "Reverse history search"
default BUSYBOX_DEFAULT_FEATURE_REVERSE_SEARCH
- depends on BUSYBOX_CONFIG_FEATURE_EDITING_SAVEHISTORY
+ depends on BUSYBOX_CONFIG_FEATURE_EDITING
help
Enable readline-like Ctrl-R combination for reverse history search.
Increases code by about 0.5k.
menu "Login/Password Management Utilities"
-config BUSYBOX_CONFIG_ADD_SHELL
- bool "add-shell"
- default BUSYBOX_DEFAULT_ADD_SHELL if BUSYBOX_CONFIG_DESKTOP
- help
- Add shells to /etc/shells.
-
-config BUSYBOX_CONFIG_REMOVE_SHELL
- bool "remove-shell"
- default BUSYBOX_DEFAULT_REMOVE_SHELL if BUSYBOX_CONFIG_DESKTOP
- help
- Remove shells from /etc/shells.
-
config BUSYBOX_CONFIG_FEATURE_SHADOWPASSWDS
bool "Support for shadow passwords"
default BUSYBOX_DEFAULT_FEATURE_SHADOWPASSWDS
With this option off, login will fail password check for any
user which has password encrypted with these algorithms.
+config BUSYBOX_CONFIG_ADD_SHELL
+ bool "add-shell"
+ default BUSYBOX_DEFAULT_ADD_SHELL if BUSYBOX_CONFIG_DESKTOP
+ help
+ Add shells to /etc/shells.
+
+config BUSYBOX_CONFIG_REMOVE_SHELL
+ bool "remove-shell"
+ default BUSYBOX_DEFAULT_REMOVE_SHELL if BUSYBOX_CONFIG_DESKTOP
+ help
+ Remove shells from /etc/shells.
+config BUSYBOX_CONFIG_ADDGROUP
+ bool "addgroup"
+ default BUSYBOX_DEFAULT_ADDGROUP
+ help
+ Utility for creating a new group account.
+
+config BUSYBOX_CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS
+ bool "Enable long options"
+ default BUSYBOX_DEFAULT_FEATURE_ADDGROUP_LONG_OPTIONS
+ depends on BUSYBOX_CONFIG_ADDGROUP && BUSYBOX_CONFIG_LONG_OPTS
+ help
+ Support long options for the addgroup applet.
+
+config BUSYBOX_CONFIG_FEATURE_ADDUSER_TO_GROUP
+ bool "Support for adding users to groups"
+ default BUSYBOX_DEFAULT_FEATURE_ADDUSER_TO_GROUP
+ depends on BUSYBOX_CONFIG_ADDGROUP
+ help
+ If called with two non-option arguments,
+ addgroup will add an existing user to an
+ existing group.
config BUSYBOX_CONFIG_ADDUSER
bool "adduser"
default BUSYBOX_DEFAULT_ADDUSER
default BUSYBOX_DEFAULT_LAST_SYSTEM_ID
help
Last valid system uid or gid for adduser and addgroup
-
-config BUSYBOX_CONFIG_ADDGROUP
- bool "addgroup"
- default BUSYBOX_DEFAULT_ADDGROUP
+config BUSYBOX_CONFIG_CHPASSWD
+ bool "chpasswd"
+ default BUSYBOX_DEFAULT_CHPASSWD
help
- Utility for creating a new group account.
+ Reads a file of user name and password pairs from standard input
+ and uses this information to update a group of existing users.
-config BUSYBOX_CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS
- bool "Enable long options"
- default BUSYBOX_DEFAULT_FEATURE_ADDGROUP_LONG_OPTIONS
- depends on BUSYBOX_CONFIG_ADDGROUP && BUSYBOX_CONFIG_LONG_OPTS
+config BUSYBOX_CONFIG_FEATURE_DEFAULT_PASSWD_ALGO
+ string "Default password encryption method (passwd -a, cryptpw -m parameter)"
+ default BUSYBOX_DEFAULT_FEATURE_DEFAULT_PASSWD_ALGO
+ depends on BUSYBOX_CONFIG_PASSWD || BUSYBOX_CONFIG_CRYPTPW
help
- Support long options for the addgroup applet.
-
-config BUSYBOX_CONFIG_FEATURE_ADDUSER_TO_GROUP
- bool "Support for adding users to groups"
- default BUSYBOX_DEFAULT_FEATURE_ADDUSER_TO_GROUP
- depends on BUSYBOX_CONFIG_ADDGROUP
+ Possible choices are "d[es]", "m[d5]", "s[ha256]" or "sha512".
+config BUSYBOX_CONFIG_CRYPTPW
+ bool "cryptpw"
+ default BUSYBOX_DEFAULT_CRYPTPW
help
- If called with two non-option arguments,
- addgroup will add an existing user to an
- existing group.
+ Encrypts the given password with the crypt(3) libc function
+ using the given salt.
+config BUSYBOX_CONFIG_MKPASSWD
+ bool "mkpasswd"
+ default BUSYBOX_DEFAULT_MKPASSWD
+ help
+ Encrypts the given password with the crypt(3) libc function
+ using the given salt. Debian has this utility under mkpasswd
+ name. Busybox provides mkpasswd as an alias for cryptpw.
config BUSYBOX_CONFIG_DELUSER
bool "deluser"
default BUSYBOX_DEFAULT_DELUSER
help
If called with two non-option arguments, deluser
or delgroup will remove an user from a specified group.
-
config BUSYBOX_CONFIG_GETTY
bool "getty"
default BUSYBOX_DEFAULT_GETTY
printf "%s login: " "`hostname`"
read -r login
exec /bin/login "$login"
-
config BUSYBOX_CONFIG_LOGIN
bool "login"
default BUSYBOX_DEFAULT_LOGIN
The file /etc/securetty is used by (some versions of) login(1).
The file contains the device names of tty lines (one per line,
without leading /dev/) on which root is allowed to login.
-
config BUSYBOX_CONFIG_PASSWD
bool "passwd"
default BUSYBOX_DEFAULT_PASSWD
depends on BUSYBOX_CONFIG_PASSWD
help
With this option passwd will refuse new passwords which are "weak".
-
-config BUSYBOX_CONFIG_CRYPTPW
- bool "cryptpw"
- default BUSYBOX_DEFAULT_CRYPTPW
- help
- Encrypts the given password with the crypt(3) libc function
- using the given salt. Debian has this utility under mkpasswd
- name. Busybox provides mkpasswd as an alias for cryptpw.
-
-config BUSYBOX_CONFIG_CHPASSWD
- bool "chpasswd"
- default BUSYBOX_DEFAULT_CHPASSWD
- help
- Reads a file of user name and password pairs from standard input
- and uses this information to update a group of existing users.
-
-config BUSYBOX_CONFIG_FEATURE_DEFAULT_PASSWD_ALGO
- string "Default password encryption method (passwd -a, cryptpw -m parameter)"
- default BUSYBOX_DEFAULT_FEATURE_DEFAULT_PASSWD_ALGO
- depends on BUSYBOX_CONFIG_PASSWD || BUSYBOX_CONFIG_CRYPTPW
- help
- Possible choices are "d[es]", "m[d5]", "s[ha256]" or "sha512".
-
config BUSYBOX_CONFIG_SU
bool "su"
default BUSYBOX_DEFAULT_SU
bool "Enable su to check user's shell to be listed in /etc/shells"
depends on BUSYBOX_CONFIG_SU
default BUSYBOX_DEFAULT_FEATURE_SU_CHECKS_SHELLS
-
config BUSYBOX_CONFIG_SULOGIN
bool "sulogin"
default BUSYBOX_DEFAULT_SULOGIN
help
sulogin is invoked when the system goes into single user
mode (this is done through an entry in inittab).
-
config BUSYBOX_CONFIG_VLOCK
bool "vlock"
default BUSYBOX_DEFAULT_VLOCK
select BUSYBOX_CONFIG_PLATFORM_LINUX
help
Update a UBI volume.
+config BUSYBOX_CONFIG_UBIRENAME
+ bool "ubirename"
+ default BUSYBOX_DEFAULT_UBIRENAME
+ select BUSYBOX_CONFIG_PLATFORM_LINUX
+ help
+ Utility to rename UBI volumes
config BUSYBOX_CONFIG_WALL
bool "wall"
default BUSYBOX_DEFAULT_WALL
help
'last' displays a list of the last users that logged into the system.
-choice
- prompt "Choose last implementation"
- depends on BUSYBOX_CONFIG_LAST
- default BUSYBOX_CONFIG_FEATURE_LAST_FANCY
-
-config BUSYBOX_CONFIG_FEATURE_LAST_SMALL
- bool "small"
- help
- This is a small version of last with just the basic set of
- features.
-
config BUSYBOX_CONFIG_FEATURE_LAST_FANCY
- bool "huge"
+ bool "Turn on output of extra information"
+ default BUSYBOX_DEFAULT_FEATURE_LAST_FANCY
+ depends on BUSYBOX_CONFIG_LAST
help
'last' displays detailed information about the last users that
logged into the system (mimics sysvinit last). +900 bytes.
-endchoice
config BUSYBOX_CONFIG_HDPARM
bool "hdparm"
- rmmod is an alias to modprobe -r
- depmod generates modules.dep.bb
- As of 2008-07, this code is experimental. It is 14kb smaller
- than "non-small" modutils.
-
config BUSYBOX_CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE
bool "Accept module options on modprobe command line"
default BUSYBOX_DEFAULT_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE
config BUSYBOX_CONFIG_FEATURE_INETD_RPC
bool "Support RPC services"
- default BUSYBOX_DEFAULT_FEATURE_INETD_RPC
+ default BUSYBOX_DEFAULT_FEATURE_INETD_RPC # very rarely used, and needs Sun RPC support in libc
depends on BUSYBOX_CONFIG_INETD
select BUSYBOX_CONFIG_FEATURE_HAVE_RPC
help
help
Add support for rule commands to "ip".
+config BUSYBOX_CONFIG_FEATURE_IP_NEIGH
+ bool "ip neighbor"
+ default BUSYBOX_DEFAULT_FEATURE_IP_NEIGH
+ depends on BUSYBOX_CONFIG_IP
+ help
+ Add support for neighbor commands to "ip".
+
config BUSYBOX_CONFIG_FEATURE_IP_SHORT_FORMS
bool "Support short forms of ip commands"
default BUSYBOX_DEFAULT_FEATURE_IP_SHORT_FORMS
ip route -> iproute
ip tunnel -> iptunnel
ip rule -> iprule
+ ip neigh -> ipneigh
Say N unless you desparately need the short form of the ip
object commands.
default BUSYBOX_DEFAULT_IPRULE
depends on BUSYBOX_CONFIG_FEATURE_IP_SHORT_FORMS && BUSYBOX_CONFIG_FEATURE_IP_RULE
+config BUSYBOX_CONFIG_IPNEIGH
+ bool
+ default BUSYBOX_DEFAULT_IPNEIGH
+ depends on BUSYBOX_CONFIG_FEATURE_IP_SHORT_FORMS && BUSYBOX_CONFIG_FEATURE_IP_NEIGH
+
config BUSYBOX_CONFIG_IPCALC
bool "ipcalc"
default BUSYBOX_DEFAULT_IPCALC
menu "Print Utilities"
-
config BUSYBOX_CONFIG_LPD
bool "lpd"
default BUSYBOX_DEFAULT_LPD
help
lpd is a print spooling daemon.
-
config BUSYBOX_CONFIG_LPR
bool "lpr"
default BUSYBOX_DEFAULT_LPR
menu "Runit Utilities"
+config BUSYBOX_CONFIG_CHPST
+ bool "chpst"
+ default BUSYBOX_DEFAULT_CHPST
+ help
+ chpst changes the process state according to the given options, and
+ execs specified program.
+config BUSYBOX_CONFIG_SETUIDGID
+ bool "setuidgid"
+ default BUSYBOX_DEFAULT_SETUIDGID
+ help
+ Sets soft resource limits as specified by options
+
+config BUSYBOX_CONFIG_ENVUIDGID
+ bool "envuidgid"
+ default BUSYBOX_DEFAULT_ENVUIDGID
+ help
+ Sets $UID to account's uid and $GID to account's gid
+
+config BUSYBOX_CONFIG_ENVDIR
+ bool "envdir"
+ default BUSYBOX_DEFAULT_ENVDIR
+ help
+ Sets various environment variables as specified by files
+ in the given directory
+
+config BUSYBOX_CONFIG_SOFTLIMIT
+ bool "softlimit"
+ default BUSYBOX_DEFAULT_SOFTLIMIT
+ help
+ Sets soft resource limits as specified by options
config BUSYBOX_CONFIG_RUNSV
bool "runsv"
default BUSYBOX_DEFAULT_RUNSV
help
runsv starts and monitors a service and optionally an appendant log
service.
-
config BUSYBOX_CONFIG_RUNSVDIR
bool "runsvdir"
default BUSYBOX_DEFAULT_RUNSVDIR
Enable feature where second parameter of runsvdir holds last error
message (viewable via top/ps). Otherwise (feature is off
or no parameter), error messages go to stderr only.
-
config BUSYBOX_CONFIG_SV
bool "sv"
default BUSYBOX_DEFAULT_SV
help
Default directory for services.
Defaults to "/var/service"
-
config BUSYBOX_CONFIG_SVLOGD
bool "svlogd"
default BUSYBOX_DEFAULT_SVLOGD
filters log messages, and writes the data to one or more automatically
rotated logs.
-config BUSYBOX_CONFIG_CHPST
- bool "chpst"
- default BUSYBOX_DEFAULT_CHPST
- help
- chpst changes the process state according to the given options, and
- execs specified program.
-
-config BUSYBOX_CONFIG_SETUIDGID
- bool "setuidgid"
- default BUSYBOX_DEFAULT_SETUIDGID
- help
- Sets soft resource limits as specified by options
-
-config BUSYBOX_CONFIG_ENVUIDGID
- bool "envuidgid"
- default BUSYBOX_DEFAULT_ENVUIDGID
- help
- Sets $UID to account's uid and $GID to account's gid
-
-config BUSYBOX_CONFIG_ENVDIR
- bool "envdir"
- default BUSYBOX_DEFAULT_ENVDIR
- help
- Sets various environment variables as specified by files
- in the given directory
-
-config BUSYBOX_CONFIG_SOFTLIMIT
- bool "softlimit"
- default BUSYBOX_DEFAULT_SOFTLIMIT
- help
- Sets soft resource limits as specified by options
-
endmenu
menu "System Logging Utilities"
+config BUSYBOX_CONFIG_KLOGD
+ bool "klogd"
+ default BUSYBOX_DEFAULT_KLOGD
+ help
+ klogd is a utility which intercepts and logs all
+ messages from the Linux kernel and sends the messages
+ out to the 'syslogd' utility so they can be logged. If
+ you wish to record the messages produced by the kernel,
+ you should enable this option.
+
+comment "klogd should not be used together with syslog to kernel printk buffer"
+ depends on BUSYBOX_CONFIG_KLOGD && BUSYBOX_CONFIG_FEATURE_KMSG_SYSLOG
+
+config BUSYBOX_CONFIG_FEATURE_KLOGD_KLOGCTL
+ bool "Use the klogctl() interface"
+ default BUSYBOX_DEFAULT_FEATURE_KLOGD_KLOGCTL
+ depends on BUSYBOX_CONFIG_KLOGD
+ select BUSYBOX_CONFIG_PLATFORM_LINUX
+ help
+ The klogd applet supports two interfaces for reading
+ kernel messages. Linux provides the klogctl() interface
+ which allows reading messages from the kernel ring buffer
+ independently from the file system.
+
+ If you answer 'N' here, klogd will use the more portable
+ approach of reading them from /proc or a device node.
+ However, this method requires the file to be available.
+
+ If in doubt, say 'Y'.
+config BUSYBOX_CONFIG_LOGGER
+ bool "logger"
+ default BUSYBOX_DEFAULT_LOGGER
+ select BUSYBOX_CONFIG_FEATURE_SYSLOG
+ help
+ The logger utility allows you to send arbitrary text
+ messages to the system log (i.e. the 'syslogd' utility) so
+ they can be logged. This is generally used to help locate
+ problems that occur within programs and scripts.
+config BUSYBOX_CONFIG_LOGREAD
+ bool "logread"
+ default BUSYBOX_DEFAULT_LOGREAD
+ depends on BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG
+ help
+ If you enabled Circular Buffer support, you almost
+ certainly want to enable this feature as well. This
+ utility will allow you to read the messages that are
+ stored in the syslogd circular buffer.
+
+config BUSYBOX_CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING
+ bool "Double buffering"
+ default BUSYBOX_DEFAULT_FEATURE_LOGREAD_REDUCED_LOCKING
+ depends on BUSYBOX_CONFIG_LOGREAD
+ help
+ 'logread' ouput to slow serial terminals can have
+ side effects on syslog because of the semaphore.
+ This option make logread to double buffer copy
+ from circular buffer, minimizing semaphore
+ contention at some minor memory expense.
config BUSYBOX_CONFIG_SYSLOGD
bool "syslogd"
depends on BUSYBOX_CONFIG_SYSLOGD
help
This enables syslogd to rotate the message files
- on his own. No need to use an external rotatescript.
+ on his own. No need to use an external rotate script.
config BUSYBOX_CONFIG_FEATURE_REMOTE_LOG
bool "Remote Log support"
This option sets the size of the circular buffer
used to record system log messages.
-config BUSYBOX_CONFIG_LOGREAD
- bool "logread"
- default BUSYBOX_DEFAULT_LOGREAD
- depends on BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG
- help
- If you enabled Circular Buffer support, you almost
- certainly want to enable this feature as well. This
- utility will allow you to read the messages that are
- stored in the syslogd circular buffer.
-
-config BUSYBOX_CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING
- bool "Double buffering"
- default BUSYBOX_DEFAULT_FEATURE_LOGREAD_REDUCED_LOCKING
- depends on BUSYBOX_CONFIG_LOGREAD
- help
- 'logread' ouput to slow serial terminals can have
- side effects on syslog because of the semaphore.
- This option make logread to double buffer copy
- from circular buffer, minimizing semaphore
- contention at some minor memory expense.
-
config BUSYBOX_CONFIG_FEATURE_KMSG_SYSLOG
bool "Linux kernel printk buffer support"
default BUSYBOX_DEFAULT_FEATURE_KMSG_SYSLOG
NOTICE: Syslog facilities in log entries needs kernel 3.5+.
-config BUSYBOX_CONFIG_KLOGD
- bool "klogd"
- default BUSYBOX_DEFAULT_KLOGD
- help
- klogd is a utility which intercepts and logs all
- messages from the Linux kernel and sends the messages
- out to the 'syslogd' utility so they can be logged. If
- you wish to record the messages produced by the kernel,
- you should enable this option.
-
-comment "klogd should not be used together with syslog to kernel printk buffer"
- depends on BUSYBOX_CONFIG_KLOGD && BUSYBOX_CONFIG_FEATURE_KMSG_SYSLOG
-
-config BUSYBOX_CONFIG_FEATURE_KLOGD_KLOGCTL
- bool "Use the klogctl() interface"
- default BUSYBOX_DEFAULT_FEATURE_KLOGD_KLOGCTL
- depends on BUSYBOX_CONFIG_KLOGD
- select BUSYBOX_CONFIG_PLATFORM_LINUX
- help
- The klogd applet supports two interfaces for reading
- kernel messages. Linux provides the klogctl() interface
- which allows reading messages from the kernel ring buffer
- independently from the file system.
-
- If you answer 'N' here, klogd will use the more portable
- approach of reading them from /proc or a device node.
- However, this method requires the file to be available.
-
- If in doubt, say 'Y'.
-
-config BUSYBOX_CONFIG_LOGGER
- bool "logger"
- default BUSYBOX_DEFAULT_LOGGER
- select BUSYBOX_CONFIG_FEATURE_SYSLOG
- help
- The logger utility allows you to send arbitrary text
- messages to the system log (i.e. the 'syslogd' utility) so
- they can be logged. This is generally used to help locate
- problems that occur within programs and scripts.
-
endmenu
menu "Linux System Utilities"
+config BUSYBOX_CONFIG_BLKDISCARD
+ bool "blkdiscard"
+ default BUSYBOX_DEFAULT_BLKDISCARD
+ help
+ blkdiscard discards sectors on a given device.
config BUSYBOX_CONFIG_BLOCKDEV
bool "blockdev"
default BUSYBOX_DEFAULT_BLOCKDEV
default BUSYBOX_DEFAULT_FEATURE_MOUNT_OTHERTAB
help
Support mount -T (specifying an alternate fstab)
+config BUSYBOX_CONFIG_NSENTER
+ bool "nsenter"
+ default BUSYBOX_DEFAULT_NSENTER
+ select BUSYBOX_CONFIG_PLATFORM_LINUX
+ help
+ Run program with namespaces of other processes.
+
+config BUSYBOX_CONFIG_FEATURE_NSENTER_LONG_OPTS
+ bool "Enable long options"
+ default BUSYBOX_DEFAULT_FEATURE_NSENTER_LONG_OPTS
+ depends on BUSYBOX_CONFIG_NSENTER && BUSYBOX_CONFIG_LONG_OPTS
+ help
+ Support long options for the nsenter applet. This makes
+ the busybox implementation more compatible with upstream.
config BUSYBOX_CONFIG_REV
bool "rev"
default BUSYBOX_DEFAULT_REV
help
Reverse lines of a file or files.
+config BUSYBOX_CONFIG_SETARCH
+ bool "setarch"
+ default BUSYBOX_DEFAULT_SETARCH
+ select BUSYBOX_CONFIG_PLATFORM_LINUX
+ help
+ The linux32 utility is used to create a 32bit environment for the
+ specified program (usually a shell). It only makes sense to have
+ this util on a system that supports both 64bit and 32bit userland
+ (like amd64/x86, ppc64/ppc, sparc64/sparc, etc...).
config BUSYBOX_CONFIG_UEVENT
bool "uevent"
default BUSYBOX_DEFAULT_UEVENT
help
uevent is a netlink listener for kernel uevent notifications
sent via netlink. It is usually used for dynamic device creation.
+config BUSYBOX_CONFIG_UNSHARE
+ bool "unshare"
+ default BUSYBOX_DEFAULT_UNSHARE
+ depends on BUSYBOX_CONFIG_LONG_OPTS && !BUSYBOX_CONFIG_NOMMU
+ select BUSYBOX_CONFIG_PLATFORM_LINUX
+ help
+ Run program with some namespaces unshared from parent.
config BUSYBOX_CONFIG_ACPID
bool "acpid"
This program replays a typescript, using timing information
given by script -t.
-config BUSYBOX_CONFIG_SETARCH
- bool "setarch"
- default BUSYBOX_DEFAULT_SETARCH
- select BUSYBOX_CONFIG_PLATFORM_LINUX
- help
- The linux32 utility is used to create a 32bit environment for the
- specified program (usually a shell). It only makes sense to have
- this util on a system that supports both 64bit and 32bit userland
- (like amd64/x86, ppc64/ppc, sparc64/sparc, etc...).
-
config BUSYBOX_CONFIG_SWAPONOFF
bool "swaponoff"
default BUSYBOX_DEFAULT_SWAPONOFF
depends on BUSYBOX_CONFIG_VOLUMEID
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_BCACHE
+ bool "bcache filesystem"
+ default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_BCACHE
+ depends on BUSYBOX_CONFIG_VOLUMEID
+ help
+ TODO
+
+
config BUSYBOX_CONFIG_FEATURE_VOLUMEID_BTRFS
bool "btrfs filesystem"
default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_BTRFS
--- a/include/libbb.h
+++ b/include/libbb.h
-@@ -40,6 +40,7 @@
+@@ -41,6 +41,7 @@
#include <poll.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
+++ /dev/null
-From: Felix Fietkau <nbd@nbd.name>
-Date: Mon, 18 Jan 2016 12:03:45 +0100
-Subject: [PATCH] networking: fix uninitialized memory when displaying IPv6
- addresses
-
-After commit 8e74adab0107658e3dc04ed342206272a284f43e
-("libbb: make INET[6]_rresolve use sockaddr2{host,dotted}_noport")
-INET_sprint6 uses more than just sin6_addr, it also tries to display the
-scope id, which is uninitialized when called from ife_print6.
-
-Signed-off-by: Felix Fietkau <nbd@nbd.name>
----
-
---- a/networking/interface.c
-+++ b/networking/interface.c
-@@ -881,6 +881,7 @@ static void ife_print6(struct interface
- sprintf(addr6, "%s:%s:%s:%s:%s:%s:%s:%s",
- addr6p[0], addr6p[1], addr6p[2], addr6p[3],
- addr6p[4], addr6p[5], addr6p[6], addr6p[7]);
-+ memset(&sap, 0, sizeof(sap));
- inet_pton(AF_INET6, addr6,
- (struct sockaddr *) &sap.sin6_addr);
- sap.sin6_family = AF_INET6;
--- a/networking/libiproute/iprule.c
+++ b/networking/libiproute/iprule.c
-@@ -119,7 +119,9 @@ static int FAST_FUNC print_rule(const st
+@@ -114,7 +114,9 @@ static int FAST_FUNC print_rule(const st
printf("iif %s ", (char*)RTA_DATA(tb[RTA_IIF]));
}
+++ /dev/null
-From: Szabolcs Nagy <nsz@port70.net>
-Date: Sun, 24 Apr 2016 17:39:02 +0200
-Subject: [PATCH] ip: fix problem on mips64 n64 big endian musl systems
-
-Use designated initializers for struct msghdr.
-The struct layout is non-portable and musl libc does not match what busybox expects.
-
-Signed-off-by: Szabolcs Nagy <nsz@port70.net>
-Tested-by: Waldemar Brodkorb <wbx@openadk.org>
-Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
----
-
---- a/networking/libiproute/libnetlink.c
-+++ b/networking/libiproute/libnetlink.c
-@@ -71,11 +71,15 @@ int FAST_FUNC rtnl_dump_request(struct r
- struct nlmsghdr nlh;
- struct sockaddr_nl nladdr;
- struct iovec iov[2] = { { &nlh, sizeof(nlh) }, { req, len } };
-+ /* Use designated initializers, struct layout is non-portable */
- struct msghdr msg = {
-- (void*)&nladdr, sizeof(nladdr),
-- iov, 2,
-- NULL, 0,
-- 0
-+ .msg_name = (void*)&nladdr,
-+ .msg_namelen = sizeof(nladdr),
-+ .msg_iov = iov,
-+ .msg_iovlen = 2,
-+ .msg_control = NULL,
-+ .msg_controllen = 0,
-+ .msg_flags = 0
- };
-
- memset(&nladdr, 0, sizeof(nladdr));
-@@ -104,12 +108,15 @@ static int rtnl_dump_filter(struct rtnl_
- while (1) {
- int status;
- struct nlmsghdr *h;
--
-+ /* Use designated initializers, struct layout is non-portable */
- struct msghdr msg = {
-- (void*)&nladdr, sizeof(nladdr),
-- &iov, 1,
-- NULL, 0,
-- 0
-+ .msg_name = (void*)&nladdr,
-+ .msg_namelen = sizeof(nladdr),
-+ .msg_iov = &iov,
-+ .msg_iovlen = 1,
-+ .msg_control = NULL,
-+ .msg_controllen = 0,
-+ .msg_flags = 0
- };
-
- status = recvmsg(rth->fd, &msg, 0);
-@@ -211,11 +218,15 @@ int FAST_FUNC rtnl_talk(struct rtnl_hand
- struct sockaddr_nl nladdr;
- struct iovec iov = { (void*)n, n->nlmsg_len };
- char *buf = xmalloc(8*1024); /* avoid big stack buffer */
-+ /* Use designated initializers, struct layout is non-portable */
- struct msghdr msg = {
-- (void*)&nladdr, sizeof(nladdr),
-- &iov, 1,
-- NULL, 0,
-- 0
-+ .msg_name = (void*)&nladdr,
-+ .msg_namelen = sizeof(nladdr),
-+ .msg_iov = &iov,
-+ .msg_iovlen = 1,
-+ .msg_control = NULL,
-+ .msg_controllen = 0,
-+ .msg_flags = 0
- };
-
- memset(&nladdr, 0, sizeof(nladdr));
--- a/util-linux/mount.c
+++ b/util-linux/mount.c
-@@ -236,9 +236,6 @@
+@@ -237,9 +237,6 @@
#if ENABLE_FEATURE_MOUNT_NFS
/* This is just a warning of a common mistake. Possibly this should be a
* uclibc faq entry rather than in busybox... */
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
-@@ -695,6 +695,7 @@ static int bcast_or_ucast(struct dhcp_pa
+@@ -697,6 +697,7 @@ static int bcast_or_ucast(struct dhcp_pa
static NOINLINE int send_discover(uint32_t xid, uint32_t requested)
{
struct dhcp_packet packet;
/* Fill in: op, htype, hlen, cookie, chaddr fields,
* random xid field (we override it below),
-@@ -712,6 +713,7 @@ static NOINLINE int send_discover(uint32
+@@ -714,6 +715,7 @@ static NOINLINE int send_discover(uint32
*/
add_client_options(&packet);
+ if (msgs++ < 3)
- bb_info_msg("Sending discover...");
- return raw_bcast_from_client_config_ifindex(&packet);
+ bb_error_msg("sending %s", "discover");
+ return raw_bcast_from_client_config_ifindex(&packet, INADDR_ANY);
}
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
-@@ -1418,6 +1418,12 @@ int udhcpc_main(int argc UNUSED_PARAM, c
+@@ -1422,6 +1422,12 @@ int udhcpc_main(int argc UNUSED_PARAM, c
/* silence "uninitialized!" warning */
unsigned timestamp_before_wait = timestamp_before_wait;
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
-@@ -1101,7 +1101,6 @@ static void perform_renew(void)
+@@ -1103,7 +1103,6 @@ static void perform_renew(void)
state = RENEW_REQUESTED;
break;
case RENEW_REQUESTED: /* impatient are we? fine, square 1 */
+++ /dev/null
---- a/networking/udhcp/dhcpc.c
-+++ b/networking/udhcp/dhcpc.c
-@@ -673,10 +673,10 @@ static void add_client_options(struct dh
- * client reverts to using the IP broadcast address.
- */
-
--static int raw_bcast_from_client_config_ifindex(struct dhcp_packet *packet)
-+static int raw_bcast_from_client_config_ifindex(struct dhcp_packet *packet, uint32_t src_nip)
- {
- return udhcp_send_raw_packet(packet,
-- /*src*/ INADDR_ANY, CLIENT_PORT,
-+ /*src*/ src_nip, CLIENT_PORT,
- /*dst*/ INADDR_BROADCAST, SERVER_PORT, MAC_BCAST_ADDR,
- client_config.ifindex);
- }
-@@ -687,7 +687,7 @@ static int bcast_or_ucast(struct dhcp_pa
- return udhcp_send_kernel_packet(packet,
- ciaddr, CLIENT_PORT,
- server, SERVER_PORT);
-- return raw_bcast_from_client_config_ifindex(packet);
-+ return raw_bcast_from_client_config_ifindex(packet, ciaddr);
- }
-
- /* Broadcast a DHCP discover packet to the network, with an optionally requested IP */
-@@ -715,7 +715,7 @@ static NOINLINE int send_discover(uint32
-
- if (msgs++ < 3)
- bb_info_msg("Sending discover...");
-- return raw_bcast_from_client_config_ifindex(&packet);
-+ return raw_bcast_from_client_config_ifindex(&packet, INADDR_ANY);
- }
-
- /* Broadcast a DHCP request message */
-@@ -759,7 +759,7 @@ static NOINLINE int send_select(uint32_t
-
- addr.s_addr = requested;
- bb_info_msg("Sending select for %s...", inet_ntoa(addr));
-- return raw_bcast_from_client_config_ifindex(&packet);
-+ return raw_bcast_from_client_config_ifindex(&packet, INADDR_ANY);
- }
-
- /* Unicast or broadcast a DHCP renew message */
-@@ -827,7 +827,7 @@ static NOINLINE int send_decline(/*uint3
- udhcp_add_simple_option(&packet, DHCP_SERVER_ID, server);
-
- bb_info_msg("Sending decline...");
-- return raw_bcast_from_client_config_ifindex(&packet);
-+ return raw_bcast_from_client_config_ifindex(&packet, INADDR_ANY);
- }
- #endif
-
--- a/include/applets.src.h
+++ b/include/applets.src.h
-@@ -254,6 +254,7 @@ IF_MT(APPLET(mt, BB_DIR_BIN, BB_SUID_DRO
+@@ -229,6 +229,7 @@ IF_MT(APPLET(mt, BB_DIR_BIN, BB_SUID_DRO
IF_MV(APPLET(mv, BB_DIR_BIN, BB_SUID_DROP))
IF_NAMEIF(APPLET(nameif, BB_DIR_SBIN, BB_SUID_DROP))
IF_NC(APPLET(nc, BB_DIR_USR_BIN, BB_SUID_DROP))
IF_NOHUP(APPLET(nohup, BB_DIR_USR_BIN, BB_SUID_DROP))
--- a/networking/Config.src
+++ b/networking/Config.src
-@@ -626,6 +626,12 @@ config FEATURE_IPCALC_LONG_OPTIONS
+@@ -639,6 +639,12 @@ config FEATURE_IPCALC_LONG_OPTIONS
help
Support long options for the ipcalc applet.
--- a/include/applets.src.h
+++ b/include/applets.src.h
-@@ -211,6 +211,7 @@ IF_LN(APPLET_NOEXEC(ln, ln, BB_DIR_BIN,
+@@ -196,6 +196,7 @@ IF_LN(APPLET_NOEXEC(ln, ln, BB_DIR_BIN,
IF_LOAD_POLICY(APPLET(load_policy, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_LOADFONT(APPLET(loadfont, BB_DIR_USR_SBIN, BB_SUID_DROP))
IF_LOADKMAP(APPLET(loadkmap, BB_DIR_SBIN, BB_SUID_DROP))
+IF_LOCK(APPLET(lock, BB_DIR_BIN, BB_SUID_DROP))
- IF_LOGGER(APPLET(logger, BB_DIR_USR_BIN, BB_SUID_DROP))
- /* Needs to be run by root or be suid root - needs to change uid and gid: */
- IF_LOGIN(APPLET(login, BB_DIR_BIN, BB_SUID_REQUIRE))
+ IF_LOGNAME(APPLET_NOFORK(logname, logname, BB_DIR_USR_BIN, BB_SUID_DROP, logname))
+ IF_LOSETUP(APPLET(losetup, BB_DIR_SBIN, BB_SUID_DROP))
+ IF_LS(APPLET_NOEXEC(ls, ls, BB_DIR_BIN, BB_SUID_DROP, ls))
--- a/miscutils/Config.src
+++ b/miscutils/Config.src
-@@ -385,6 +385,12 @@ config FEATURE_HDPARM_HDIO_GETSET_DMA
+@@ -375,6 +375,12 @@ config FEATURE_HDPARM_HDIO_GETSET_DMA
help
Enables the 'hdparm -d' option to get/set using_dma flag.
default y
--- a/miscutils/Kbuild.src
+++ b/miscutils/Kbuild.src
-@@ -28,6 +28,7 @@ lib-$(CONFIG_INOTIFYD) += inotifyd.o
- lib-$(CONFIG_FEATURE_LAST_SMALL)+= last.o
- lib-$(CONFIG_FEATURE_LAST_FANCY)+= last_fancy.o
+@@ -33,6 +33,7 @@ lib-$(CONFIG_LAST) += last.o
+ endif
+
lib-$(CONFIG_LESS) += less.o
+lib-$(CONFIG_LOCK) += lock.o
lib-$(CONFIG_MAKEDEVS) += makedevs.o
+++ /dev/null
---- a/networking/ntpd.c
-+++ b/networking/ntpd.c
-@@ -265,6 +265,7 @@ typedef struct {
- typedef struct {
- len_and_sockaddr *p_lsa;
- char *p_dotted;
-+ char *p_hostname;
- int p_fd;
- int datapoint_idx;
- uint32_t lastpkt_refid;
-@@ -766,8 +767,9 @@ add_peers(const char *s)
- peer_t *p;
-
- p = xzalloc(sizeof(*p));
-- p->p_lsa = xhost2sockaddr(s, 123);
-- p->p_dotted = xmalloc_sockaddr2dotted_noport(&p->p_lsa->u.sa);
-+ p->p_hostname = s;
-+ p->p_lsa = NULL;
-+ p->p_dotted = NULL;
- p->p_fd = -1;
- p->p_xmt_msg.m_status = MODE_CLIENT | (NTP_VERSION << 3);
- p->next_action_time = G.cur_time; /* = set_next(p, 0); */
-@@ -816,6 +818,25 @@ send_query_to_peer(peer_t *p)
- *
- * Uncomment this and use strace to see it in action:
- */
-+
-+ /* See if the peer hostname already resolved yet, if not, retry to resolv and return on failure */
-+ if (!p->p_lsa)
-+ {
-+ p->p_lsa = host2sockaddr(p->p_hostname, 123);
-+
-+ if (p->p_lsa)
-+ {
-+ p->p_dotted = xmalloc_sockaddr2dotted_noport(&p->p_lsa->u.sa);
-+ VERB1 bb_error_msg("resolved peer %s to %s", p->p_hostname, p->p_dotted);
-+ }
-+ else
-+ {
-+ set_next(p, RETRY_INTERVAL);
-+ VERB1 bb_error_msg("could not resolve peer %s, skipping", p->p_hostname);
-+ return;
-+ }
-+ }
-+
- #define PROBE_LOCAL_ADDR /* { len_and_sockaddr lsa; lsa.len = LSA_SIZEOF_SA; getsockname(p->query.fd, &lsa.u.sa, &lsa.len); } */
-
- if (p->p_fd == -1) {
--- a/networking/telnetd.c
+++ b/networking/telnetd.c
-@@ -331,6 +331,7 @@ make_new_session(
+@@ -333,6 +333,7 @@ make_new_session(
/* Restore default signal handling ASAP */
bb_signals((1 << SIGCHLD) + (1 << SIGPIPE), SIG_DFL);
//usage: "\n"
//usage: "\nRecognized TIME formats:"
//usage: "\n hh:mm[:ss]"
-@@ -138,9 +139,8 @@
- //usage: "Wed Apr 12 18:52:41 MDT 2000\n"
+@@ -139,9 +140,8 @@
#include "libbb.h"
+ #include "common_bufsiz.h"
-#if ENABLE_FEATURE_DATE_NANO
-# include <sys/syscall.h>
-#endif
enum {
OPT_RFC2822 = (1 << 0), /* R */
-@@ -148,8 +148,9 @@ enum {
+@@ -149,8 +149,9 @@ enum {
OPT_UTC = (1 << 2), /* u */
OPT_DATE = (1 << 3), /* d */
OPT_REFERENCE = (1 << 4), /* r */
};
static void maybe_set_utc(int opt)
-@@ -167,12 +168,15 @@ static const char date_longopts[] ALIGN1
+@@ -168,12 +169,15 @@ static const char date_longopts[] ALIGN1
/* "universal\0" No_argument "u" */
"date\0" Required_argument "d"
"reference\0" Required_argument "r"
struct timespec ts;
struct tm tm_time;
char buf_fmt_dt2str[64];
-@@ -187,7 +191,7 @@ int date_main(int argc UNUSED_PARAM, cha
+@@ -188,7 +192,7 @@ int date_main(int argc UNUSED_PARAM, cha
opt_complementary = "d--s:s--d"
IF_FEATURE_DATE_ISOFMT(":R--I:I--R");
IF_LONG_OPTS(applet_long_options = date_longopts;)
IF_FEATURE_DATE_ISOFMT("I::D:"),
&date_str, &date_str, &filename
IF_FEATURE_DATE_ISOFMT(, &isofmt_arg, &fmt_str2dt));
-@@ -244,6 +248,31 @@ int date_main(int argc UNUSED_PARAM, cha
+@@ -245,6 +249,31 @@ int date_main(int argc UNUSED_PARAM, cha
if (*argv)
bb_show_usage();
+++ /dev/null
---- a/networking/arping.c
-+++ b/networking/arping.c
-@@ -24,6 +24,8 @@
-
- #include <arpa/inet.h>
- #include <net/if.h>
-+#include <net/if_arp.h>
-+#include <netinet/if_ether.h>
- #include <netinet/ether.h>
- #include <netpacket/packet.h>
-