[PATCHv3 2/3] busybox: update to 1.33

Rosen Penev rosenp at gmail.com
Sun Jan 31 19:15:53 EST 2021


Remove stime backport.

Remove static libgcc patch as upstream fixed it with
BUSYBOX_DEFAULT_STATIC_LIBGCC which defauls to off.

Remove date -k patch as it no longer applies. It's also pointless as
busybox' hwclock utility can do the same thing.

Remove ntpd patch as that seems to have been applied upstream.

Add smalll patch fixing compilation with SELinux. Upstream commit
2496616b0a8d1c80cd1416b73a4847b59b9f969a renamed the variable without
renaming it in the SELinux path.

Refresh config and patches.

Signed-off-by: Rosen Penev <rosenp at gmail.com>
---
 v2: refreshed config and slight rewording.
 package/utils/busybox/Config-defaults.in      |  48 ++++++-
 package/utils/busybox/Makefile                |   6 +-
 package/utils/busybox/config/Config.in        |  38 ++++--
 .../utils/busybox/config/archival/Config.in   |   2 +-
 .../busybox/config/console-tools/Config.in    |  13 --
 .../utils/busybox/config/coreutils/Config.in  |  10 +-
 .../utils/busybox/config/e2fsprogs/Config.in  |   1 -
 .../utils/busybox/config/findutils/Config.in  |   8 ++
 .../busybox/config/klibc-utils/Config.in      |   1 -
 package/utils/busybox/config/libbb/Config.in  |   2 -
 .../utils/busybox/config/miscutils/Config.in  |  36 +----
 .../utils/busybox/config/modutils/Config.in   |   6 -
 .../utils/busybox/config/networking/Config.in |  68 ++++++----
 .../busybox/config/networking/udhcp/Config.in |   2 -
 package/utils/busybox/config/procps/Config.in |   3 -
 package/utils/busybox/config/shell/Config.in  | 124 ++++++++++--------
 .../utils/busybox/config/sysklogd/Config.in   |  10 +-
 .../utils/busybox/config/util-linux/Config.in |  62 ++-------
 .../config/util-linux/volume_id/Config.in     |   6 +
 .../001-remove-stime-function-calls.patch     |  84 ------------
 .../patches/010-fix-wrong-variable.patch      |  11 ++
 .../patches/110-no_static_libgcc.patch        |  11 --
 .../busybox/patches/120-lto-jobserver.patch   |   6 +-
 .../patches/200-udhcpc_reduce_msgs.patch      |   4 +-
 .../patches/201-udhcpc_changed_ifindex.patch  |   2 +-
 .../203-udhcpc_renew_no_deconfig.patch        |   2 +-
 .../patches/230-add_nslookup_lede.patch       |   6 +-
 .../busybox/patches/250-date-k-flag.patch     |  92 -------------
 .../500-move-traceroute-applets-to-bin.patch  |   2 +-
 ...520-loginutils-handle-crypt-failures.patch |   6 +-
 .../patches/600-allow-ntpd-non-root.patch     |  12 --
 31 files changed, 255 insertions(+), 429 deletions(-)
 delete mode 100644 package/utils/busybox/patches/001-remove-stime-function-calls.patch
 create mode 100644 package/utils/busybox/patches/010-fix-wrong-variable.patch
 delete mode 100644 package/utils/busybox/patches/110-no_static_libgcc.patch
 delete mode 100644 package/utils/busybox/patches/250-date-k-flag.patch
 delete mode 100644 package/utils/busybox/patches/600-allow-ntpd-non-root.patch

diff --git a/package/utils/busybox/Config-defaults.in b/package/utils/busybox/Config-defaults.in
index 8d237ad181..04148df267 100644
--- a/package/utils/busybox/Config-defaults.in
+++ b/package/utils/busybox/Config-defaults.in
@@ -85,9 +85,6 @@ config BUSYBOX_DEFAULT_FEATURE_SYSLOG_INFO
 config BUSYBOX_DEFAULT_FEATURE_SYSLOG
 	bool
 	default y
-config BUSYBOX_DEFAULT_PLATFORM_LINUX
-	bool
-	default y
 config BUSYBOX_DEFAULT_STATIC
 	bool
 	default n
@@ -130,6 +127,9 @@ config BUSYBOX_DEFAULT_USE_PORTABLE_CODE
 config BUSYBOX_DEFAULT_STACK_OPTIMIZATION_386
 	bool
 	default n
+config BUSYBOX_DEFAULT_STATIC_LIBGCC
+	bool
+	default n
 config BUSYBOX_DEFAULT_INSTALL_APPLET_SYMLINKS
 	bool
 	default y
@@ -169,6 +169,9 @@ config BUSYBOX_DEFAULT_UNIT_TEST
 config BUSYBOX_DEFAULT_WERROR
 	bool
 	default n
+config BUSYBOX_DEFAULT_WARN_SIMPLE_MSG
+	bool
+	default n
 config BUSYBOX_DEFAULT_NO_DEBUG_LIB
 	bool
 	default y
@@ -872,6 +875,9 @@ config BUSYBOX_DEFAULT_USLEEP
 config BUSYBOX_DEFAULT_UUDECODE
 	bool
 	default n
+config BUSYBOX_DEFAULT_BASE32
+	bool
+	default n
 config BUSYBOX_DEFAULT_BASE64
 	bool
 	default n
@@ -1160,6 +1166,9 @@ config BUSYBOX_DEFAULT_FEATURE_FIND_QUIT
 config BUSYBOX_DEFAULT_FEATURE_FIND_DELETE
 	bool
 	default n
+config BUSYBOX_DEFAULT_FEATURE_FIND_EMPTY
+	bool
+	default n
 config BUSYBOX_DEFAULT_FEATURE_FIND_PATH
 	bool
 	default y
@@ -1565,9 +1574,6 @@ config BUSYBOX_DEFAULT_FEATURE_GETOPT_LONG
 config BUSYBOX_DEFAULT_HEXDUMP
 	bool
 	default y
-config BUSYBOX_DEFAULT_FEATURE_HEXDUMP_REVERSE
-	bool
-	default n
 config BUSYBOX_DEFAULT_HD
 	bool
 	default n
@@ -1778,6 +1784,9 @@ config BUSYBOX_DEFAULT_TASKSET
 config BUSYBOX_DEFAULT_FEATURE_TASKSET_FANCY
 	bool
 	default n
+config BUSYBOX_DEFAULT_FEATURE_TASKSET_CPULIST
+	bool
+	default n
 config BUSYBOX_DEFAULT_UEVENT
 	bool
 	default n
@@ -1814,6 +1823,9 @@ config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_BTRFS
 config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_CRAMFS
 	bool
 	default n
+config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EROFS
+	bool
+	default n
 config BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EXFAT
 	bool
 	default n
@@ -2096,6 +2108,9 @@ config BUSYBOX_DEFAULT_MAN
 config BUSYBOX_DEFAULT_MICROCOM
 	bool
 	default n
+config BUSYBOX_DEFAULT_MIM
+	bool
+	default n
 config BUSYBOX_DEFAULT_MT
 	bool
 	default n
@@ -2268,6 +2283,18 @@ config BUSYBOX_DEFAULT_FEATURE_HTTPD_PROXY
 config BUSYBOX_DEFAULT_FEATURE_HTTPD_GZIP
 	bool
 	default n
+config BUSYBOX_DEFAULT_FEATURE_HTTPD_ETAG
+	bool
+	default n
+config BUSYBOX_DEFAULT_FEATURE_HTTPD_LAST_MODIFIED
+	bool
+	default n
+config BUSYBOX_DEFAULT_FEATURE_HTTPD_DATE
+	bool
+	default n
+config BUSYBOX_DEFAULT_FEATURE_HTTPD_ACL_IP
+	bool
+	default n
 config BUSYBOX_DEFAULT_IFCONFIG
 	bool
 	default y
@@ -2892,6 +2919,9 @@ config BUSYBOX_DEFAULT_BASH_IS_HUSH
 config BUSYBOX_DEFAULT_BASH_IS_NONE
 	bool
 	default y
+config BUSYBOX_DEFAULT_SHELL_ASH
+	bool
+	default y
 config BUSYBOX_DEFAULT_ASH
 	bool
 	default y
@@ -2952,6 +2982,9 @@ config BUSYBOX_DEFAULT_CTTYHACK
 config BUSYBOX_DEFAULT_HUSH
 	bool
 	default n
+config BUSYBOX_DEFAULT_SHELL_HUSH
+	bool
+	default n
 config BUSYBOX_DEFAULT_HUSH_BASH_COMPAT
 	bool
 	default n
@@ -3114,6 +3147,9 @@ config BUSYBOX_DEFAULT_FEATURE_SYSLOGD_DUP
 config BUSYBOX_DEFAULT_FEATURE_SYSLOGD_CFG
 	bool
 	default n
+config BUSYBOX_DEFAULT_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS
+	bool
+	default n
 config BUSYBOX_DEFAULT_FEATURE_SYSLOGD_READ_BUFFER_SIZE
 	int
 	default 0
diff --git a/package/utils/busybox/Makefile b/package/utils/busybox/Makefile
index e62cef0713..ac921b69ec 100644
--- a/package/utils/busybox/Makefile
+++ b/package/utils/busybox/Makefile
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=busybox
-PKG_VERSION:=1.31.1
-PKG_RELEASE:=8
+PKG_VERSION:=1.33.0
+PKG_RELEASE:=1
 PKG_FLAGS:=essential
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=https://www.busybox.net/downloads \
 		http://sources.buildroot.net
-PKG_HASH:=d0f940a72f648943c1f2211e0e3117387c31d765137d92bd8284a3fb9752a998
+PKG_HASH:=d568681c91a85edc6710770cebc1e80e042ad74d305b5c2e6d57a5f3de3b8fbd
 
 PKG_BUILD_DEPENDS:=BUSYBOX_CONFIG_PAM:libpam
 PKG_BUILD_PARALLEL:=1
diff --git a/package/utils/busybox/config/Config.in b/package/utils/busybox/config/Config.in
index 03af3464f9..f30629839e 100644
--- a/package/utils/busybox/config/Config.in
+++ b/package/utils/busybox/config/Config.in
@@ -155,12 +155,13 @@ config BUSYBOX_CONFIG_FEATURE_PIDFILE
 config BUSYBOX_CONFIG_PID_FILE_PATH
 	string "Directory for pidfiles"
 	default BUSYBOX_DEFAULT_PID_FILE_PATH
-	depends on BUSYBOX_CONFIG_FEATURE_PIDFILE
+	depends on BUSYBOX_CONFIG_FEATURE_PIDFILE || BUSYBOX_CONFIG_FEATURE_CROND_SPECIAL_TIMES
 	help
 	This is the default path where pidfiles are created.  Applets which
 	allow you to set the pidfile path on the command line will override
 	this value.  The option has no effect on applets that require you to
-	specify a pidfile path.
+	specify a pidfile path.  When crond has the 'Support special times'
+	option enabled, the 'crond.reboot' file is also stored here.
 
 config BUSYBOX_CONFIG_BUSYBOX
 	bool "Include busybox applet"
@@ -310,7 +311,6 @@ config BUSYBOX_CONFIG_BUSYBOX_EXEC_PATH
 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.
@@ -356,17 +356,6 @@ config BUSYBOX_CONFIG_FEATURE_SYSLOG
 	#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.
-	#
-	#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
@@ -539,6 +528,14 @@ config BUSYBOX_CONFIG_STACK_OPTIMIZATION_386
 	do not work with it (they use SSE instructions without
 	ensuring stack alignment).
 
+config BUSYBOX_CONFIG_STATIC_LIBGCC
+	bool "Use -static-libgcc"
+	default BUSYBOX_DEFAULT_STATIC_LIBGCC
+	help
+	This option instructs gcc to link in a static version of its
+	support library, libgcc. This means that the binary will require
+	one fewer dynamic library at run time.
+
 comment 'Installation Options ("make install" behavior)'
 
 choice
@@ -660,6 +657,19 @@ config BUSYBOX_CONFIG_WERROR
 
 	Most people should answer N.
 
+config BUSYBOX_CONFIG_WARN_SIMPLE_MSG
+	bool "Warn about single parameter bb_xx_msg calls"
+	default BUSYBOX_DEFAULT_WARN_SIMPLE_MSG
+	help
+	This will cause warnings to be shown for any instances of
+	bb_error_msg(), bb_error_msg_and_die(), bb_perror_msg(),
+	bb_perror_msg_and_die(), bb_herror_msg() or bb_herror_msg_and_die()
+	being called with a single parameter. In these cases the equivalent
+	bb_simple_xx_msg function should be used instead.
+	Note that use of STRERROR_FMT may give false positives.
+
+	If you aren't developing busybox, say N here.
+
 choice
 	prompt "Additional debugging library"
 	default BUSYBOX_CONFIG_NO_DEBUG_LIB
diff --git a/package/utils/busybox/config/archival/Config.in b/package/utils/busybox/config/archival/Config.in
index 64e4601a86..ea167a46af 100644
--- a/package/utils/busybox/config/archival/Config.in
+++ b/package/utils/busybox/config/archival/Config.in
@@ -256,7 +256,7 @@ config BUSYBOX_CONFIG_FEATURE_GZIP_LEVELS
 	help
 	Enable support for compression levels 4-9. The default level
 	is 6. If levels 1-3 are specified, 4 is used.
-	If this option is not selected, -N options are ignored and -9
+	If this option is not selected, -N options are ignored and -6
 	is used.
 
 config BUSYBOX_CONFIG_FEATURE_GZIP_DECOMPRESS
diff --git a/package/utils/busybox/config/console-tools/Config.in b/package/utils/busybox/config/console-tools/Config.in
index 9f8a257ebe..cf224e5e2e 100644
--- a/package/utils/busybox/config/console-tools/Config.in
+++ b/package/utils/busybox/config/console-tools/Config.in
@@ -9,7 +9,6 @@ menu "Console Utilities"
 config BUSYBOX_CONFIG_CHVT
 	bool "chvt (2 kb)"
 	default BUSYBOX_DEFAULT_CHVT
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This program is used to change to another terminal.
 	Example: chvt 4 (change to terminal /dev/tty4)
@@ -21,39 +20,33 @@ config BUSYBOX_CONFIG_CLEAR
 config BUSYBOX_CONFIG_DEALLOCVT
 	bool "deallocvt (1.9 kb)"
 	default BUSYBOX_DEFAULT_DEALLOCVT
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This program deallocates unused virtual consoles.
 config BUSYBOX_CONFIG_DUMPKMAP
 	bool "dumpkmap (1.6 kb)"
 	default BUSYBOX_DEFAULT_DUMPKMAP
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This program dumps the kernel's keyboard translation table to
 	stdout, in binary format. You can then use loadkmap to load it.
 config BUSYBOX_CONFIG_FGCONSOLE
 	bool "fgconsole (1.5 kb)"
 	default BUSYBOX_DEFAULT_FGCONSOLE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This program prints active (foreground) console number.
 config BUSYBOX_CONFIG_KBD_MODE
 	bool "kbd_mode (4.1 kb)"
 	default BUSYBOX_DEFAULT_KBD_MODE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This program reports and sets keyboard mode.
 config BUSYBOX_CONFIG_LOADFONT
 	bool "loadfont (5.2 kb)"
 	default BUSYBOX_DEFAULT_LOADFONT
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This program loads a console font from standard input.
 
 config BUSYBOX_CONFIG_SETFONT
 	bool "setfont (24 kb)"
 	default BUSYBOX_DEFAULT_SETFONT
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Allows to load console screen map. Useful for i18n.
 
@@ -87,14 +80,12 @@ config BUSYBOX_CONFIG_FEATURE_LOADFONT_RAW
 config BUSYBOX_CONFIG_LOADKMAP
 	bool "loadkmap (1.8 kb)"
 	default BUSYBOX_DEFAULT_LOADKMAP
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This program loads a keyboard translation table from
 	standard input.
 config BUSYBOX_CONFIG_OPENVT
 	bool "openvt (7.2 kb)"
 	default BUSYBOX_DEFAULT_OPENVT
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This program is used to start a command on an unused
 	virtual terminal.
@@ -123,7 +114,6 @@ config BUSYBOX_CONFIG_FEATURE_RESIZE_PRINT
 config BUSYBOX_CONFIG_SETCONSOLE
 	bool "setconsole (3.6 kb)"
 	default BUSYBOX_DEFAULT_SETCONSOLE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Redirect writes to /dev/console to another device,
 	like the current tty while logged in via telnet.
@@ -137,20 +127,17 @@ config BUSYBOX_CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS
 config BUSYBOX_CONFIG_SETKEYCODES
 	bool "setkeycodes (2.1 kb)"
 	default BUSYBOX_DEFAULT_SETKEYCODES
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This program loads entries into the kernel's scancode-to-keycode
 	map, allowing unusual keyboards to generate usable keycodes.
 config BUSYBOX_CONFIG_SETLOGCONS
 	bool "setlogcons (1.8 kb)"
 	default BUSYBOX_DEFAULT_SETLOGCONS
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This program redirects the output console of kernel messages.
 config BUSYBOX_CONFIG_SHOWKEY
 	bool "showkey (4.7 kb)"
 	default BUSYBOX_DEFAULT_SHOWKEY
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Shows keys pressed.
 
diff --git a/package/utils/busybox/config/coreutils/Config.in b/package/utils/busybox/config/coreutils/Config.in
index c5cd54d7f6..e256ca36f5 100644
--- a/package/utils/busybox/config/coreutils/Config.in
+++ b/package/utils/busybox/config/coreutils/Config.in
@@ -110,12 +110,10 @@ config BUSYBOX_CONFIG_FEATURE_DATE_ISOFMT
 	Enable option (-I) to output an ISO-8601 compliant
 	date/time string.
 
-# defaults to "no": stat's nanosecond field is a bit non-portable
 config BUSYBOX_CONFIG_FEATURE_DATE_NANO
 	bool "Support %[num]N nanosecond format specifier"
-	default BUSYBOX_DEFAULT_FEATURE_DATE_NANO  # syscall(__NR_clock_gettime)
+	default BUSYBOX_DEFAULT_FEATURE_DATE_NANO # stat's nanosecond field is a bit non-portable
 	depends on BUSYBOX_CONFIG_DATE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Support %[num]N format specifier. Adds ~250 bytes of code.
 
@@ -636,7 +634,6 @@ 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.
@@ -837,6 +834,11 @@ config BUSYBOX_CONFIG_UUDECODE
 	default BUSYBOX_DEFAULT_UUDECODE
 	help
 	uudecode is used to decode a uuencoded file.
+config BUSYBOX_CONFIG_BASE32
+	bool "base32 (4.9 kb)"
+	default BUSYBOX_DEFAULT_BASE32
+	help
+	Base32 encode and decode
 config BUSYBOX_CONFIG_BASE64
 	bool "base64 (4.9 kb)"
 	default BUSYBOX_DEFAULT_BASE64
diff --git a/package/utils/busybox/config/e2fsprogs/Config.in b/package/utils/busybox/config/e2fsprogs/Config.in
index 19713acd3e..4a9aa2ab4e 100644
--- a/package/utils/busybox/config/e2fsprogs/Config.in
+++ b/package/utils/busybox/config/e2fsprogs/Config.in
@@ -21,7 +21,6 @@ config BUSYBOX_CONFIG_FSCK
 config BUSYBOX_CONFIG_LSATTR
 	bool "lsattr (5.5 kb)"
 	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
diff --git a/package/utils/busybox/config/findutils/Config.in b/package/utils/busybox/config/findutils/Config.in
index bebcbb39ef..89901ca59d 100644
--- a/package/utils/busybox/config/findutils/Config.in
+++ b/package/utils/busybox/config/findutils/Config.in
@@ -159,6 +159,14 @@ config BUSYBOX_CONFIG_FEATURE_FIND_DELETE
 	WARNING: This option can do much harm if used wrong. Busybox will not
 	try to protect the user from doing stupid things. Use with care.
 
+config BUSYBOX_CONFIG_FEATURE_FIND_EMPTY
+	bool "Enable -empty: match empty files or directories"
+	default BUSYBOX_DEFAULT_FEATURE_FIND_EMPTY
+	depends on BUSYBOX_CONFIG_FIND
+	help
+	Support the 'find -empty' option to find empty regular files
+	or directories.
+
 config BUSYBOX_CONFIG_FEATURE_FIND_PATH
 	bool "Enable -path: match pathname with shell pattern"
 	default BUSYBOX_DEFAULT_FEATURE_FIND_PATH
diff --git a/package/utils/busybox/config/klibc-utils/Config.in b/package/utils/busybox/config/klibc-utils/Config.in
index 95e15b6def..408c9f695d 100644
--- a/package/utils/busybox/config/klibc-utils/Config.in
+++ b/package/utils/busybox/config/klibc-utils/Config.in
@@ -24,7 +24,6 @@ config BUSYBOX_CONFIG_RESUME
 config BUSYBOX_CONFIG_RUN_INIT
 	bool "run-init (7.7 kb)"
 	default BUSYBOX_DEFAULT_RUN_INIT
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	The run-init utility is used from initramfs to select a new
 	root device. Under initramfs, you have to use this instead of
diff --git a/package/utils/busybox/config/libbb/Config.in b/package/utils/busybox/config/libbb/Config.in
index f476e86073..906649c5c9 100644
--- a/package/utils/busybox/config/libbb/Config.in
+++ b/package/utils/busybox/config/libbb/Config.in
@@ -390,7 +390,6 @@ config BUSYBOX_CONFIG_FEATURE_VERBOSE_CP_MESSAGE
 config BUSYBOX_CONFIG_FEATURE_USE_SENDFILE
 	bool "Use sendfile system call"
 	default BUSYBOX_DEFAULT_FEATURE_USE_SENDFILE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	When enabled, busybox will use the kernel sendfile() function
 	instead of read/write loops to copy data between file descriptors
@@ -432,7 +431,6 @@ config BUSYBOX_CONFIG_FEATURE_SKIP_ROOTFS
 config BUSYBOX_CONFIG_MONOTONIC_SYSCALL
 	bool "Use clock_gettime(CLOCK_MONOTONIC) syscall"
 	default BUSYBOX_DEFAULT_MONOTONIC_SYSCALL
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring
 	time intervals (time, ping, traceroute etc need this).
diff --git a/package/utils/busybox/config/miscutils/Config.in b/package/utils/busybox/config/miscutils/Config.in
index 6ce6d2d7e3..f3b29787d1 100644
--- a/package/utils/busybox/config/miscutils/Config.in
+++ b/package/utils/busybox/config/miscutils/Config.in
@@ -9,7 +9,6 @@ menu "Miscellaneous Utilities"
 config BUSYBOX_CONFIG_ADJTIMEX
 	bool "adjtimex (4.7 kb)"
 	default BUSYBOX_DEFAULT_ADJTIMEX
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Adjtimex reads and optionally sets adjustment parameters for
 	the Linux clock adjustment algorithm.
@@ -122,7 +121,6 @@ endif
 config BUSYBOX_CONFIG_BEEP
 	bool "beep (2.4 kb)"
 	default BUSYBOX_DEFAULT_BEEP
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	The beep applets beeps in a given freq/Hz.
 
@@ -210,7 +208,6 @@ config BUSYBOX_CONFIG_FEATURE_CHAT_CLR_ABORT
 config BUSYBOX_CONFIG_CONSPY
 	bool "conspy (10 kb)"
 	default BUSYBOX_DEFAULT_CONSPY
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	A text-mode VNC like program for Linux virtual terminals.
 	example:  conspy NUM      shared access to console num
@@ -276,7 +273,6 @@ config BUSYBOX_CONFIG_CRONTAB
 config BUSYBOX_CONFIG_DEVFSD
 	bool "devfsd (obsolete)"
 	default BUSYBOX_DEFAULT_DEVFSD
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
 	This is deprecated and should NOT be used anymore.
@@ -319,7 +315,6 @@ config BUSYBOX_CONFIG_DEVFSD_VERBOSE
 config BUSYBOX_CONFIG_FEATURE_DEVFS
 	bool "Use devfs names for all devices (obsolete)"
 	default BUSYBOX_DEFAULT_FEATURE_DEVFS
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This is obsolete and should NOT be used anymore.
 	Use linux >= 2.6 (optionally with hotplug) and mdev instead!
@@ -337,7 +332,6 @@ config BUSYBOX_CONFIG_DEVMEM
 config BUSYBOX_CONFIG_FBSPLASH
 	bool "fbsplash (26 kb)"
 	default BUSYBOX_DEFAULT_FBSPLASH
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Shows splash image and progress bar on framebuffer device.
 	Can be used during boot phase of an embedded device.
@@ -383,7 +377,6 @@ config BUSYBOX_CONFIG_FLASHCP
 config BUSYBOX_CONFIG_HDPARM
 	bool "hdparm (25 kb)"
 	default BUSYBOX_DEFAULT_HDPARM
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Get/Set hard drive parameters. Primarily intended for ATA
 	drives.
@@ -445,35 +438,30 @@ config BUSYBOX_CONFIG_HEXEDIT
 config BUSYBOX_CONFIG_I2CGET
 	bool "i2cget (5.5 kb)"
 	default BUSYBOX_DEFAULT_I2CGET
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Read from I2C/SMBus chip registers.
 
 config BUSYBOX_CONFIG_I2CSET
 	bool "i2cset (6.7 kb)"
 	default BUSYBOX_DEFAULT_I2CSET
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Set I2C registers.
 
 config BUSYBOX_CONFIG_I2CDUMP
 	bool "i2cdump (7.1 kb)"
 	default BUSYBOX_DEFAULT_I2CDUMP
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Examine I2C registers.
 
 config BUSYBOX_CONFIG_I2CDETECT
 	bool "i2cdetect (7.1 kb)"
 	default BUSYBOX_DEFAULT_I2CDETECT
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Detect I2C chips.
 
 config BUSYBOX_CONFIG_I2CTRANSFER
 	bool "i2ctransfer (4.0 kb)"
 	default BUSYBOX_DEFAULT_I2CTRANSFER
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Send user-defined I2C messages in one transfer.
 
@@ -587,7 +575,6 @@ config BUSYBOX_CONFIG_LOCK
 config BUSYBOX_CONFIG_LSSCSI
 	bool "lsscsi (2.5 kb)"
 	default BUSYBOX_DEFAULT_LSSCSI
-	#select PLATFORM_LINUX
 	help
 	lsscsi is a utility for displaying information about SCSI buses in the
 	system and devices connected to them.
@@ -634,6 +621,13 @@ config BUSYBOX_CONFIG_MICROCOM
 	default BUSYBOX_DEFAULT_MICROCOM
 	help
 	The poor man's minicom utility for chatting with serial port devices.
+config BUSYBOX_CONFIG_MIM
+	bool "mim (0.5 kb)"
+	default BUSYBOX_DEFAULT_MIM
+	depends on BUSYBOX_CONFIG_FEATURE_SH_EMBEDDED_SCRIPTS
+	help
+	Run a script from a Makefile-like specification file.
+	Unlike 'make' dependencies aren't supported.
 config BUSYBOX_CONFIG_MT
 	bool "mt (2.5 kb)"
 	default BUSYBOX_DEFAULT_MT
@@ -644,26 +638,22 @@ config BUSYBOX_CONFIG_MT
 config BUSYBOX_CONFIG_NANDWRITE
 	bool "nandwrite (4.8 kb)"
 	default BUSYBOX_DEFAULT_NANDWRITE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Write to the specified MTD device, with bad blocks awareness
 
 config BUSYBOX_CONFIG_NANDDUMP
 	bool "nanddump (5.2 kb)"
 	default BUSYBOX_DEFAULT_NANDDUMP
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Dump the content of raw NAND chip
 config BUSYBOX_CONFIG_PARTPROBE
 	bool "partprobe (3.5 kb)"
 	default BUSYBOX_DEFAULT_PARTPROBE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Ask kernel to rescan partition table.
 config BUSYBOX_CONFIG_RAIDAUTORUN
 	bool "raidautorun (1.3 kb)"
 	default BUSYBOX_DEFAULT_RAIDAUTORUN
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	raidautorun tells the kernel md driver to
 	search and start RAID arrays.
@@ -671,7 +661,6 @@ config BUSYBOX_CONFIG_READAHEAD
 	bool "readahead (1.5 kb)"
 	default BUSYBOX_DEFAULT_READAHEAD
 	depends on BUSYBOX_CONFIG_LFS
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Preload the files listed on the command line into RAM cache so that
 	subsequent reads on these files will not block on disk I/O.
@@ -687,7 +676,6 @@ config BUSYBOX_CONFIG_READAHEAD
 config BUSYBOX_CONFIG_RFKILL
 	bool "rfkill (4.4 kb)"
 	default BUSYBOX_DEFAULT_RFKILL # doesn't build on Ubuntu 9.04
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Enable/disable wireless devices.
 
@@ -708,7 +696,6 @@ config BUSYBOX_CONFIG_RUNLEVEL
 config BUSYBOX_CONFIG_RX
 	bool "rx (2.9 kb)"
 	default BUSYBOX_DEFAULT_RX
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Receive files using the Xmodem protocol.
 config BUSYBOX_CONFIG_SETFATTR
@@ -719,7 +706,6 @@ config BUSYBOX_CONFIG_SETFATTR
 config BUSYBOX_CONFIG_SETSERIAL
 	bool "setserial (6.9 kb)"
 	default BUSYBOX_DEFAULT_SETSERIAL
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Retrieve or set Linux serial port.
 config BUSYBOX_CONFIG_STRINGS
@@ -749,48 +735,41 @@ config BUSYBOX_CONFIG_TTYSIZE
 config BUSYBOX_CONFIG_UBIATTACH
 	bool "ubiattach (4.2 kb)"
 	default BUSYBOX_DEFAULT_UBIATTACH
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Attach MTD device to an UBI device.
 
 config BUSYBOX_CONFIG_UBIDETACH
 	bool "ubidetach (4.1 kb)"
 	default BUSYBOX_DEFAULT_UBIDETACH
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Detach MTD device from an UBI device.
 
 config BUSYBOX_CONFIG_UBIMKVOL
 	bool "ubimkvol (5.3 kb)"
 	default BUSYBOX_DEFAULT_UBIMKVOL
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Create a UBI volume.
 
 config BUSYBOX_CONFIG_UBIRMVOL
 	bool "ubirmvol (4.9 kb)"
 	default BUSYBOX_DEFAULT_UBIRMVOL
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Delete a UBI volume.
 
 config BUSYBOX_CONFIG_UBIRSVOL
 	bool "ubirsvol (4.2 kb)"
 	default BUSYBOX_DEFAULT_UBIRSVOL
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Resize a UBI volume.
 
 config BUSYBOX_CONFIG_UBIUPDATEVOL
 	bool "ubiupdatevol (5.2 kb)"
 	default BUSYBOX_DEFAULT_UBIUPDATEVOL
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Update a UBI volume.
 config BUSYBOX_CONFIG_UBIRENAME
 	bool "ubirename (2.4 kb)"
 	default BUSYBOX_DEFAULT_UBIRENAME
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Utility to rename UBI volumes
 config BUSYBOX_CONFIG_VOLNAME
@@ -801,7 +780,6 @@ config BUSYBOX_CONFIG_VOLNAME
 config BUSYBOX_CONFIG_WATCHDOG
 	bool "watchdog (5.3 kb)"
 	default BUSYBOX_DEFAULT_WATCHDOG
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	The watchdog utility is used with hardware or software watchdog
 	device drivers. It opens the specified watchdog device special file
diff --git a/package/utils/busybox/config/modutils/Config.in b/package/utils/busybox/config/modutils/Config.in
index cc2d20813b..e3538081ea 100644
--- a/package/utils/busybox/config/modutils/Config.in
+++ b/package/utils/busybox/config/modutils/Config.in
@@ -37,7 +37,6 @@ config BUSYBOX_CONFIG_MODPROBE_SMALL
 config BUSYBOX_CONFIG_DEPMOD
 	bool "depmod (27 kb)"
 	default BUSYBOX_DEFAULT_DEPMOD
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	depmod generates modules.dep (and potentially modules.alias
 	and modules.symbols) that contain dependency information
@@ -45,13 +44,11 @@ config BUSYBOX_CONFIG_DEPMOD
 config BUSYBOX_CONFIG_INSMOD
 	bool "insmod (22 kb)"
 	default BUSYBOX_DEFAULT_INSMOD
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	insmod is used to load specified modules in the running kernel.
 config BUSYBOX_CONFIG_LSMOD
 	bool "lsmod (1.9 kb)"
 	default BUSYBOX_DEFAULT_LSMOD
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	lsmod is used to display a list of loaded modules.
 
@@ -66,13 +63,11 @@ config BUSYBOX_CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT
 config BUSYBOX_CONFIG_MODINFO
 	bool "modinfo (24 kb)"
 	default BUSYBOX_DEFAULT_MODINFO
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Show information about a Linux Kernel module
 config BUSYBOX_CONFIG_MODPROBE
 	bool "modprobe (28 kb)"
 	default BUSYBOX_DEFAULT_MODPROBE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Handle the loading of modules, and their dependencies on a high
 	level.
@@ -90,7 +85,6 @@ config BUSYBOX_CONFIG_FEATURE_MODPROBE_BLACKLIST
 config BUSYBOX_CONFIG_RMMOD
 	bool "rmmod (3.3 kb)"
 	default BUSYBOX_DEFAULT_RMMOD
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	rmmod is used to unload specified modules from the kernel.
 
diff --git a/package/utils/busybox/config/networking/Config.in b/package/utils/busybox/config/networking/Config.in
index f07a2d46e5..6608f5899d 100644
--- a/package/utils/busybox/config/networking/Config.in
+++ b/package/utils/busybox/config/networking/Config.in
@@ -61,19 +61,16 @@ config BUSYBOX_CONFIG_FEATURE_TLS_SHA1
 config BUSYBOX_CONFIG_ARP
 	bool "arp (10 kb)"
 	default BUSYBOX_DEFAULT_ARP
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Manipulate the system ARP cache.
 config BUSYBOX_CONFIG_ARPING
 	bool "arping (9 kb)"
 	default BUSYBOX_DEFAULT_ARPING
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Ping hosts by ARP packets.
 config BUSYBOX_CONFIG_BRCTL
 	bool "brctl (4.7 kb)"
 	default BUSYBOX_DEFAULT_BRCTL
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Manage ethernet bridges.
 	Supports addbr/delbr and addif/delif.
@@ -104,7 +101,6 @@ config BUSYBOX_CONFIG_DNSD
 config BUSYBOX_CONFIG_ETHER_WAKE
 	bool "ether-wake (4.9 kb)"
 	default BUSYBOX_DEFAULT_ETHER_WAKE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Send a magic packet to wake up sleeping machines.
 config BUSYBOX_CONFIG_FTPD
@@ -289,10 +285,47 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_GZIP
 	help
 	Makes httpd send files using GZIP content encoding if the
 	client supports it and a pre-compressed <file>.gz exists.
+
+config BUSYBOX_CONFIG_FEATURE_HTTPD_ETAG
+	bool "Support caching via ETag header"
+	default BUSYBOX_DEFAULT_FEATURE_HTTPD_ETAG
+	depends on BUSYBOX_CONFIG_HTTPD
+	help
+	If server responds with ETag then next time client (browser)
+	resend it via If-None-Match header.
+	Then httpd will check if file wasn't modified and if not,
+	return 304 Not Modified status code.
+	The ETag value is constructed from last modification date
+	in unix epoch, and size: "hex(last_mod)-hex(file_size)".
+	It's not completely reliable as hash functions but fair enough.
+
+config BUSYBOX_CONFIG_FEATURE_HTTPD_LAST_MODIFIED
+	bool "Add Last-Modified header to response"
+	default BUSYBOX_DEFAULT_FEATURE_HTTPD_LAST_MODIFIED
+	depends on BUSYBOX_CONFIG_HTTPD
+	help
+	The Last-Modified header is used for cache validation.
+	The client sends last seen mtime to server in If-Modified-Since.
+	Both headers MUST be an RFC 1123 formatted, which is hard to parse.
+	Use ETag header instead.
+
+config BUSYBOX_CONFIG_FEATURE_HTTPD_DATE
+	bool "Add Date header to response"
+	default BUSYBOX_DEFAULT_FEATURE_HTTPD_DATE
+	depends on BUSYBOX_CONFIG_HTTPD
+	help
+	RFC2616 says that server MUST add Date header to response.
+	But it is almost useless and can be omitted.
+
+config BUSYBOX_CONFIG_FEATURE_HTTPD_ACL_IP
+	bool "ACL IP"
+	default BUSYBOX_DEFAULT_FEATURE_HTTPD_ACL_IP
+	depends on BUSYBOX_CONFIG_HTTPD
+	help
+	Support IP deny/allow rules
 config BUSYBOX_CONFIG_IFCONFIG
 	bool "ifconfig (12 kb)"
 	default BUSYBOX_DEFAULT_IFCONFIG
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Ifconfig is used to configure the kernel-resident network interfaces.
 
@@ -339,14 +372,12 @@ config BUSYBOX_CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS
 config BUSYBOX_CONFIG_IFENSLAVE
 	bool "ifenslave (13 kb)"
 	default BUSYBOX_DEFAULT_IFENSLAVE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Userspace application to bind several interfaces
 	to a logical interface (use with kernel bonding driver).
 config BUSYBOX_CONFIG_IFPLUGD
 	bool "ifplugd (10 kb)"
 	default BUSYBOX_DEFAULT_IFPLUGD
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Network interface plug detection daemon.
 config BUSYBOX_CONFIG_IFUP
@@ -498,7 +529,6 @@ config BUSYBOX_CONFIG_FEATURE_INETD_RPC
 config BUSYBOX_CONFIG_IP
 	bool "ip (35 kb)"
 	default BUSYBOX_DEFAULT_IP
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	The "ip" applet is a TCP/IP interface configuration and routing
 	utility.
@@ -510,7 +540,6 @@ config BUSYBOX_CONFIG_IPADDR
 	bool "ipaddr (14 kb)"
 	default BUSYBOX_DEFAULT_IPADDR
 	select BUSYBOX_CONFIG_FEATURE_IP_ADDRESS
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Short form of "ip addr"
 
@@ -518,7 +547,6 @@ config BUSYBOX_CONFIG_IPLINK
 	bool "iplink (17 kb)"
 	default BUSYBOX_DEFAULT_IPLINK
 	select BUSYBOX_CONFIG_FEATURE_IP_LINK
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Short form of "ip link"
 
@@ -526,7 +554,6 @@ config BUSYBOX_CONFIG_IPROUTE
 	bool "iproute (15 kb)"
 	default BUSYBOX_DEFAULT_IPROUTE
 	select BUSYBOX_CONFIG_FEATURE_IP_ROUTE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Short form of "ip route"
 
@@ -534,7 +561,6 @@ config BUSYBOX_CONFIG_IPTUNNEL
 	bool "iptunnel (9.6 kb)"
 	default BUSYBOX_DEFAULT_IPTUNNEL
 	select BUSYBOX_CONFIG_FEATURE_IP_TUNNEL
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Short form of "ip tunnel"
 
@@ -542,7 +568,6 @@ config BUSYBOX_CONFIG_IPRULE
 	bool "iprule (10 kb)"
 	default BUSYBOX_DEFAULT_IPRULE
 	select BUSYBOX_CONFIG_FEATURE_IP_RULE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Short form of "ip rule"
 
@@ -550,7 +575,6 @@ config BUSYBOX_CONFIG_IPNEIGH
 	bool "ipneigh (8.3 kb)"
 	default BUSYBOX_DEFAULT_IPNEIGH
 	select BUSYBOX_CONFIG_FEATURE_IP_NEIGH
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Short form of "ip neigh"
 
@@ -641,7 +665,6 @@ config BUSYBOX_CONFIG_FAKEIDENTD
 config BUSYBOX_CONFIG_NAMEIF
 	bool "nameif (6.6 kb)"
 	default BUSYBOX_DEFAULT_NAMEIF
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
 	nameif is used to rename network interface by its MAC address.
@@ -718,7 +741,6 @@ config BUSYBOX_CONFIG_NETMSG
 config BUSYBOX_CONFIG_NETSTAT
 	bool "netstat (10 kb)"
 	default BUSYBOX_DEFAULT_NETSTAT
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	netstat prints information about the Linux networking subsystem.
 
@@ -768,7 +790,6 @@ config BUSYBOX_CONFIG_FEATURE_NSLOOKUP_OPENWRT_LONG_OPTIONS
 config BUSYBOX_CONFIG_NTPD
 	bool "ntpd (22 kb)"
 	default BUSYBOX_DEFAULT_NTPD
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	The NTP client/server daemon.
 
@@ -795,7 +816,6 @@ config BUSYBOX_CONFIG_FEATURE_NTP_AUTH
 config BUSYBOX_CONFIG_PING
 	bool "ping (10 kb)"
 	default BUSYBOX_DEFAULT_PING
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	ping uses the ICMP protocol's mandatory ECHO_REQUEST datagram to
 	elicit an ICMP ECHO_RESPONSE from a host or gateway.
@@ -823,13 +843,11 @@ config BUSYBOX_CONFIG_PSCAN
 config BUSYBOX_CONFIG_ROUTE
 	bool "route (8.7 kb)"
 	default BUSYBOX_DEFAULT_ROUTE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Route displays or manipulates the kernel's IP routing tables.
 config BUSYBOX_CONFIG_SLATTACH
 	bool "slattach (6.2 kb)"
 	default BUSYBOX_DEFAULT_SLATTACH
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	slattach configures serial line as SLIP network interface.
 config BUSYBOX_CONFIG_SSL_CLIENT
@@ -1029,7 +1047,6 @@ config BUSYBOX_CONFIG_TLS
 config BUSYBOX_CONFIG_TRACEROUTE
 	bool "traceroute (11 kb)"
 	default BUSYBOX_DEFAULT_TRACEROUTE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Utility to trace the route of IP packets.
 
@@ -1055,7 +1072,6 @@ config BUSYBOX_CONFIG_FEATURE_TRACEROUTE_USE_ICMP
 config BUSYBOX_CONFIG_TUNCTL
 	bool "tunctl (6.2 kb)"
 	default BUSYBOX_DEFAULT_TUNCTL
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	tunctl creates or deletes tun devices.
 
@@ -1069,7 +1085,6 @@ config BUSYBOX_CONFIG_FEATURE_TUNCTL_UG
 config BUSYBOX_CONFIG_VCONFIG
 	bool "vconfig (2.3 kb)"
 	default BUSYBOX_DEFAULT_VCONFIG
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Creates, removes, and configures VLAN interfaces
 config BUSYBOX_CONFIG_WGET
@@ -1154,6 +1169,9 @@ config BUSYBOX_CONFIG_FEATURE_WGET_HTTPS
 	patches, but do want to waste bandwidth expaining how wrong
 	it is, you will be ignored.
 
+	FEATURE_WGET_OPENSSL does implement TLS verification
+	using the certificates available to OpenSSL.
+
 config BUSYBOX_CONFIG_FEATURE_WGET_OPENSSL
 	bool "Try to connect to HTTPS using openssl"
 	default BUSYBOX_DEFAULT_FEATURE_WGET_OPENSSL
@@ -1178,6 +1196,9 @@ config BUSYBOX_CONFIG_FEATURE_WGET_OPENSSL
 	If openssl can't be executed, internal TLS code will be used
 	(if you enabled it); if openssl can be executed but fails later,
 	wget can't detect this, and download will fail.
+
+	By default TLS verification is performed, unless
+	--no-check-certificate option is passed.
 config BUSYBOX_CONFIG_WHOIS
 	bool "whois (6.3 kb)"
 	default BUSYBOX_DEFAULT_WHOIS
@@ -1186,7 +1207,6 @@ config BUSYBOX_CONFIG_WHOIS
 config BUSYBOX_CONFIG_ZCIP
 	bool "zcip (8.4 kb)"
 	default BUSYBOX_DEFAULT_ZCIP
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
 	ZCIP provides ZeroConf IPv4 address selection, according to RFC 3927.
diff --git a/package/utils/busybox/config/networking/udhcp/Config.in b/package/utils/busybox/config/networking/udhcp/Config.in
index 99d5bb9d21..9bede61499 100644
--- a/package/utils/busybox/config/networking/udhcp/Config.in
+++ b/package/utils/busybox/config/networking/udhcp/Config.in
@@ -7,7 +7,6 @@
 config BUSYBOX_CONFIG_UDHCPD
 	bool "udhcpd (21 kb)"
 	default BUSYBOX_DEFAULT_UDHCPD
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	udhcpd is a DHCP server geared primarily toward embedded systems,
 	while striving to be fully functional and RFC compliant.
@@ -63,7 +62,6 @@ config BUSYBOX_CONFIG_DHCPRELAY
 config BUSYBOX_CONFIG_UDHCPC
 	bool "udhcpc (24 kb)"
 	default BUSYBOX_DEFAULT_UDHCPC
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	udhcpc is a DHCP client geared primarily toward embedded systems,
 	while striving to be fully functional and RFC compliant.
diff --git a/package/utils/busybox/config/procps/Config.in b/package/utils/busybox/config/procps/Config.in
index 6a0d51f353..e6c3271254 100644
--- a/package/utils/busybox/config/procps/Config.in
+++ b/package/utils/busybox/config/procps/Config.in
@@ -9,7 +9,6 @@ menu "Process Utilities"
 config BUSYBOX_CONFIG_FREE
 	bool "free (3.1 kb)"
 	default BUSYBOX_DEFAULT_FREE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX #sysinfo()
 	help
 	free displays the total amount of free and used physical and swap
 	memory in the system, as well as the buffers used by the kernel.
@@ -144,7 +143,6 @@ config BUSYBOX_CONFIG_FEATURE_PS_TIME
 	bool "Enable -o time and -o etime specifiers"
 	default BUSYBOX_DEFAULT_FEATURE_PS_TIME
 	depends on (BUSYBOX_CONFIG_PS || BUSYBOX_CONFIG_MINIPS) && BUSYBOX_CONFIG_DESKTOP
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 
 config BUSYBOX_CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS
 	bool "Support Linux prior to 2.4.0 and non-ELF systems"
@@ -243,7 +241,6 @@ config BUSYBOX_CONFIG_FEATURE_TOPMEM
 config BUSYBOX_CONFIG_UPTIME
 	bool "uptime (3.7 kb)"
 	default BUSYBOX_DEFAULT_UPTIME
-	select BUSYBOX_CONFIG_PLATFORM_LINUX #sysinfo()
 	help
 	uptime gives a one line display of the current time, how long
 	the system has been running, how many users are currently logged
diff --git a/package/utils/busybox/config/shell/Config.in b/package/utils/busybox/config/shell/Config.in
index 1ae6eb042e..cb43bcd84c 100644
--- a/package/utils/busybox/config/shell/Config.in
+++ b/package/utils/busybox/config/shell/Config.in
@@ -18,6 +18,7 @@ choice
 config BUSYBOX_CONFIG_SH_IS_ASH
 	depends on !BUSYBOX_CONFIG_NOMMU
 	bool "ash"
+	select BUSYBOX_CONFIG_SHELL_ASH
 	help
 	Choose ash to be the shell executed by 'sh' name.
 	The ash code will be built into busybox. If you don't select
@@ -26,6 +27,7 @@ config BUSYBOX_CONFIG_SH_IS_ASH
 
 config BUSYBOX_CONFIG_SH_IS_HUSH
 	bool "hush"
+	select BUSYBOX_CONFIG_SHELL_HUSH
 	help
 	Choose hush to be the shell executed by 'sh' name.
 	The hush code will be built into busybox. If you don't select
@@ -58,6 +60,7 @@ choice
 config BUSYBOX_CONFIG_BASH_IS_ASH
 	depends on !BUSYBOX_CONFIG_NOMMU
 	bool "ash"
+	select BUSYBOX_CONFIG_SHELL_ASH
 	help
 	Choose ash to be the shell executed by 'bash' name.
 	The ash code will be built into busybox. If you don't select
@@ -66,6 +69,7 @@ config BUSYBOX_CONFIG_BASH_IS_ASH
 
 config BUSYBOX_CONFIG_BASH_IS_HUSH
 	bool "hush"
+	select BUSYBOX_CONFIG_SHELL_HUSH
 	help
 	Choose hush to be the shell executed by 'bash' name.
 	The hush code will be built into busybox. If you don't select
@@ -78,10 +82,15 @@ config BUSYBOX_CONFIG_BASH_IS_NONE
 endchoice
 
 
+config BUSYBOX_CONFIG_SHELL_ASH
+	bool #hidden option
+	depends on !BUSYBOX_CONFIG_NOMMU
+
 config BUSYBOX_CONFIG_ASH
 	bool "ash (78 kb)"
 	default BUSYBOX_DEFAULT_ASH
 	depends on !BUSYBOX_CONFIG_NOMMU
+	select BUSYBOX_CONFIG_SHELL_ASH
 	help
 	The most complete and most pedantically correct shell included with
 	busybox. This shell is actually a derivative of the Debian 'dash'
@@ -91,17 +100,17 @@ config BUSYBOX_CONFIG_ASH
 # ash options
 # note: Don't remove !NOMMU part in the next line; it would break
 # menuconfig's indenting.
-if !NOMMU && (BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH)
+if !NOMMU && (BUSYBOX_CONFIG_SHELL_ASH || BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH)
 
 config BUSYBOX_CONFIG_ASH_OPTIMIZE_FOR_SIZE
 	bool "Optimize for size instead of speed"
 	default BUSYBOX_DEFAULT_ASH_OPTIMIZE_FOR_SIZE
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
+	depends on BUSYBOX_CONFIG_SHELL_ASH
 
 config BUSYBOX_CONFIG_ASH_INTERNAL_GLOB
 	bool "Use internal glob() implementation"
 	default BUSYBOX_DEFAULT_ASH_INTERNAL_GLOB	# Y is bigger, but because of uclibc glob() bug, let Y be default for now
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
+	depends on BUSYBOX_CONFIG_SHELL_ASH
 	help
 	Do not use glob() function from libc, use internal implementation.
 	Use this if you are getting "glob.h: No such file or directory"
@@ -112,7 +121,7 @@ config BUSYBOX_CONFIG_ASH_INTERNAL_GLOB
 config BUSYBOX_CONFIG_ASH_BASH_COMPAT
 	bool "bash-compatible extensions"
 	default BUSYBOX_DEFAULT_ASH_BASH_COMPAT
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
+	depends on BUSYBOX_CONFIG_SHELL_ASH
 
 config BUSYBOX_CONFIG_ASH_BASH_SOURCE_CURDIR
 	bool "'source' and '.' builtins search current directory after $PATH"
@@ -133,17 +142,17 @@ config BUSYBOX_CONFIG_ASH_BASH_NOT_FOUND_HOOK
 config BUSYBOX_CONFIG_ASH_JOB_CONTROL
 	bool "Job control"
 	default BUSYBOX_DEFAULT_ASH_JOB_CONTROL
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
+	depends on BUSYBOX_CONFIG_SHELL_ASH
 
 config BUSYBOX_CONFIG_ASH_ALIAS
 	bool "Alias support"
 	default BUSYBOX_DEFAULT_ASH_ALIAS
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
+	depends on BUSYBOX_CONFIG_SHELL_ASH
 
 config BUSYBOX_CONFIG_ASH_RANDOM_SUPPORT
 	bool "Pseudorandom generator and $RANDOM variable"
 	default BUSYBOX_DEFAULT_ASH_RANDOM_SUPPORT
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
+	depends on BUSYBOX_CONFIG_SHELL_ASH
 	help
 	Enable pseudorandom generator and dynamic variable "$RANDOM".
 	Each read of "$RANDOM" will generate a new pseudorandom value.
@@ -154,7 +163,7 @@ config BUSYBOX_CONFIG_ASH_RANDOM_SUPPORT
 config BUSYBOX_CONFIG_ASH_EXPAND_PRMT
 	bool "Expand prompt string"
 	default BUSYBOX_DEFAULT_ASH_EXPAND_PRMT
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
+	depends on BUSYBOX_CONFIG_SHELL_ASH
 	help
 	$PS# may contain volatile content, such as backquote commands.
 	This option recreates the prompt string from the environment
@@ -163,14 +172,14 @@ config BUSYBOX_CONFIG_ASH_EXPAND_PRMT
 config BUSYBOX_CONFIG_ASH_IDLE_TIMEOUT
 	bool "Idle timeout variable $TMOUT"
 	default BUSYBOX_DEFAULT_ASH_IDLE_TIMEOUT
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
+	depends on BUSYBOX_CONFIG_SHELL_ASH
 	help
 	Enable bash-like auto-logout after $TMOUT seconds of idle time.
 
 config BUSYBOX_CONFIG_ASH_MAIL
 	bool "Check for new mail in interactive shell"
 	default BUSYBOX_DEFAULT_ASH_MAIL
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
+	depends on BUSYBOX_CONFIG_SHELL_ASH
 	help
 	Enable "check for new mail" function:
 	if set, $MAIL file and $MAILPATH list of files
@@ -180,32 +189,32 @@ config BUSYBOX_CONFIG_ASH_MAIL
 config BUSYBOX_CONFIG_ASH_ECHO
 	bool "echo builtin"
 	default BUSYBOX_DEFAULT_ASH_ECHO
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
+	depends on BUSYBOX_CONFIG_SHELL_ASH
 
 config BUSYBOX_CONFIG_ASH_PRINTF
 	bool "printf builtin"
 	default BUSYBOX_DEFAULT_ASH_PRINTF
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
+	depends on BUSYBOX_CONFIG_SHELL_ASH
 
 config BUSYBOX_CONFIG_ASH_TEST
 	bool "test builtin"
 	default BUSYBOX_DEFAULT_ASH_TEST
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
+	depends on BUSYBOX_CONFIG_SHELL_ASH
 
 config BUSYBOX_CONFIG_ASH_HELP
 	bool "help builtin"
 	default BUSYBOX_DEFAULT_ASH_HELP
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
+	depends on BUSYBOX_CONFIG_SHELL_ASH
 
 config BUSYBOX_CONFIG_ASH_GETOPTS
 	bool "getopts builtin"
 	default BUSYBOX_DEFAULT_ASH_GETOPTS
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
+	depends on BUSYBOX_CONFIG_SHELL_ASH
 
 config BUSYBOX_CONFIG_ASH_CMDCMD
 	bool "command builtin"
 	default BUSYBOX_DEFAULT_ASH_CMDCMD
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
+	depends on BUSYBOX_CONFIG_SHELL_ASH
 	help
 	Enable support for the 'command' builtin, which allows
 	you to run the specified command or builtin,
@@ -258,6 +267,7 @@ config BUSYBOX_CONFIG_CTTYHACK
 config BUSYBOX_CONFIG_HUSH
 	bool "hush (68 kb)"
 	default BUSYBOX_DEFAULT_HUSH
+	select BUSYBOX_CONFIG_SHELL_HUSH
 	help
 	hush is a small shell. It handles the normal flow control
 	constructs such as if/then/elif/else/fi, for/in/do/done, while loops,
@@ -269,10 +279,18 @@ config BUSYBOX_CONFIG_HUSH
 	It does not handle select, aliases, tilde expansion,
 	&>file and >&file redirection of stdout+stderr.
 
+config BUSYBOX_CONFIG_SHELL_HUSH
+	bool "Internal shell for embedded script support"
+	default BUSYBOX_DEFAULT_SHELL_HUSH
+
+# hush options
+# It's only needed to get "nice" menuconfig indenting.
+if SHELL_HUSH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+
 config BUSYBOX_CONFIG_HUSH_BASH_COMPAT
 	bool "bash-compatible extensions"
 	default BUSYBOX_DEFAULT_HUSH_BASH_COMPAT
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_HUSH_BRACE_EXPANSION
 	bool "Brace expansion"
@@ -296,7 +314,7 @@ config BUSYBOX_CONFIG_HUSH_BASH_SOURCE_CURDIR
 config BUSYBOX_CONFIG_HUSH_INTERACTIVE
 	bool "Interactive mode"
 	default BUSYBOX_DEFAULT_HUSH_INTERACTIVE
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 	help
 	Enable interactive mode (prompt and command editing).
 	Without this, hush simply reads and executes commands
@@ -322,31 +340,31 @@ config BUSYBOX_CONFIG_HUSH_JOB
 config BUSYBOX_CONFIG_HUSH_TICK
 	bool "Support command substitution"
 	default BUSYBOX_DEFAULT_HUSH_TICK
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 	help
 	Enable `command` and $(command).
 
 config BUSYBOX_CONFIG_HUSH_IF
 	bool "Support if/then/elif/else/fi"
 	default BUSYBOX_DEFAULT_HUSH_IF
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_HUSH_LOOPS
 	bool "Support for, while and until loops"
 	default BUSYBOX_DEFAULT_HUSH_LOOPS
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_HUSH_CASE
 	bool "Support case ... esac statement"
 	default BUSYBOX_DEFAULT_HUSH_CASE
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 	help
 	Enable case ... esac statement. +400 bytes.
 
 config BUSYBOX_CONFIG_HUSH_FUNCTIONS
 	bool "Support funcname() { commands; } syntax"
 	default BUSYBOX_DEFAULT_HUSH_FUNCTIONS
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 	help
 	Enable support for shell functions. +800 bytes.
 
@@ -360,7 +378,7 @@ config BUSYBOX_CONFIG_HUSH_LOCAL
 config BUSYBOX_CONFIG_HUSH_RANDOM_SUPPORT
 	bool "Pseudorandom generator and $RANDOM variable"
 	default BUSYBOX_DEFAULT_HUSH_RANDOM_SUPPORT
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 	help
 	Enable pseudorandom generator and dynamic variable "$RANDOM".
 	Each read of "$RANDOM" will generate a new pseudorandom value.
@@ -368,7 +386,7 @@ config BUSYBOX_CONFIG_HUSH_RANDOM_SUPPORT
 config BUSYBOX_CONFIG_HUSH_MODE_X
 	bool "Support 'hush -x' option and 'set -x' command"
 	default BUSYBOX_DEFAULT_HUSH_MODE_X
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 	help
 	This instructs hush to print commands before execution.
 	Adds ~300 bytes.
@@ -376,27 +394,27 @@ config BUSYBOX_CONFIG_HUSH_MODE_X
 config BUSYBOX_CONFIG_HUSH_ECHO
 	bool "echo builtin"
 	default BUSYBOX_DEFAULT_HUSH_ECHO
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_HUSH_PRINTF
 	bool "printf builtin"
 	default BUSYBOX_DEFAULT_HUSH_PRINTF
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_HUSH_TEST
 	bool "test builtin"
 	default BUSYBOX_DEFAULT_HUSH_TEST
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_HUSH_HELP
 	bool "help builtin"
 	default BUSYBOX_DEFAULT_HUSH_HELP
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_HUSH_EXPORT
 	bool "export builtin"
 	default BUSYBOX_DEFAULT_HUSH_EXPORT
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_HUSH_EXPORT_N
 	bool "Support 'export -n' option"
@@ -408,83 +426,85 @@ config BUSYBOX_CONFIG_HUSH_EXPORT_N
 config BUSYBOX_CONFIG_HUSH_READONLY
 	bool "readonly builtin"
 	default BUSYBOX_DEFAULT_HUSH_READONLY
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 	help
 	Enable support for read-only variables.
 
 config BUSYBOX_CONFIG_HUSH_KILL
 	bool "kill builtin (supports kill %jobspec)"
 	default BUSYBOX_DEFAULT_HUSH_KILL
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_HUSH_WAIT
 	bool "wait builtin"
 	default BUSYBOX_DEFAULT_HUSH_WAIT
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_HUSH_COMMAND
 	bool "command builtin"
 	default BUSYBOX_DEFAULT_HUSH_COMMAND
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_HUSH_TRAP
 	bool "trap builtin"
 	default BUSYBOX_DEFAULT_HUSH_TRAP
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_HUSH_TYPE
 	bool "type builtin"
 	default BUSYBOX_DEFAULT_HUSH_TYPE
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_HUSH_TIMES
 	bool "times builtin"
 	default BUSYBOX_DEFAULT_HUSH_TIMES
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_HUSH_READ
 	bool "read builtin"
 	default BUSYBOX_DEFAULT_HUSH_READ
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_HUSH_SET
 	bool "set builtin"
 	default BUSYBOX_DEFAULT_HUSH_SET
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_HUSH_UNSET
 	bool "unset builtin"
 	default BUSYBOX_DEFAULT_HUSH_UNSET
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_HUSH_ULIMIT
 	bool "ulimit builtin"
 	default BUSYBOX_DEFAULT_HUSH_ULIMIT
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_HUSH_UMASK
 	bool "umask builtin"
 	default BUSYBOX_DEFAULT_HUSH_UMASK
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_HUSH_GETOPTS
 	bool "getopts builtin"
 	default BUSYBOX_DEFAULT_HUSH_GETOPTS
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_HUSH_MEMLEAK
 	bool "memleak builtin (debugging)"
 	default BUSYBOX_DEFAULT_HUSH_MEMLEAK
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_HUSH
+
+endif # hush options
 
 
 comment "Options common to all shells"
-if ASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+if BUSYBOX_CONFIG_SHELL_ASH || BUSYBOX_CONFIG_SHELL_HUSH
 
 config BUSYBOX_CONFIG_FEATURE_SH_MATH
 	bool "POSIX math support"
 	default BUSYBOX_DEFAULT_FEATURE_SH_MATH
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_ASH || BUSYBOX_CONFIG_SHELL_HUSH
 	help
 	Enable math support in the shell via $((...)) syntax.
 
@@ -505,14 +525,14 @@ config BUSYBOX_CONFIG_FEATURE_SH_MATH_BASE
 config BUSYBOX_CONFIG_FEATURE_SH_EXTRA_QUIET
 	bool "Hide message on interactive shell startup"
 	default BUSYBOX_DEFAULT_FEATURE_SH_EXTRA_QUIET
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_ASH || BUSYBOX_CONFIG_SHELL_HUSH
 	help
 	Remove the busybox introduction when starting a shell.
 
 config BUSYBOX_CONFIG_FEATURE_SH_STANDALONE
 	bool "Standalone shell"
 	default BUSYBOX_DEFAULT_FEATURE_SH_STANDALONE
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_ASH || BUSYBOX_CONFIG_SHELL_HUSH
 	help
 	This option causes busybox shells to use busybox applets
 	in preference to executables in the PATH whenever possible. For
@@ -533,7 +553,7 @@ config BUSYBOX_CONFIG_FEATURE_SH_STANDALONE
 config BUSYBOX_CONFIG_FEATURE_SH_NOFORK
 	bool "Run 'nofork' applets directly"
 	default BUSYBOX_DEFAULT_FEATURE_SH_NOFORK
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_ASH || BUSYBOX_CONFIG_SHELL_HUSH
 	help
 	This option causes busybox shells to not execute typical
 	fork/exec/wait sequence, but call <applet>_main directly,
@@ -551,14 +571,14 @@ config BUSYBOX_CONFIG_FEATURE_SH_NOFORK
 config BUSYBOX_CONFIG_FEATURE_SH_READ_FRAC
 	bool "read -t N.NNN support (+110 bytes)"
 	default BUSYBOX_DEFAULT_FEATURE_SH_READ_FRAC
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_ASH || BUSYBOX_CONFIG_SHELL_HUSH
 	help
 	Enable support for fractional second timeout in read builtin.
 
 config BUSYBOX_CONFIG_FEATURE_SH_HISTFILESIZE
 	bool "Use $HISTFILESIZE"
 	default BUSYBOX_DEFAULT_FEATURE_SH_HISTFILESIZE
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_ASH || BUSYBOX_CONFIG_SHELL_HUSH
 	help
 	This option makes busybox shells to use $HISTFILESIZE variable
 	to set shell history size. Note that its max value is capped
@@ -567,7 +587,7 @@ config BUSYBOX_CONFIG_FEATURE_SH_HISTFILESIZE
 config BUSYBOX_CONFIG_FEATURE_SH_EMBEDDED_SCRIPTS
 	bool "Embed scripts in the binary"
 	default BUSYBOX_DEFAULT_FEATURE_SH_EMBEDDED_SCRIPTS
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_SHELL_ASH || BUSYBOX_CONFIG_SHELL_HUSH
 	help
 	Allow scripts to be compressed and embedded in the busybox
 	binary. The scripts should be placed in the 'embed' directory
diff --git a/package/utils/busybox/config/sysklogd/Config.in b/package/utils/busybox/config/sysklogd/Config.in
index 33a5e8238a..1aa2ea005f 100644
--- a/package/utils/busybox/config/sysklogd/Config.in
+++ b/package/utils/busybox/config/sysklogd/Config.in
@@ -23,7 +23,6 @@ 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
@@ -116,6 +115,14 @@ config BUSYBOX_CONFIG_FEATURE_SYSLOGD_CFG
 	help
 	Supports restricted syslogd config. See docs/syslog.conf.txt
 
+config BUSYBOX_CONFIG_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS
+	bool "Include milliseconds in timestamps"
+	default BUSYBOX_DEFAULT_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS
+	depends on BUSYBOX_CONFIG_SYSLOGD
+	help
+	Includes milliseconds (HH:MM:SS.mmm) in timestamp when
+	timestamps are added.
+
 config BUSYBOX_CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE
 	int "Read buffer size in bytes"
 	default BUSYBOX_DEFAULT_FEATURE_SYSLOGD_READ_BUFFER_SIZE
@@ -153,7 +160,6 @@ config BUSYBOX_CONFIG_FEATURE_KMSG_SYSLOG
 	bool "Linux kernel printk buffer support"
 	default BUSYBOX_DEFAULT_FEATURE_KMSG_SYSLOG
 	depends on BUSYBOX_CONFIG_SYSLOGD
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	When you enable this feature, the syslogd utility will
 	write system log message to the Linux kernel's printk buffer.
diff --git a/package/utils/busybox/config/util-linux/Config.in b/package/utils/busybox/config/util-linux/Config.in
index 1a3871e92c..e3e59f1506 100644
--- a/package/utils/busybox/config/util-linux/Config.in
+++ b/package/utils/busybox/config/util-linux/Config.in
@@ -9,7 +9,6 @@ menu "Linux System Utilities"
 config BUSYBOX_CONFIG_ACPID
 	bool "acpid (9 kb)"
 	default BUSYBOX_DEFAULT_ACPID
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	acpid listens to ACPI events coming either in textual form from
 	/proc/acpi/event (though it is marked deprecated it is still widely
@@ -31,13 +30,11 @@ config BUSYBOX_CONFIG_FEATURE_ACPID_COMPAT
 config BUSYBOX_CONFIG_BLKDISCARD
 	bool "blkdiscard (4.3 kb)"
 	default BUSYBOX_DEFAULT_BLKDISCARD
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	blkdiscard discards sectors on a given device.
 config BUSYBOX_CONFIG_BLKID
 	bool "blkid (12 kb)"
 	default BUSYBOX_DEFAULT_BLKID
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_VOLUMEID
 	help
 	Lists labels and UUIDs of all filesystems.
@@ -67,7 +64,6 @@ config BUSYBOX_CONFIG_CHRT
 config BUSYBOX_CONFIG_DMESG
 	bool "dmesg (3.7 kb)"
 	default BUSYBOX_DEFAULT_DMESG
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	dmesg is used to examine or control the kernel ring buffer. When the
 	Linux kernel prints messages to the system log, they are stored in
@@ -100,7 +96,6 @@ config BUSYBOX_CONFIG_FEATURE_DMESG_PRETTY
 config BUSYBOX_CONFIG_EJECT
 	bool "eject (4 kb)"
 	default BUSYBOX_DEFAULT_EJECT
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Used to eject cdroms. (defaults to /dev/cdrom)
 
@@ -119,13 +114,11 @@ config BUSYBOX_CONFIG_FALLOCATE
 config BUSYBOX_CONFIG_FATATTR
 	bool "fatattr (1.9 kb)"
 	default BUSYBOX_DEFAULT_FATATTR
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	fatattr lists or changes the file attributes on a fat file system.
 config BUSYBOX_CONFIG_FBSET
 	bool "fbset (5.9 kb)"
 	default BUSYBOX_DEFAULT_FBSET
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	fbset is used to show or change the settings of a Linux frame buffer
 	device. The frame buffer device provides a simple and unique
@@ -153,13 +146,11 @@ config BUSYBOX_CONFIG_FEATURE_FBSET_READMODE
 config BUSYBOX_CONFIG_FDFORMAT
 	bool "fdformat (4.4 kb)"
 	default BUSYBOX_DEFAULT_FDFORMAT
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	fdformat is used to low-level format a floppy disk.
 config BUSYBOX_CONFIG_FDISK
 	bool "fdisk (37 kb)"
 	default BUSYBOX_DEFAULT_FDISK
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	The fdisk utility is used to divide hard disks into one or more
 	logical disks, which are generally called partitions. This utility
@@ -233,7 +224,6 @@ config BUSYBOX_CONFIG_FEATURE_FDISK_ADVANCED
 config BUSYBOX_CONFIG_FINDFS
 	bool "findfs (12 kb)"
 	default BUSYBOX_DEFAULT_FINDFS
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_VOLUMEID
 	help
 	Prints the name of a filesystem with given label or UUID.
@@ -245,7 +235,6 @@ config BUSYBOX_CONFIG_FLOCK
 config BUSYBOX_CONFIG_FDFLUSH
 	bool "fdflush (1.3 kb)"
 	default BUSYBOX_DEFAULT_FDFLUSH
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	fdflush is only needed when changing media on slightly-broken
 	removable media drives. It is used to make Linux believe that a
@@ -258,7 +247,6 @@ config BUSYBOX_CONFIG_FDFLUSH
 config BUSYBOX_CONFIG_FREERAMDISK
 	bool "freeramdisk (1.3 kb)"
 	default BUSYBOX_DEFAULT_FREERAMDISK
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Linux allows you to create ramdisks. This utility allows you to
 	delete them and completely free all memory that was used for the
@@ -279,14 +267,12 @@ config BUSYBOX_CONFIG_FSCK_MINIX
 config BUSYBOX_CONFIG_FSFREEZE
 	bool "fsfreeze (3.5 kb)"
 	default BUSYBOX_DEFAULT_FSFREEZE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_LONG_OPTS
 	help
 	Halt new accesses and flush writes on a mounted filesystem.
 config BUSYBOX_CONFIG_FSTRIM
 	bool "fstrim (4.4 kb)"
 	default BUSYBOX_DEFAULT_FSTRIM
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Discard unused blocks on a mounted filesystem.
 config BUSYBOX_CONFIG_GETOPT
@@ -313,16 +299,6 @@ config BUSYBOX_CONFIG_HEXDUMP
 	The hexdump utility is used to display binary data in a readable
 	way that is comparable to the output from most hex editors.
 
-config BUSYBOX_CONFIG_FEATURE_HEXDUMP_REVERSE
-	bool "Support -R, reverse of 'hexdump -Cv'"
-	default BUSYBOX_DEFAULT_FEATURE_HEXDUMP_REVERSE
-	depends on BUSYBOX_CONFIG_HEXDUMP
-	help
-	The hexdump utility is used to display binary data in an ascii
-	readable way. This option creates binary data from an ascii input.
-	NB: this option is non-standard. It's unwise to use it in scripts
-	aimed to be portable.
-
 config BUSYBOX_CONFIG_HD
 	bool "hd (7.8 kb)"
 	default BUSYBOX_DEFAULT_HD
@@ -337,7 +313,6 @@ config BUSYBOX_CONFIG_XXD
 config BUSYBOX_CONFIG_HWCLOCK
 	bool "hwclock (5.8 kb)"
 	default BUSYBOX_DEFAULT_HWCLOCK
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	The hwclock utility is used to read and set the hardware clock
 	on a system. This is primarily used to set the current time on
@@ -358,7 +333,6 @@ config BUSYBOX_CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS
 config BUSYBOX_CONFIG_IONICE
 	bool "ionice (3.8 kb)"
 	default BUSYBOX_DEFAULT_IONICE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Set/set program io scheduling class and priority
 	Requires kernel >= 2.6.13
@@ -372,7 +346,6 @@ config BUSYBOX_CONFIG_IPCRM
 config BUSYBOX_CONFIG_IPCS
 	bool "ipcs (11 kb)"
 	default BUSYBOX_DEFAULT_IPCS
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	The ipcs utility is used to provide information on the currently
 	allocated System V interprocess (IPC) objects in the system.
@@ -393,7 +366,6 @@ config BUSYBOX_CONFIG_FEATURE_LAST_FANCY
 config BUSYBOX_CONFIG_LOSETUP
 	bool "losetup (5.5 kb)"
 	default BUSYBOX_DEFAULT_LOSETUP
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	losetup is used to associate or detach a loop device with a regular
 	file or block device, and to query the status of a loop device. This
@@ -401,7 +373,6 @@ config BUSYBOX_CONFIG_LOSETUP
 config BUSYBOX_CONFIG_LSPCI
 	bool "lspci (6.3 kb)"
 	default BUSYBOX_DEFAULT_LSPCI
-	#select PLATFORM_LINUX
 	help
 	lspci is a utility for displaying information about PCI buses in the
 	system and devices connected to them.
@@ -410,7 +381,6 @@ config BUSYBOX_CONFIG_LSPCI
 config BUSYBOX_CONFIG_LSUSB
 	bool "lsusb (4.2 kb)"
 	default BUSYBOX_DEFAULT_LSUSB
-	#select PLATFORM_LINUX
 	help
 	lsusb is a utility for displaying information about USB buses in the
 	system and devices connected to them.
@@ -419,7 +389,6 @@ config BUSYBOX_CONFIG_LSUSB
 config BUSYBOX_CONFIG_MDEV
 	bool "mdev (17 kb)"
 	default BUSYBOX_DEFAULT_MDEV
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	mdev is a mini-udev implementation for dynamically creating device
 	nodes in the /dev directory.
@@ -505,20 +474,17 @@ config BUSYBOX_CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP
 config BUSYBOX_CONFIG_MKE2FS
 	bool "mke2fs (10 kb)"
 	default BUSYBOX_DEFAULT_MKE2FS
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Utility to create EXT2 filesystems.
 
 config BUSYBOX_CONFIG_MKFS_EXT2
 	bool "mkfs.ext2 (10 kb)"
 	default BUSYBOX_DEFAULT_MKFS_EXT2
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Alias to "mke2fs".
 config BUSYBOX_CONFIG_MKFS_MINIX
 	bool "mkfs.minix (10 kb)"
 	default BUSYBOX_DEFAULT_MKFS_MINIX
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	The minix filesystem is a nice, small, compact, read-write filesystem
 	with little overhead. If you wish to be able to create minix
@@ -535,21 +501,18 @@ config BUSYBOX_CONFIG_FEATURE_MINIX2
 config BUSYBOX_CONFIG_MKFS_REISER
 	bool "mkfs_reiser"
 	default BUSYBOX_DEFAULT_MKFS_REISER
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Utility to create ReiserFS filesystems.
 	Note: this applet needs a lot of testing and polishing.
 config BUSYBOX_CONFIG_MKDOSFS
 	bool "mkdosfs (7.2 kb)"
 	default BUSYBOX_DEFAULT_MKDOSFS
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Utility to create FAT32 filesystems.
 
 config BUSYBOX_CONFIG_MKFS_VFAT
 	bool "mkfs.vfat (7.2 kb)"
 	default BUSYBOX_DEFAULT_MKFS_VFAT
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Alias to "mkdosfs".
 config BUSYBOX_CONFIG_MKSWAP
@@ -583,7 +546,6 @@ config BUSYBOX_CONFIG_MORE
 config BUSYBOX_CONFIG_MOUNT
 	bool "mount (23 kb)"
 	default BUSYBOX_DEFAULT_MOUNT
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	All files and filesystems in Unix are arranged into one big directory
 	tree. The 'mount' utility is used to graft a filesystem onto a
@@ -685,7 +647,7 @@ config BUSYBOX_CONFIG_NOLOGIN
 
 config BUSYBOX_CONFIG_NOLOGIN_DEPENDENCIES
 	bool "Enable dependencies for nologin"
-	default BUSYBOX_DEFAULT_NOLOGIN_DEPENDENCIES
+	default BUSYBOX_DEFAULT_NOLOGIN_DEPENDENCIES  # Y default makes it harder to select single-applet test
 	depends on BUSYBOX_CONFIG_NOLOGIN
 	select BUSYBOX_CONFIG_CAT
 	select BUSYBOX_CONFIG_ECHO
@@ -699,13 +661,11 @@ config BUSYBOX_CONFIG_NOLOGIN_DEPENDENCIES
 config BUSYBOX_CONFIG_NSENTER
 	bool "nsenter (6.5 kb)"
 	default BUSYBOX_DEFAULT_NSENTER
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Run program with namespaces of other processes.
 config BUSYBOX_CONFIG_PIVOT_ROOT
 	bool "pivot_root (1.1 kb)"
 	default BUSYBOX_DEFAULT_PIVOT_ROOT
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	The pivot_root utility swaps the mount points for the root filesystem
 	with some other mounted filesystem. This allows you to do all sorts
@@ -730,7 +690,6 @@ config BUSYBOX_CONFIG_RDEV
 config BUSYBOX_CONFIG_READPROFILE
 	bool "readprofile (7.1 kb)"
 	default BUSYBOX_DEFAULT_READPROFILE
-	#select PLATFORM_LINUX
 	help
 	This allows you to parse /proc/profile for basic profiling.
 config BUSYBOX_CONFIG_RENICE
@@ -747,7 +706,6 @@ config BUSYBOX_CONFIG_REV
 config BUSYBOX_CONFIG_RTCWAKE
 	bool "rtcwake (6.8 kb)"
 	default BUSYBOX_DEFAULT_RTCWAKE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Enter a system sleep state until specified wakeup time.
 config BUSYBOX_CONFIG_SCRIPT
@@ -764,7 +722,6 @@ config BUSYBOX_CONFIG_SCRIPTREPLAY
 config BUSYBOX_CONFIG_SETARCH
 	bool "setarch (3.6 kb)"
 	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
@@ -774,20 +731,17 @@ config BUSYBOX_CONFIG_SETARCH
 config BUSYBOX_CONFIG_LINUX32
 	bool "linux32 (3.3 kb)"
 	default BUSYBOX_DEFAULT_LINUX32
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Alias to "setarch linux32".
 
 config BUSYBOX_CONFIG_LINUX64
 	bool "linux64 (3.3 kb)"
 	default BUSYBOX_DEFAULT_LINUX64
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Alias to "setarch linux64".
 config BUSYBOX_CONFIG_SETPRIV
 	bool "setpriv (6.6 kb)"
 	default BUSYBOX_DEFAULT_SETPRIV
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_LONG_OPTS
 	help
 	Run a program with different Linux privilege settings.
@@ -828,7 +782,6 @@ config BUSYBOX_CONFIG_SETSID
 config BUSYBOX_CONFIG_SWAPON
 	bool "swapon (15 kb)"
 	default BUSYBOX_DEFAULT_SWAPON
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Once you have created some swap space using 'mkswap', you also need
 	to enable your swap space with the 'swapon' utility. The 'swapoff'
@@ -855,7 +808,6 @@ config BUSYBOX_CONFIG_FEATURE_SWAPON_PRI
 config BUSYBOX_CONFIG_SWAPOFF
 	bool "swapoff (14 kb)"
 	default BUSYBOX_DEFAULT_SWAPOFF
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 
 config BUSYBOX_CONFIG_FEATURE_SWAPONOFF_LABEL
 	bool "Support specifying devices by label or UUID"
@@ -868,7 +820,6 @@ config BUSYBOX_CONFIG_FEATURE_SWAPONOFF_LABEL
 config BUSYBOX_CONFIG_SWITCH_ROOT
 	bool "switch_root (5.5 kb)"
 	default BUSYBOX_DEFAULT_SWITCH_ROOT
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	The switch_root utility is used from initramfs to select a new
 	root device. Under initramfs, you have to use this instead of
@@ -900,17 +851,23 @@ config BUSYBOX_CONFIG_FEATURE_TASKSET_FANCY
 	Needed for machines with more than 32-64 CPUs:
 	affinity parameter 0xHHHHHHHHHHHHHHHHHHHH can be arbitrarily long
 	in this case. Otherwise, it is limited to sizeof(long).
+
+config BUSYBOX_CONFIG_FEATURE_TASKSET_CPULIST
+	bool "CPU list support (-c option)"
+	default BUSYBOX_DEFAULT_FEATURE_TASKSET_CPULIST
+	depends on BUSYBOX_CONFIG_FEATURE_TASKSET_FANCY
+	help
+	Add support for taking/printing affinity as CPU list when '-c'
+	option is used. For example, it prints '0-3,7' instead of mask '8f'.
 config BUSYBOX_CONFIG_UEVENT
 	bool "uevent (3.1 kb)"
 	default BUSYBOX_DEFAULT_UEVENT
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	uevent is a netlink listener for kernel uevent notifications
 	sent via netlink. It is usually used for dynamic device creation.
 config BUSYBOX_CONFIG_UMOUNT
 	bool "umount (5.1 kb)"
 	default BUSYBOX_DEFAULT_UMOUNT
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	When you want to remove a mounted filesystem from its current mount
 	point, for example when you are shutting down the system, the
@@ -927,7 +884,6 @@ config BUSYBOX_CONFIG_UNSHARE
 	bool "unshare (7.2 kb)"
 	default BUSYBOX_DEFAULT_UNSHARE
 	depends on !BUSYBOX_CONFIG_NOMMU
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_LONG_OPTS
 	help
 	Run program with some namespaces unshared from parent.
diff --git a/package/utils/busybox/config/util-linux/volume_id/Config.in b/package/utils/busybox/config/util-linux/volume_id/Config.in
index b50fcac34a..57d8258e77 100644
--- a/package/utils/busybox/config/util-linux/volume_id/Config.in
+++ b/package/utils/busybox/config/util-linux/volume_id/Config.in
@@ -23,6 +23,12 @@ config BUSYBOX_CONFIG_FEATURE_VOLUMEID_CRAMFS
 	bool "cramfs filesystem"
 	default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_CRAMFS
 	depends on BUSYBOX_CONFIG_VOLUMEID
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_EROFS
+	bool "erofs filesystem"
+	default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EROFS
+	depends on BUSYBOX_CONFIG_VOLUMEID
+	help
+	Erofs is a compressed readonly filesystem for Linux.
 config BUSYBOX_CONFIG_FEATURE_VOLUMEID_EXFAT
 	bool "exFAT filesystem"
 	default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EXFAT
diff --git a/package/utils/busybox/patches/001-remove-stime-function-calls.patch b/package/utils/busybox/patches/001-remove-stime-function-calls.patch
deleted file mode 100644
index ccf9bef356..0000000000
--- a/package/utils/busybox/patches/001-remove-stime-function-calls.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From d3539be8f27b8cbfdfee460fe08299158f08bcd9 Mon Sep 17 00:00:00 2001
-From: Alistair Francis <alistair.francis at wdc.com>
-Date: Tue, 19 Nov 2019 13:06:40 +0100
-Subject: Remove stime() function calls
-
-stime() has been deprecated in glibc 2.31 and replaced with
-clock_settime(). Let's replace the stime() function calls with
-clock_settime() in preperation.
-
-function                                             old     new   delta
-rdate_main                                           197     224     +27
-clock_settime                                          -      27     +27
-date_main                                            926     941     +15
-stime                                                 37       -     -37
-------------------------------------------------------------------------------
-(add/remove: 2/2 grow/shrink: 2/0 up/down: 69/-37)             Total: 32 bytes
-
-Signed-off-by: Alistair Francis <alistair.francis at wdc.com>
-Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
----
- coreutils/date.c         | 6 +++++-
- libbb/missing_syscalls.c | 8 --------
- util-linux/rdate.c       | 8 ++++++--
- 3 files changed, 11 insertions(+), 11 deletions(-)
-
---- a/coreutils/date.c
-+++ b/coreutils/date.c
-@@ -279,6 +279,9 @@ int date_main(int argc UNUSED_PARAM, cha
- 		time(&ts.tv_sec);
- #endif
- 	}
-+#if !ENABLE_FEATURE_DATE_NANO
-+	ts.tv_nsec = 0;
-+#endif
- 	localtime_r(&ts.tv_sec, &tm_time);
- 
- 	/* If date string is given, update tm_time, and maybe set date */
-@@ -301,9 +304,10 @@ int date_main(int argc UNUSED_PARAM, cha
- 		if (date_str[0] != '@')
- 			tm_time.tm_isdst = -1;
- 		ts.tv_sec = validate_tm_time(date_str, &tm_time);
-+		ts.tv_nsec = 0;
- 
- 		/* if setting time, set it */
--		if ((opt & OPT_SET) && stime(&ts.tv_sec) < 0) {
-+		if ((opt & OPT_SET) && clock_settime(CLOCK_REALTIME, &ts) < 0) {
- 			bb_perror_msg("can't set date");
- 		}
- 	}
---- a/libbb/missing_syscalls.c
-+++ b/libbb/missing_syscalls.c
-@@ -15,14 +15,6 @@ pid_t getsid(pid_t pid)
- 	return syscall(__NR_getsid, pid);
- }
- 
--int stime(const time_t *t)
--{
--	struct timeval tv;
--	tv.tv_sec = *t;
--	tv.tv_usec = 0;
--	return settimeofday(&tv, NULL);
--}
--
- int sethostname(const char *name, size_t len)
- {
- 	return syscall(__NR_sethostname, name, len);
---- a/util-linux/rdate.c
-+++ b/util-linux/rdate.c
-@@ -95,9 +95,13 @@ int rdate_main(int argc UNUSED_PARAM, ch
- 	if (!(flags & 2)) { /* no -p (-s may be present) */
- 		if (time(NULL) == remote_time)
- 			bb_error_msg("current time matches remote time");
--		else
--			if (stime(&remote_time) < 0)
-+		else {
-+			struct timespec ts;
-+			ts.tv_sec = remote_time;
-+			ts.tv_nsec = 0;
-+			if (clock_settime(CLOCK_REALTIME, &ts) < 0)
- 				bb_perror_msg_and_die("can't set time of day");
-+		}
- 	}
- 
- 	if (flags != 1) /* not lone -s */
diff --git a/package/utils/busybox/patches/010-fix-wrong-variable.patch b/package/utils/busybox/patches/010-fix-wrong-variable.patch
new file mode 100644
index 0000000000..1b6fa7be61
--- /dev/null
+++ b/package/utils/busybox/patches/010-fix-wrong-variable.patch
@@ -0,0 +1,11 @@
+--- a/libbb/update_passwd.c
++++ b/libbb/update_passwd.c
+@@ -48,7 +48,7 @@ static void check_selinux_update_passwd(
+ 			bb_simple_error_msg_and_die("SELinux: access denied");
+ 	}
+ 	if (ENABLE_FEATURE_CLEAN_UP)
+-		freecon(context);
++		freecon(seuser);
+ }
+ #else
+ # define check_selinux_update_passwd(username) ((void)0)
diff --git a/package/utils/busybox/patches/110-no_static_libgcc.patch b/package/utils/busybox/patches/110-no_static_libgcc.patch
deleted file mode 100644
index 2148a09e00..0000000000
--- a/package/utils/busybox/patches/110-no_static_libgcc.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/Makefile.flags
-+++ b/Makefile.flags
-@@ -51,7 +51,7 @@ CFLAGS += $(call cc-option,-fno-builtin-
- # -fno-guess-branch-probability: prohibit pseudo-random guessing
- # of branch probabilities (hopefully makes bloatcheck more stable):
- CFLAGS += $(call cc-option,-fno-guess-branch-probability,)
--CFLAGS += $(call cc-option,-funsigned-char -static-libgcc,)
-+CFLAGS += $(call cc-option,-funsigned-char,)
- CFLAGS += $(call cc-option,-falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1,)
- # Defeat .eh_frame bloat (gcc 4.6.3 x86-32 defconfig: 20% smaller busybox binary):
- CFLAGS += $(call cc-option,-fno-unwind-tables,)
diff --git a/package/utils/busybox/patches/120-lto-jobserver.patch b/package/utils/busybox/patches/120-lto-jobserver.patch
index 99c5b51201..d4f997e6d8 100644
--- a/package/utils/busybox/patches/120-lto-jobserver.patch
+++ b/package/utils/busybox/patches/120-lto-jobserver.patch
@@ -1,6 +1,6 @@
 --- a/scripts/Kbuild.include
 +++ b/scripts/Kbuild.include
-@@ -130,7 +130,7 @@ make-cmd = $(subst \#,\\\#,$(subst $$,$$
+@@ -131,7 +131,7 @@ make-cmd = $(subst \#,\\\#,$(subst $$,$$
  #
  if_changed = $(if $(strip $(filter-out $(PHONY),$?)          \
  		$(call arg-check, $(cmd_$(1)), $(cmd_$@)) ), \
@@ -9,7 +9,7 @@
  	$(echo-cmd) $(cmd_$(1)); \
  	echo 'cmd_$@ := $(make-cmd)' > $(@D)/.$(@F).cmd)
  
-@@ -139,7 +139,7 @@ if_changed = $(if $(strip $(filter-out $
+@@ -140,7 +140,7 @@ if_changed = $(if $(strip $(filter-out $
  if_changed_dep = $(if $(strip $(filter-out $(PHONY),$?)  \
  		$(filter-out FORCE $(wildcard $^),$^)    \
  	$(call arg-check, $(cmd_$(1)), $(cmd_$@)) ),     \
@@ -18,7 +18,7 @@
  	$(echo-cmd) $(cmd_$(1)); \
  	scripts/basic/fixdep $(depfile) $@ '$(make-cmd)' > $(@D)/.$(@F).tmp; \
  	rm -f $(depfile); \
-@@ -150,5 +150,5 @@ if_changed_dep = $(if $(strip $(filter-o
+@@ -151,5 +151,5 @@ if_changed_dep = $(if $(strip $(filter-o
  # and if so will execute $(rule_foo)
  if_changed_rule = $(if $(strip $(filter-out $(PHONY),$?)            \
  			$(call arg-check, $(cmd_$(1)), $(cmd_$@)) ),\
diff --git a/package/utils/busybox/patches/200-udhcpc_reduce_msgs.patch b/package/utils/busybox/patches/200-udhcpc_reduce_msgs.patch
index 4bab25a8d5..2e67009224 100644
--- a/package/utils/busybox/patches/200-udhcpc_reduce_msgs.patch
+++ b/package/utils/busybox/patches/200-udhcpc_reduce_msgs.patch
@@ -1,6 +1,6 @@
 --- a/networking/udhcp/dhcpc.c
 +++ b/networking/udhcp/dhcpc.c
-@@ -713,6 +713,7 @@ static int bcast_or_ucast(struct dhcp_pa
+@@ -712,6 +712,7 @@ static int bcast_or_ucast(struct dhcp_pa
  static NOINLINE int send_discover(uint32_t xid, uint32_t requested)
  {
  	struct dhcp_packet packet;
@@ -8,7 +8,7 @@
  
  	/* Fill in: op, htype, hlen, cookie, chaddr fields,
  	 * random xid field (we override it below),
-@@ -730,6 +731,7 @@ static NOINLINE int send_discover(uint32
+@@ -729,6 +730,7 @@ static NOINLINE int send_discover(uint32
  	 */
  	add_client_options(&packet);
  
diff --git a/package/utils/busybox/patches/201-udhcpc_changed_ifindex.patch b/package/utils/busybox/patches/201-udhcpc_changed_ifindex.patch
index 256b049d9e..875f2ce5fc 100644
--- a/package/utils/busybox/patches/201-udhcpc_changed_ifindex.patch
+++ b/package/utils/busybox/patches/201-udhcpc_changed_ifindex.patch
@@ -1,6 +1,6 @@
 --- a/networking/udhcp/dhcpc.c
 +++ b/networking/udhcp/dhcpc.c
-@@ -1416,6 +1416,12 @@ int udhcpc_main(int argc UNUSED_PARAM, c
+@@ -1415,6 +1415,12 @@ int udhcpc_main(int argc UNUSED_PARAM, c
  		/* silence "uninitialized!" warning */
  		unsigned timestamp_before_wait = timestamp_before_wait;
  
diff --git a/package/utils/busybox/patches/203-udhcpc_renew_no_deconfig.patch b/package/utils/busybox/patches/203-udhcpc_renew_no_deconfig.patch
index 3d3c0cc403..88a98c0a1c 100644
--- a/package/utils/busybox/patches/203-udhcpc_renew_no_deconfig.patch
+++ b/package/utils/busybox/patches/203-udhcpc_renew_no_deconfig.patch
@@ -1,6 +1,6 @@
 --- a/networking/udhcp/dhcpc.c
 +++ b/networking/udhcp/dhcpc.c
-@@ -1126,7 +1126,6 @@ static void perform_renew(void)
+@@ -1125,7 +1125,6 @@ static void perform_renew(void)
  		client_data.state = RENEW_REQUESTED;
  		break;
  	case RENEW_REQUESTED: /* impatient are we? fine, square 1 */
diff --git a/package/utils/busybox/patches/230-add_nslookup_lede.patch b/package/utils/busybox/patches/230-add_nslookup_lede.patch
index f0ac4b51c1..446b01c3f1 100644
--- a/package/utils/busybox/patches/230-add_nslookup_lede.patch
+++ b/package/utils/busybox/patches/230-add_nslookup_lede.patch
@@ -19,9 +19,9 @@ Signed-off-by: Jo-Philipp Wich <jo at mein.io>
 
 --- a/Makefile.flags
 +++ b/Makefile.flags
-@@ -134,6 +134,12 @@ else
- LDLIBS += m
- endif
+@@ -158,6 +158,12 @@ endif
+ # libm may be needed for dc, awk, ntpd
+ # librt may be needed for clock_gettime()
  
 +# nslookup_lede might need the resolv library
 +RESOLV_AVAILABLE := $(shell echo 'int main(void){res_init();return 0;}' >resolvtest.c; $(CC) $(CFLAGS) -include resolv.h -lresolv -o /dev/null resolvtest.c >/dev/null 2>&1 && echo "y"; rm resolvtest.c)
diff --git a/package/utils/busybox/patches/250-date-k-flag.patch b/package/utils/busybox/patches/250-date-k-flag.patch
deleted file mode 100644
index 5aadbb233c..0000000000
--- a/package/utils/busybox/patches/250-date-k-flag.patch
+++ /dev/null
@@ -1,92 +0,0 @@
---- a/coreutils/date.c
-+++ b/coreutils/date.c
-@@ -123,6 +123,7 @@
- //usage:	IF_FEATURE_DATE_ISOFMT(
- //usage:     "\n	-D FMT		Use FMT (strptime format) for -d TIME conversion"
- //usage:	)
-+//usage:     "\n	-k		Set Kernel timezone from localtime and exit"
- //usage:     "\n"
- //usage:     "\nRecognized TIME formats:"
- //usage:     "\n	hh:mm[:ss]"
-@@ -139,9 +140,8 @@
- 
- #include "libbb.h"
- #include "common_bufsiz.h"
--#if ENABLE_FEATURE_DATE_NANO
--# include <sys/syscall.h>
--#endif
-+#include <sys/time.h>
-+#include <sys/syscall.h>
- 
- enum {
- 	OPT_RFC2822   = (1 << 0), /* R */
-@@ -149,8 +149,9 @@ enum {
- 	OPT_UTC       = (1 << 2), /* u */
- 	OPT_DATE      = (1 << 3), /* d */
- 	OPT_REFERENCE = (1 << 4), /* r */
--	OPT_TIMESPEC  = (1 << 5) * ENABLE_FEATURE_DATE_ISOFMT, /* I */
--	OPT_HINT      = (1 << 6) * ENABLE_FEATURE_DATE_ISOFMT, /* D */
-+	OPT_KERNELTZ  = (1 << 5), /* k */
-+	OPT_TIMESPEC  = (1 << 6) * ENABLE_FEATURE_DATE_ISOFMT, /* I */
-+	OPT_HINT      = (1 << 7) * ENABLE_FEATURE_DATE_ISOFMT, /* D */
- };
- 
- #if ENABLE_LONG_OPTS
-@@ -162,6 +163,7 @@ static const char date_longopts[] ALIGN1
- 	/*	"universal\0" No_argument       "u" */
- 		"date\0"      Required_argument "d"
- 		"reference\0" Required_argument "r"
-+		"set-kernel-tz\0" No_argument   "k"
- 		;
- #endif
- 
-@@ -181,6 +183,8 @@ static void maybe_set_utc(int opt)
- int date_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
- int date_main(int argc UNUSED_PARAM, char **argv)
- {
-+	time_t tt;
-+	struct timezone tz;
- 	struct timespec ts;
- 	struct tm tm_time;
- 	char buf_fmt_dt2str[64];
-@@ -193,7 +197,7 @@ int date_main(int argc UNUSED_PARAM, cha
- 	char *isofmt_arg = NULL;
- 
- 	opt = getopt32long(argv, "^"
--			"Rs:ud:r:"
-+			"Rs:ud:r:k"
- 			IF_FEATURE_DATE_ISOFMT("I::D:")
- 			"\0"
- 			"d--s:s--d"
-@@ -256,6 +260,31 @@ int date_main(int argc UNUSED_PARAM, cha
- 	if (*argv)
- 		bb_show_usage();
- 
-+	/* Setting of kernel timezone was requested */
-+	if (opt & OPT_KERNELTZ) {
-+		tt = time(NULL);
-+		localtime_r(&tt, &tm_time);
-+
-+		/* workaround warp_clock() on first invocation */
-+		memset(&tz, 0, sizeof(tz));
-+		syscall(SYS_settimeofday, NULL, &tz);
-+
-+		memset(&tz, 0, sizeof(tz));
-+#ifdef __USE_MISC
-+		tz.tz_minuteswest = -(tm_time.tm_gmtoff / 60);
-+#else
-+		tz.tz_minuteswest = -(tm_time.__tm_gmtoff / 60);
-+#endif
-+
-+		if (syscall(SYS_settimeofday, NULL, &tz))
-+		{
-+			bb_perror_msg("can't set kernel time zone");
-+			return EXIT_FAILURE;
-+		}
-+
-+		return EXIT_SUCCESS;
-+	}
-+
- 	/* Now we have parsed all the information except the date format
- 	 * which depends on whether the clock is being set or read */
- 
diff --git a/package/utils/busybox/patches/500-move-traceroute-applets-to-bin.patch b/package/utils/busybox/patches/500-move-traceroute-applets-to-bin.patch
index 3741e25c3f..0389eed5da 100644
--- a/package/utils/busybox/patches/500-move-traceroute-applets-to-bin.patch
+++ b/package/utils/busybox/patches/500-move-traceroute-applets-to-bin.patch
@@ -1,6 +1,6 @@
 --- a/networking/traceroute.c
 +++ b/networking/traceroute.c
-@@ -237,8 +237,8 @@
+@@ -236,8 +236,8 @@
  //config:	depends on TRACEROUTE || TRACEROUTE6
  
  /* Needs socket(AF_INET, SOCK_RAW, IPPROTO_ICMP), therefore BB_SUID_MAYBE: */
diff --git a/package/utils/busybox/patches/520-loginutils-handle-crypt-failures.patch b/package/utils/busybox/patches/520-loginutils-handle-crypt-failures.patch
index d44375426f..91340d46e6 100644
--- a/package/utils/busybox/patches/520-loginutils-handle-crypt-failures.patch
+++ b/package/utils/busybox/patches/520-loginutils-handle-crypt-failures.patch
@@ -1,6 +1,6 @@
 --- a/loginutils/chpasswd.c
 +++ b/loginutils/chpasswd.c
-@@ -97,6 +97,11 @@ int chpasswd_main(int argc UNUSED_PARAM,
+@@ -89,6 +89,11 @@ int chpasswd_main(int argc UNUSED_PARAM,
  
  			crypt_make_pw_salt(salt, algo);
  			free_me = pass = pw_encrypt(pass, salt, 0);
@@ -14,7 +14,7 @@
  		/* This is rather complex: if user is not found in /etc/shadow,
 --- a/loginutils/cryptpw.c
 +++ b/loginutils/cryptpw.c
-@@ -95,7 +95,7 @@ int cryptpw_main(int argc UNUSED_PARAM,
+@@ -87,7 +87,7 @@ int cryptpw_main(int argc UNUSED_PARAM,
  	/* Supports: cryptpw -m sha256 PASS 'rounds=999999999$SALT' */
  	char salt[MAX_PW_SALT_LEN + sizeof("rounds=999999999$")];
  	char *salt_ptr;
@@ -23,7 +23,7 @@
  	const char *opt_m, *opt_S;
  	int fd;
  
-@@ -140,8 +140,12 @@ int cryptpw_main(int argc UNUSED_PARAM,
+@@ -132,8 +132,12 @@ int cryptpw_main(int argc UNUSED_PARAM,
  		/* may still be NULL on EOF/error */
  	}
  
diff --git a/package/utils/busybox/patches/600-allow-ntpd-non-root.patch b/package/utils/busybox/patches/600-allow-ntpd-non-root.patch
deleted file mode 100644
index b5d4c2a07d..0000000000
--- a/package/utils/busybox/patches/600-allow-ntpd-non-root.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/networking/ntpd.c
-+++ b/networking/ntpd.c
-@@ -2414,9 +2414,6 @@ static NOINLINE void ntp_init(char **arg
- 
- 	srand(getpid());
- 
--	if (getuid())
--		bb_error_msg_and_die(bb_msg_you_must_be_root);
--
- 	/* Set some globals */
- 	G.discipline_jitter = G_precision_sec;
- 	G.stratum = MAXSTRAT;
-- 
2.29.2




More information about the openwrt-devel mailing list