diff --git a/package/busybox/config/Config.in b/package/busybox/config/Config.in
index f7ee7b3d412d75b0ed8f7475eb465c2487fdace5..5dd3d1b09a46b556d96bbc86830eded6bb243f81 100644
--- a/package/busybox/config/Config.in
+++ b/package/busybox/config/Config.in
@@ -82,7 +82,7 @@ config BUSYBOX_CONFIG_SHOW_USAGE
 config BUSYBOX_CONFIG_FEATURE_VERBOSE_USAGE
 	bool "Show verbose applet usage messages"
 	default y
-	select BUSYBOX_CONFIG_SHOW_USAGE
+	depends on BUSYBOX_CONFIG_SHOW_USAGE
 	help
 	  All BusyBox applets will show more verbose help messages when
 	  busybox is invoked with --help. This will add a lot of text to the
@@ -118,7 +118,7 @@ config BUSYBOX_CONFIG_LOCALE_SUPPORT
 	  Enable this if your system has locale support and you would like
 	  busybox to support locale settings.
 
-config BUSYBOX_CONFIG_FEATURE_ASSUME_UNICODE
+config BUSYBOX_CONFIG_UNICODE_SUPPORT
 	bool "Support Unicode"
 	default n
 	help
@@ -130,16 +130,109 @@ config BUSYBOX_CONFIG_FEATURE_ASSUME_UNICODE
 	  Probably by the time when busybox will be fully Unicode-clean,
 	  other encodings will be mainly of historic interest.
 
+config BUSYBOX_CONFIG_UNICODE_USING_LOCALE
+	bool "Use libc routines for Unicode (else uses internal ones)"
+	default n
+	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT && BUSYBOX_CONFIG_LOCALE_SUPPORT
+	help
+	  With this option on, Unicode support is implemented using libc
+	  routines. Otherwise, internal implementation is used.
+
 config BUSYBOX_CONFIG_FEATURE_CHECK_UNICODE_IN_ENV
 	bool "Check $LANG environment variable"
 	default n
-	depends on BUSYBOX_CONFIG_FEATURE_ASSUME_UNICODE && !BUSYBOX_CONFIG_LOCALE_SUPPORT
+	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT && !BUSYBOX_CONFIG_UNICODE_USING_LOCALE
 	help
 	  With this option on, Unicode support is activated
 	  only if LANG variable has the value of the form "xxxx.utf8"
 
 	  Otherwise, Unicode support will be always enabled and active.
 
+config BUSYBOX_CONFIG_SUBST_WCHAR
+	int "Character code to substitute unprintable characters with"
+	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT
+	default 63
+	help
+	  Typical values are 63 for '?' (works with any output device),
+	  30 for ASCII substitute control code,
+	  65533 (0xfffd) for Unicode replacement character.
+
+config BUSYBOX_CONFIG_LAST_SUPPORTED_WCHAR
+	int "Range of supported Unicode characters"
+	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT
+	default 767
+	help
+	  Any character with Unicode value bigger than this is assumed
+	  to be non-printable on output device. Many applets replace
+	  such chars with substitution character.
+
+	  The idea is that many valid printable Unicode chars are
+	  nevertheless are not displayed correctly. Think about
+	  combining charachers, double-wide hieroglyphs, obscure
+	  characters in dozens of ancient scripts...
+	  Many terminals, terminal emulators, xterms etc will fail
+	  to handle them correctly. Choose the smallest value
+	  which suits your needs.
+
+	  Typical values are:
+	  126 - ASCII only
+	  767 (0x2ff) - there are no combining chars in [0..767] range
+			(the range includes Latin 1, Latin Ext. A and B),
+			code is ~700 bytes smaller for this case.
+	  4351 (0x10ff) - there are no double-wide chars in [0..4351] range,
+			code is ~300 bytes smaller for this case.
+	  12799 (0x31ff) - nearly all non-ideographic characters are
+			available in [0..12799] range, including
+			East Asian scripts like katakana, hiragana, hangul,
+			bopomofo...
+	  0 - off, any valid printable Unicode character will be printed.
+
+config BUSYBOX_CONFIG_UNICODE_COMBINING_WCHARS
+	bool "Allow zero-width Unicode characters on output"
+	default n
+	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT
+	help
+	  With this option off, any Unicode char with width of 0
+	  is substituted on output.
+
+config BUSYBOX_CONFIG_UNICODE_WIDE_WCHARS
+	bool "Allow wide Unicode characters on output"
+	default n
+	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT
+	help
+	  With this option off, any Unicode char with width > 1
+	  is substituted on output.
+
+config BUSYBOX_CONFIG_UNICODE_BIDI_SUPPORT
+	bool "Bidirectional character-aware line input"
+	default n
+	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT && !BUSYBOX_CONFIG_UNICODE_USING_LOCALE
+	help
+	  With this option on, right-to-left Unicode characters
+	  are treated differently on input (e.g. cursor movement).
+
+config BUSYBOX_CONFIG_UNICODE_NEUTRAL_TABLE
+	bool "In bidi input, support non-ASCII neutral chars too"
+	default n
+	depends on BUSYBOX_CONFIG_UNICODE_BIDI_SUPPORT
+	help
+	  In most cases it's enough to treat only ASCII non-letters
+	  (i.e. punctuation, numbers and space) as characters
+	  with neutral directionality.
+	  With this option on, more extensive (and bigger) table
+	  of neutral chars will be used.
+
+config BUSYBOX_CONFIG_UNICODE_PRESERVE_BROKEN
+	bool "Make it possible to enter sequences of chars which are not Unicode"
+	default n
+	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT
+	help
+	  With this option on, invalid UTF-8 bytes are not substituted
+	  with the selected substitution character.
+	  For example, this means that entering 'l', 's', ' ', 0xff, [Enter]
+	  at shell prompt will list file named 0xff (single char name
+	  with char value 255), not file named '?'.
+
 config BUSYBOX_CONFIG_LONG_OPTS
 	bool "Support for --long-options"
 	default y
@@ -169,6 +262,26 @@ config BUSYBOX_CONFIG_FEATURE_CLEAN_UP
 	  Don't enable this unless you have a really good reason to clean
 	  things up manually.
 
+config BUSYBOX_CONFIG_FEATURE_UTMP
+	bool "Support utmp file"
+	default n
+	help
+	  The file /var/run/utmp is used to track who is currently logged in.
+	  With this option on, certain applets (getty, login, telnetd etc)
+	  will create and delete entries there.
+	  "who" applet requires this option.
+
+config BUSYBOX_CONFIG_FEATURE_WTMP
+	bool "Support wtmp file"
+	default n
+	select BUSYBOX_CONFIG_FEATURE_UTMP
+	help
+	  The file /var/run/wtmp is used to track when users have logged into
+	  and logged out of the system.
+	  With this option on, certain applets (getty, login, telnetd etc)
+	  will append new entries there.
+	  "last" applet requires this option.
+
 config BUSYBOX_CONFIG_FEATURE_PIDFILE
 	bool "Support writing pidfiles"
 	default y
diff --git a/package/busybox/config/archival/Config.in b/package/busybox/config/archival/Config.in
index 403a631dd1feee443de433268d0b5871c14f37d7..1424c8673ccf8a23ab1760b695efed31e4068e18 100644
--- a/package/busybox/config/archival/Config.in
+++ b/package/busybox/config/archival/Config.in
@@ -5,6 +5,12 @@
 
 menu "Archival Utilities"
 
+config BUSYBOX_CONFIG_FEATURE_SEAMLESS_XZ
+	bool "Make tar, rpm, modprobe etc understand .xz data"
+	default n
+	help
+	  Make tar, rpm, modprobe etc understand .xz data.
+
 config BUSYBOX_CONFIG_FEATURE_SEAMLESS_LZMA
 	bool "Make tar, rpm, modprobe etc understand .lzma data"
 	default n
@@ -62,6 +68,13 @@ config BUSYBOX_CONFIG_FEATURE_AR_LONG_FILENAMES
 	  It supports the GNU ar long filename method which moves multiple long
 	  filenames into a the data section of a new ar entry.
 
+config BUSYBOX_CONFIG_FEATURE_AR_CREATE
+	bool "Support archive creation"
+	default n
+	depends on BUSYBOX_CONFIG_AR
+	help
+	  This enables archive creation (-c and -r) with busybox ar.
+
 config BUSYBOX_CONFIG_BUNZIP2
 	bool "bunzip2"
 	default y
@@ -207,8 +220,6 @@ config BUSYBOX_CONFIG_TAR
 	  create compressed archives. It's probably the most widely used
 	  UNIX archive program.
 
-if BUSYBOX_CONFIG_TAR
-
 config BUSYBOX_CONFIG_FEATURE_TAR_CREATE
 	bool "Enable archive creation"
 	default y
@@ -220,7 +231,7 @@ config BUSYBOX_CONFIG_FEATURE_TAR_CREATE
 config BUSYBOX_CONFIG_FEATURE_TAR_AUTODETECT
 	bool "Autodetect compressed tarballs"
 	default n
-	depends on BUSYBOX_CONFIG_FEATURE_SEAMLESS_Z || BUSYBOX_CONFIG_FEATURE_SEAMLESS_GZ || BUSYBOX_CONFIG_FEATURE_SEAMLESS_BZ2 || BUSYBOX_CONFIG_FEATURE_SEAMLESS_LZMA
+	depends on BUSYBOX_CONFIG_TAR && (BUSYBOX_CONFIG_FEATURE_SEAMLESS_Z || BUSYBOX_CONFIG_FEATURE_SEAMLESS_GZ || BUSYBOX_CONFIG_FEATURE_SEAMLESS_BZ2 || BUSYBOX_CONFIG_FEATURE_SEAMLESS_LZMA || BUSYBOX_CONFIG_FEATURE_SEAMLESS_XZ)
 	help
 	  With this option tar can automatically detect compressed
 	  tarballs. Currently it works only on files (not pipes etc).
@@ -236,7 +247,7 @@ config BUSYBOX_CONFIG_FEATURE_TAR_FROM
 config BUSYBOX_CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY
 	bool "Support for old tar header format"
 	default n
-	depends on BUSYBOX_CONFIG_TAR
+	depends on BUSYBOX_CONFIG_TAR || BUSYBOX_CONFIG_DPKG
 	help
 	  This option is required to unpack archives created in
 	  the old GNU format; help to kill this old format by
@@ -245,7 +256,7 @@ config BUSYBOX_CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY
 config BUSYBOX_CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY
 	bool "Enable untarring of tarballs with checksums produced by buggy Sun tar"
 	default n
-	depends on BUSYBOX_CONFIG_TAR
+	depends on BUSYBOX_CONFIG_TAR || BUSYBOX_CONFIG_DPKG
 	help
 	  This option is required to unpack archives created by some old
 	  version of Sun's tar (it was calculating checksum using signed
@@ -255,7 +266,7 @@ config BUSYBOX_CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY
 config BUSYBOX_CONFIG_FEATURE_TAR_GNU_EXTENSIONS
 	bool "Support for GNU tar extensions (long filenames)"
 	default y
-	depends on BUSYBOX_CONFIG_TAR
+	depends on BUSYBOX_CONFIG_TAR || BUSYBOX_CONFIG_DPKG
 	help
 	  With this option busybox supports GNU long filenames and
 	  linknames.
@@ -267,6 +278,15 @@ config BUSYBOX_CONFIG_FEATURE_TAR_LONG_OPTIONS
 	help
 	  Enable use of long options, increases size by about 400 Bytes
 
+config BUSYBOX_CONFIG_FEATURE_TAR_TO_COMMAND
+	bool "Support for writing to an external program"
+	default n
+	depends on BUSYBOX_CONFIG_TAR && BUSYBOX_CONFIG_FEATURE_TAR_LONG_OPTIONS
+	help
+	  If you enable this option you'll be able to instruct tar to send
+	  the contents of each extracted file to the standard input of an
+	  external program.
+
 config BUSYBOX_CONFIG_FEATURE_TAR_UNAME_GNAME
 	bool "Enable use of user and group names"
 	default n
@@ -284,7 +304,13 @@ config BUSYBOX_CONFIG_FEATURE_TAR_NOPRESERVE_TIME
 	  With this option busybox supports GNU tar -m
 	  (do not preserve time) option.
 
-endif #tar
+config BUSYBOX_CONFIG_FEATURE_TAR_SELINUX
+	bool "Support for extracting SELinux labels"
+	default n
+	depends on BUSYBOX_CONFIG_TAR && BUSYBOX_CONFIG_SELINUX
+	help
+	  With this option busybox supports restoring SELinux labels
+	  when extracting files from tar archives.
 
 config BUSYBOX_CONFIG_UNCOMPRESS
 	bool "uncompress"
@@ -316,6 +342,28 @@ config BUSYBOX_CONFIG_FEATURE_LZMA_FAST
 	  This option reduces decompression time by about 25% at the cost of
 	  a 1K bigger binary.
 
+config BUSYBOX_CONFIG_LZMA
+	bool "Provide lzma alias which supports only unpacking"
+	default n
+	depends on BUSYBOX_CONFIG_UNLZMA
+	help
+	  Enable this option if you want commands like "lzma -d" to work.
+	  IOW: you'll get lzma applet, but it will always require -d option.
+
+config BUSYBOX_CONFIG_UNXZ
+	bool "unxz"
+	default n
+	help
+	  unxz is a unlzma successor.
+
+config BUSYBOX_CONFIG_XZ
+	bool "Provide xz alias which supports only unpacking"
+	default n
+	depends on BUSYBOX_CONFIG_UNXZ
+	help
+	  Enable this option if you want commands like "xz -d" to work.
+	  IOW: you'll get xz applet, but it will always require -d option.
+
 config BUSYBOX_CONFIG_UNZIP
 	bool "unzip"
 	default n
diff --git a/package/busybox/config/console-tools/Config.in b/package/busybox/config/console-tools/Config.in
index d1342ffd934a795178781a7e9d586ac8d6e652a3..710bf976fde11ea0c999a0fb3ea431ea60a47def 100644
--- a/package/busybox/config/console-tools/Config.in
+++ b/package/busybox/config/console-tools/Config.in
@@ -12,6 +12,12 @@ config BUSYBOX_CONFIG_CHVT
 	  This program is used to change to another terminal.
 	  Example: chvt 4 (change to terminal /dev/tty4)
 
+config BUSYBOX_CONFIG_FGCONSOLE
+	bool "fgconsole"
+	default n
+	help
+	  This program prints active (foreground) console number.
+
 config BUSYBOX_CONFIG_CLEAR
 	bool "clear"
 	default y
@@ -135,4 +141,21 @@ config BUSYBOX_CONFIG_SHOWKEY
 	help
 	  Shows keys pressed.
 
+comment "Common options for loadfont and setfont"
+	depends on BUSYBOX_CONFIG_LOADFONT || BUSYBOX_CONFIG_SETFONT
+
+config BUSYBOX_CONFIG_FEATURE_LOADFONT_PSF2
+	bool "Support for PSF2 console fonts"
+	default n
+	depends on BUSYBOX_CONFIG_LOADFONT || BUSYBOX_CONFIG_SETFONT
+	help
+	  Support PSF2 console fonts.
+
+config BUSYBOX_CONFIG_FEATURE_LOADFONT_RAW
+	bool "Support for old (raw) console fonts"
+	default n
+	depends on BUSYBOX_CONFIG_LOADFONT || BUSYBOX_CONFIG_SETFONT
+	help
+	  Support old (raw) console fonts.
+
 endmenu
diff --git a/package/busybox/config/coreutils/Config.in b/package/busybox/config/coreutils/Config.in
index 759d98dab7d5edc3c8285593a55886b276d23d7f..e72ea6c4b74a9f26e6645893c1f462396d2e158b 100644
--- a/package/busybox/config/coreutils/Config.in
+++ b/package/busybox/config/coreutils/Config.in
@@ -12,19 +12,96 @@ config BUSYBOX_CONFIG_BASENAME
 	  basename is used to strip the directory and suffix from filenames,
 	  leaving just the filename itself. Enable this option if you wish
 	  to enable the 'basename' utility.
-
-config BUSYBOX_CONFIG_CAL
-	bool "cal"
-	default n
-	help
-	  cal is used to display a monthly calender.
-
 config BUSYBOX_CONFIG_CAT
 	bool "cat"
 	default y
 	help
 	  cat is used to concatenate files and print them to the standard
 	  output. Enable this option if you wish to enable the 'cat' utility.
+config BUSYBOX_CONFIG_DATE
+	bool "date"
+	default y
+	help
+	  date is used to set the system date or display the
+	  current time in the given format.
+
+config BUSYBOX_CONFIG_FEATURE_DATE_ISOFMT
+	bool "Enable ISO date format output (-I)"
+	default y
+	depends on BUSYBOX_CONFIG_DATE
+	help
+	  Enable option (-I) to output an ISO-8601 compliant
+	  date/time string.
+
+config BUSYBOX_CONFIG_FEATURE_DATE_NANO
+	bool "Support %[num]N nanosecond format specifier"
+	default n
+	depends on BUSYBOX_CONFIG_DATE
+	help
+	  Support %[num]N format specifier. Adds ~250 bytes of code.
+
+config BUSYBOX_CONFIG_FEATURE_DATE_COMPAT
+	bool "Support weird 'date MMDDhhmm[[YY]YY][.ss]' format"
+	default n
+	depends on BUSYBOX_CONFIG_DATE
+	help
+	  System time can be set by 'date -s DATE' and simply 'date DATE',
+	  but formats of DATE string are different. 'date DATE' accepts
+	  a rather weird MMDDhhmm[[YY]YY][.ss] format with completely
+	  unnatural placement of year between minutes and seconds.
+	  date -s (and other commands like touch -d) use more sensible
+	  formats (for one, ISO format YYYY-MM-DD hh:mm:ss.ssssss).
+
+	  With this option off, 'date DATE' is 'date -s DATE' support
+	  the same format. With it on, 'date DATE' additionally supports
+	  MMDDhhmm[[YY]YY][.ss] format.
+
+config BUSYBOX_CONFIG_TEST
+	bool "test"
+	default y
+	help
+	  test is used to check file types and compare values,
+	  returning an appropriate exit code. The bash shell
+	  has test built in, ash can build it in optionally.
+
+config BUSYBOX_CONFIG_FEATURE_TEST_64
+	bool "Extend test to 64 bit"
+	default y
+	depends on BUSYBOX_CONFIG_TEST || BUSYBOX_CONFIG_ASH_BUILTIN_TEST || BUSYBOX_CONFIG_HUSH
+	help
+	  Enable 64-bit support in test.
+
+config BUSYBOX_CONFIG_TR
+	bool "tr"
+	default y
+	help
+	  tr is used to squeeze, and/or delete characters from standard
+	  input, writing to standard output.
+
+config BUSYBOX_CONFIG_FEATURE_TR_CLASSES
+	bool "Enable character classes (such as [:upper:])"
+	default n
+	depends on BUSYBOX_CONFIG_TR
+	help
+	  Enable character classes, enabling commands such as:
+	  tr [:upper:] [:lower:] to convert input into lowercase.
+
+config BUSYBOX_CONFIG_FEATURE_TR_EQUIV
+	bool "Enable equivalence classes"
+	default n
+	depends on BUSYBOX_CONFIG_TR
+	help
+	  Enable equivalence classes, which essentially add the enclosed
+	  character to the current set. For instance, tr [=a=] xyz would
+	  replace all instances of 'a' with 'xyz'. This option is mainly
+	  useful for cases when no other way of expressing a character
+	  is possible.
+
+config BUSYBOX_CONFIG_CAL
+	bool "cal"
+	default n
+	help
+	  cal is used to display a monthly calender.
 
 config BUSYBOX_CONFIG_CATV
 	bool "catv"
@@ -100,37 +177,6 @@ config BUSYBOX_CONFIG_CUT
 	  cut is used to print selected parts of lines from
 	  each file to stdout.
 
-config BUSYBOX_CONFIG_DATE
-	bool "date"
-	default y
-	help
-	  date is used to set the system date or display the
-	  current time in the given format.
-
-config BUSYBOX_CONFIG_FEATURE_DATE_ISOFMT
-	bool "Enable ISO date format output (-I)"
-	default y
-	depends on BUSYBOX_CONFIG_DATE
-	help
-	  Enable option (-I) to output an ISO-8601 compliant
-	  date/time string.
-
-config BUSYBOX_CONFIG_FEATURE_DATE_COMPAT
-	bool "Support weird 'date MMDDhhmm[[YY]YY][.ss]' format"
-	default n
-	depends on BUSYBOX_CONFIG_DATE
-	help
-	  System time can be set by 'date -s DATE' and simply 'date DATE',
-	  but formats of DATE string are different. 'date DATE' accepts
-	  a rather weird MMDDhhmm[[YY]YY][.ss] format with completely
-	  unnatural placement of year between minutes and seconds.
-	  date -s (and other commands like touch -d) use more sensible
-	  formats (for one, ISO format YYYY-MM-DD hh:mm:ss.ssssss).
-
-	  With this option off, 'date DATE' is 'date -s DATE' support
-	  the same format. With it on, 'date DATE' additionally supports
-	  MMDDhhmm[[YY]YY][.ss] format.
-
 config BUSYBOX_CONFIG_DD
 	bool "dd"
 	default y
@@ -183,6 +229,10 @@ config BUSYBOX_CONFIG_FEATURE_DF_FANCY
 	help
 	  This option enables -a, -i and -B.
 
+	    -a Show all filesystems
+	    -i Inodes
+	    -B <SIZE> Blocksize
+
 config BUSYBOX_CONFIG_DIRNAME
 	bool "dirname"
 	default y
@@ -682,6 +732,10 @@ config BUSYBOX_CONFIG_FEATURE_FANCY_TAIL
 	  The options (-q, -s, and -v) are provided by GNU tail, but
 	  are not specific in the SUSv3 standard.
 
+	    -q      Never output headers giving file names
+	    -s SEC  Wait SEC seconds between reads with -f
+	    -v      Always output headers giving file names
+
 config BUSYBOX_CONFIG_TEE
 	bool "tee"
 	default y
@@ -696,21 +750,6 @@ config BUSYBOX_CONFIG_FEATURE_TEE_USE_BLOCK_IO
 	help
 	  Enable this option for a faster tee, at expense of size.
 
-config BUSYBOX_CONFIG_TEST
-	bool "test"
-	default y
-	help
-	  test is used to check file types and compare values,
-	  returning an appropriate exit code. The bash shell
-	  has test built in, ash can build it in optionally.
-
-config BUSYBOX_CONFIG_FEATURE_TEST_64
-	bool "Extend test to 64 bit"
-	default y
-	depends on BUSYBOX_CONFIG_TEST || BUSYBOX_CONFIG_ASH_BUILTIN_TEST || BUSYBOX_CONFIG_HUSH
-	help
-	  Enable 64-bit support in test.
-
 config BUSYBOX_CONFIG_TOUCH
 	bool "touch"
 	default y
@@ -718,32 +757,6 @@ config BUSYBOX_CONFIG_TOUCH
 	  touch is used to create or change the access and/or
 	  modification timestamp of specified files.
 
-config BUSYBOX_CONFIG_TR
-	bool "tr"
-	default y
-	help
-	  tr is used to squeeze, and/or delete characters from standard
-	  input, writing to standard output.
-
-config BUSYBOX_CONFIG_FEATURE_TR_CLASSES
-	bool "Enable character classes (such as [:upper:])"
-	default n
-	depends on BUSYBOX_CONFIG_TR
-	help
-	  Enable character classes, enabling commands such as:
-	  tr [:upper:] [:lower:] to convert input into lowercase.
-
-config BUSYBOX_CONFIG_FEATURE_TR_EQUIV
-	bool "Enable equivalence classes"
-	default n
-	depends on BUSYBOX_CONFIG_TR
-	help
-	  Enable equivalence classes, which essentially add the enclosed
-	  character to the current set. For instance, tr [=a=] xyz would
-	  replace all instances of 'a' with 'xyz'. This option is mainly
-	  useful for cases when no other way of expressing a character
-	  is possible.
-
 config BUSYBOX_CONFIG_TRUE
 	bool "true"
 	default y
@@ -817,7 +830,7 @@ config BUSYBOX_CONFIG_FEATURE_WC_LARGE
 config BUSYBOX_CONFIG_WHO
 	bool "who"
 	default n
-	select BUSYBOX_CONFIG_FEATURE_UTMP
+	depends on BUSYBOX_CONFIG_FEATURE_UTMP
 	help
 	  who is used to show who is logged on.
 
diff --git a/package/busybox/config/debianutils/Config.in b/package/busybox/config/debianutils/Config.in
index e61c661fc42ac12669080612310fa2d0f9aab2de..a9beb9b4b0820f332ff157bfc7aa5d11506f8058 100644
--- a/package/busybox/config/debianutils/Config.in
+++ b/package/busybox/config/debianutils/Config.in
@@ -81,4 +81,3 @@ config BUSYBOX_CONFIG_WHICH
 	  print out their pathnames.
 
 endmenu
-
diff --git a/package/busybox/config/e2fsprogs/Config.in b/package/busybox/config/e2fsprogs/Config.in
index e0e2c1ec387fc9c9c77750608a386122b4441113..08a1452c32b5af8042e64dd1ba266c4711d0a68b 100644
--- a/package/busybox/config/e2fsprogs/Config.in
+++ b/package/busybox/config/e2fsprogs/Config.in
@@ -13,7 +13,7 @@ config BUSYBOX_CONFIG_CHATTR
 
 ### config E2FSCK
 ###	bool "e2fsck"
-###	default n
+###	default y
 ###	help
 ###	  e2fsck is used to check Linux second extended file systems (ext2fs).
 ###	  e2fsck also supports ext2 filesystems countaining a journal (ext3).
@@ -36,21 +36,21 @@ config BUSYBOX_CONFIG_LSATTR
 
 ### config MKE2FS
 ###	bool "mke2fs"
-###	default n
+###	default y
 ###	help
 ###	  mke2fs is used to create an ext2/ext3 filesystem. The normal compat
 ###	  symlinks 'mkfs.ext2' and 'mkfs.ext3' are also provided.
 
-### config TUNE2FS
-###	bool "tune2fs"
-###	default n
-###	help
-###	  tune2fs allows the system administrator to adjust various tunable
-###	  filesystem parameters on Linux ext2/ext3 filesystems.
+config BUSYBOX_CONFIG_TUNE2FS
+	bool "tune2fs"
+	default n
+	help
+	  tune2fs allows the system administrator to adjust various tunable
+	  filesystem parameters on Linux ext2/ext3 filesystems.
 
 ### config E2LABEL
 ###	bool "e2label"
-###	default n
+###	default y
 ###	depends on TUNE2FS
 ###	help
 ###	  e2label will display or change the filesystem label on the ext2
@@ -59,7 +59,7 @@ config BUSYBOX_CONFIG_LSATTR
 ### NB: this one is now provided by util-linux/volume_id/*
 ### config FINDFS
 ###	bool "findfs"
-###	default n
+###	default y
 ###	depends on TUNE2FS
 ###	help
 ###	  findfs will search the disks in the system looking for a filesystem
diff --git a/package/busybox/config/editors/Config.in b/package/busybox/config/editors/Config.in
index 6175df72fc66c5830aac193c9c9b519744cf0ca2..eeadfab7afa075277b3364c7f298c3a4963125b3 100644
--- a/package/busybox/config/editors/Config.in
+++ b/package/busybox/config/editors/Config.in
@@ -168,6 +168,18 @@ config BUSYBOX_CONFIG_FEATURE_VI_WIN_RESIZE
 	help
 	  Make busybox vi behave nicely with terminals that get resized.
 
+config BUSYBOX_CONFIG_FEATURE_VI_ASK_TERMINAL
+	bool "Use 'tell me cursor position' ESC sequence to measure window"
+	default y
+	depends on BUSYBOX_CONFIG_VI
+	help
+	  If terminal size can't be retrieved and $LINES/$COLUMNS are not set,
+	  this option makes vi perform a last-ditch effort to find it:
+	  vi positions cursor to 999,999 and asks terminal to report real
+	  cursor position using "ESC [ 6 n" escape sequence, then reads stdin.
+
+	  This is not clean but helps a lot on serial lines and such.
+
 config BUSYBOX_CONFIG_FEATURE_VI_OPTIMIZE_CURSOR
 	bool "Optimize cursor movement"
 	default y
diff --git a/package/busybox/config/init/Config.in b/package/busybox/config/init/Config.in
index 94988956318eaa68de866c4df186aa06089923fb..bdf181c2f11e5f02e06e5f3b6348db4bd0e8759c 100644
--- a/package/busybox/config/init/Config.in
+++ b/package/busybox/config/init/Config.in
@@ -5,6 +5,45 @@
 
 menu "Init Utilities"
 
+config BUSYBOX_CONFIG_BOOTCHARTD
+	bool "bootchartd"
+	default n
+	help
+	  bootchartd is commonly used to profile the boot process
+	  for the purpose of speeding it up. In this case, it is started
+	  by the kernel as the init process. This is configured by adding
+	  the init=/sbin/bootchartd option to the kernel command line.
+
+	  It can also be used to monitor the resource usage of a specific
+	  application or the running system in general. In this case,
+	  bootchartd is started interactively by running bootchartd start
+	  and stopped using bootchartd stop.
+
+config BUSYBOX_CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER
+	bool "Compatible, bloated header"
+	default n
+	depends on BUSYBOX_CONFIG_BOOTCHARTD
+	help
+	  Create extended header file compatible with "big" bootchartd.
+	  "Big" bootchartd is a shell script and it dumps some
+	  "convenient" info int the header, such as:
+	    title = Boot chart for `hostname` (`date`)
+	    system.uname = `uname -srvm`
+	    system.release = `cat /etc/DISTRO-release`
+	    system.cpu = `grep '^model name' /proc/cpuinfo | head -1` ($cpucount)
+	    system.kernel.options = `cat /proc/cmdline`
+	  This data is not mandatory for bootchart graph generation,
+	  and is considered bloat. Nevertheless, this option
+	  makes bootchartd applet to dump a subset of it.
+
+config BUSYBOX_CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE
+	bool "Support bootchartd.conf"
+	default n
+	depends on BUSYBOX_CONFIG_BOOTCHARTD
+	help
+	  Enable reading and parsing of $PWD/bootchartd.conf
+	  and /etc/bootchartd.conf files.
+
 config BUSYBOX_CONFIG_INIT
 	bool "init"
 	default y
@@ -25,8 +64,8 @@ config BUSYBOX_CONFIG_FEATURE_KILL_REMOVED
 	depends on BUSYBOX_CONFIG_FEATURE_USE_INITTAB
 	help
 	  When respawn entries are removed from inittab and a SIGHUP is
-	  sent to init, this feature will kill the processes that have
-	  been removed.
+	  sent to init, this option will make init kill the processes
+	  that have been removed.
 
 config BUSYBOX_CONFIG_FEATURE_KILL_DELAY
 	int "How long to wait between TERM and KILL (0 - send TERM only)" if FEATURE_KILL_REMOVED
diff --git a/package/busybox/config/loginutils/Config.in b/package/busybox/config/loginutils/Config.in
index 4498e4e2d48efda4289d54c3da9993b9ebff5d2e..0a7d253d782a50651b21a59a2f41bb8f7826d172 100644
--- a/package/busybox/config/loginutils/Config.in
+++ b/package/busybox/config/loginutils/Config.in
@@ -181,22 +181,6 @@ config BUSYBOX_CONFIG_GETTY
 	help
 	  getty lets you log in on a tty, it is normally invoked by init.
 
-config BUSYBOX_CONFIG_FEATURE_UTMP
-	bool "Support utmp file"
-	depends on BUSYBOX_CONFIG_GETTY || BUSYBOX_CONFIG_LOGIN || BUSYBOX_CONFIG_SU || BUSYBOX_CONFIG_WHO
-	default n
-	help
-	  The file /var/run/utmp is used to track who is currently logged in.
-
-config BUSYBOX_CONFIG_FEATURE_WTMP
-	bool "Support wtmp file"
-	depends on BUSYBOX_CONFIG_GETTY || BUSYBOX_CONFIG_LOGIN || BUSYBOX_CONFIG_SU || BUSYBOX_CONFIG_LAST
-	default n
-	select BUSYBOX_CONFIG_FEATURE_UTMP
-	help
-	  The file /var/run/wtmp is used to track when user's have logged into
-	  and logged out of the system.
-
 config BUSYBOX_CONFIG_LOGIN
 	bool "login"
 	default n
diff --git a/package/busybox/config/miscutils/Config.in b/package/busybox/config/miscutils/Config.in
index 9d4a3700a1a11183efaf9ca2bf4e8eab4fcb782c..d3cf407b03de723dcaa0c6cd56228062c2d81ea0 100644
--- a/package/busybox/config/miscutils/Config.in
+++ b/package/busybox/config/miscutils/Config.in
@@ -5,6 +5,27 @@
 
 menu "Miscellaneous Utilities"
 
+config BUSYBOX_CONFIG_CONSPY
+	bool "conspy"
+	default n
+	help
+	  A text-mode VNC like program for Linux virtual terminals.
+	  example:  conspy NUM      shared access to console num
+	  or        conspy -nd NUM  screenshot of console num
+	  or        conspy -cs NUM  poor man's GNU screen like
+
+config BUSYBOX_CONFIG_UBIATTACH
+	bool "ubiattach"
+	default n
+	help
+	  Attach MTD device to an UBI device.
+
+config BUSYBOX_CONFIG_UBIDETACH
+	bool "ubidetach"
+	default n
+	help
+	  Detach MTD device from an UBI device.
+
 config BUSYBOX_CONFIG_ADJTIMEX
 	bool "adjtimex"
 	default n
@@ -317,14 +338,14 @@ config BUSYBOX_CONFIG_INOTIFYD
 config BUSYBOX_CONFIG_LAST
 	bool "last"
 	default n
-	select BUSYBOX_CONFIG_FEATURE_WTMP
+	depends on BUSYBOX_CONFIG_FEATURE_WTMP
 	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_SMALL
+	default BUSYBOX_CONFIG_FEATURE_LAST_FANCY
 
 config BUSYBOX_CONFIG_FEATURE_LAST_SMALL
 	bool "small"
@@ -551,6 +572,17 @@ config BUSYBOX_CONFIG_READAHEAD
 	  As readahead(2) blocks until each file has been read, it is best to
 	  run this applet as a background job.
 
+config BUSYBOX_CONFIG_RFKILL
+	bool "rfkill"
+	default n
+	help
+	  Enable/disable wireless devices.
+
+	  rfkill list : list all wireless devices
+	  rfkill list bluetooth : list all bluetooth devices
+	  rfkill list 1 : list device corresponding to the given index
+	  rfkill block|unblock wlan : block/unblock all wlan(wifi) devices
+
 config BUSYBOX_CONFIG_RUNLEVEL
 	bool "runlevel"
 	default n
diff --git a/package/busybox/config/modutils/Config.in b/package/busybox/config/modutils/Config.in
index db515b547e646d9c1a03da09c9147b28744c2ee5..ad5401f953d1c4b428f80f5540b5f6e3ff8bf50f 100644
--- a/package/busybox/config/modutils/Config.in
+++ b/package/busybox/config/modutils/Config.in
@@ -5,6 +5,12 @@
 
 menu "Linux Module Utilities"
 
+config BUSYBOX_CONFIG_MODINFO
+	bool "modinfo"
+	default n
+	help
+	  Show information about a Linux Kernel module
+
 config BUSYBOX_CONFIG_MODPROBE_SMALL
 	bool "Simplified modutils"
 	default n
@@ -226,7 +232,7 @@ config BUSYBOX_CONFIG_FEATURE_MODUTILS_SYMBOLS
 config BUSYBOX_CONFIG_DEFAULT_MODULES_DIR
 	string "Default directory containing modules"
 	default "/lib/modules"
-	depends on BUSYBOX_CONFIG_DEPMOD || BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_MODPROBE_SMALL
+	depends on BUSYBOX_CONFIG_DEPMOD || BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_MODPROBE_SMALL || BUSYBOX_CONFIG_MODINFO
 	help
 	  Directory that contains kernel modules.
 	  Defaults to "/lib/modules"
@@ -234,7 +240,7 @@ config BUSYBOX_CONFIG_DEFAULT_MODULES_DIR
 config BUSYBOX_CONFIG_DEFAULT_DEPMOD_FILE
 	string "Default name of modules.dep"
 	default "modules.dep"
-	depends on BUSYBOX_CONFIG_DEPMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_MODPROBE_SMALL
+	depends on BUSYBOX_CONFIG_DEPMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_MODPROBE_SMALL || BUSYBOX_CONFIG_MODINFO
 	help
 	  Filename that contains kernel modules dependencies.
 	  Defaults to "modules.dep"
diff --git a/package/busybox/config/networking/Config.in b/package/busybox/config/networking/Config.in
index 99a8eddca2f35db7b3a6b737fbe4a3a39e076edd..481567c61a73f9210b4790d3c4d92d0483300769 100644
--- a/package/busybox/config/networking/Config.in
+++ b/package/busybox/config/networking/Config.in
@@ -5,6 +5,39 @@
 
 menu "Networking Utilities"
 
+config BUSYBOX_CONFIG_NC
+	bool "nc"
+	default y
+	help
+	  A simple Unix utility which reads and writes data across network
+	  connections.
+
+config BUSYBOX_CONFIG_NC_SERVER
+	bool "Netcat server options (-l)"
+	default n
+	depends on BUSYBOX_CONFIG_NC
+	help
+	  Allow netcat to act as a server.
+
+config BUSYBOX_CONFIG_NC_EXTRA
+	bool "Netcat extensions (-eiw and filename)"
+	default n
+	depends on BUSYBOX_CONFIG_NC
+	help
+	  Add -e (support for executing the rest of the command line after
+	  making or receiving a successful connection), -i (delay interval for
+	  lines sent), -w (timeout for initial connection).
+
+config BUSYBOX_CONFIG_NC_110_COMPAT
+	bool "Netcat 1.10 compatibility (+2.5k)"
+	default n
+	depends on BUSYBOX_CONFIG_NC
+	help
+	  This option makes nc closely follow original nc-1.10.
+	  The code is about 2.5k bigger. It enables
+	  -s ADDR, -n, -u, -v, -o FILE, -z options, but loses
+	  busybox-specific extensions: -f FILE and -ll.
+
 config BUSYBOX_CONFIG_FEATURE_IPV6
 	bool "Enable IPv6 support"
 	default y
@@ -122,8 +155,8 @@ config BUSYBOX_CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST
 	default n
 	depends on BUSYBOX_CONFIG_FTPD
 	help
-	  Some ftp-clients (among them KDE's Konqueror) issue illegal
-	  "LIST -la" requests. This option works around those problems.
+	  Some ftp clients (among them KDE's Konqueror) issue illegal
+	  "LIST -l" requests. This option works around such problems.
 	  It might prevent you from listing files starting with "-" and
 	  it increases the code size by ~40 bytes.
 	  Most other ftp servers seem to behave similar to this.
@@ -404,7 +437,7 @@ config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPV6
 ### UNUSED
 ###config FEATURE_IFUPDOWN_IPX
 ###	bool "Support for IPX"
-###	default n
+###	default y
 ###	depends on IFUPDOWN
 ###	help
 ###	  If this option is selected you can use busybox to work with IPX
@@ -621,35 +654,12 @@ config BUSYBOX_CONFIG_FEATURE_NAMEIF_EXTENDED
 	    new_interface_name  mac=00:80:C8:38:91:B5
 	    new_interface_name  00:80:C8:38:91:B5
 
-config BUSYBOX_CONFIG_NC
-	bool "nc"
-	default y
-	help
-	  A simple Unix utility which reads and writes data across network
-	  connections.
-
 config BUSYBOX_CONFIG_NETMSG
 	bool "netmsg"
 	default y
 	help
 	  simple program for sending udp broadcast messages
 
-config BUSYBOX_CONFIG_NC_SERVER
-	bool "Netcat server options (-l)"
-	default n
-	depends on BUSYBOX_CONFIG_NC
-	help
-	  Allow netcat to act as a server.
-
-config BUSYBOX_CONFIG_NC_EXTRA
-	bool "Netcat extensions (-eiw and filename)"
-	default n
-	depends on BUSYBOX_CONFIG_NC
-	help
-	  Add -e (support for executing the rest of the command line after
-	  making or receiving a successful connection), -i (delay interval for
-	  lines sent), -w (timeout for initial connection).
-
 config BUSYBOX_CONFIG_NETSTAT
 	bool "netstat"
 	default y
@@ -735,7 +745,7 @@ config BUSYBOX_CONFIG_SLATTACH
 
 #config TC
 #	bool "tc"
-#	default n
+#	default y
 #	help
 #	  show / manipulate traffic control settings
 #
@@ -743,6 +753,13 @@ config BUSYBOX_CONFIG_SLATTACH
 #	def_bool n
 #	depends on TC
 
+config BUSYBOX_CONFIG_TCPSVD
+	bool "tcpsvd"
+	default n
+	help
+	  tcpsvd listens on a TCP port and runs a program for each new
+	  connection.
+
 config BUSYBOX_CONFIG_TELNET
 	bool "telnet"
 	default y
@@ -858,8 +875,11 @@ config BUSYBOX_CONFIG_TFTPD
 	  In other words: it should be run from inetd in nowait mode,
 	  or from udpsvd. Example: "udpsvd -E 0 69 tftpd DIR"
 
+comment "Common options for tftp/tftpd"
+	depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
+
 config BUSYBOX_CONFIG_FEATURE_TFTP_GET
-	bool "Enable \"get\" command"
+	bool "Enable 'tftp get' and/or tftpd upload code"
 	default n
 	depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
 	help
@@ -867,8 +887,11 @@ config BUSYBOX_CONFIG_FEATURE_TFTP_GET
 	  a client to retrieve a file from a TFTP server.
 	  Also enable upload support in tftpd, if tftpd is selected.
 
+	  Note: this option does _not_ make tftpd capable of download
+	  (the usual operation people need from it)!
+
 config BUSYBOX_CONFIG_FEATURE_TFTP_PUT
-	bool "Enable \"put\" command"
+	bool "Enable 'tftp put' and/or tftpd download code"
 	default n
 	depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
 	help
@@ -935,6 +958,20 @@ config BUSYBOX_CONFIG_FEATURE_TRACEROUTE_USE_ICMP
 	help
 	  Add option -I to use ICMP ECHO instead of UDP datagrams.
 
+config BUSYBOX_CONFIG_TUNCTL
+	bool "tunctl"
+	default n
+	help
+	  tunctl creates or deletes tun devices.
+
+config BUSYBOX_CONFIG_FEATURE_TUNCTL_UG
+	bool "Support owner:group assignment"
+	default n
+	depends on BUSYBOX_CONFIG_TUNCTL
+	help
+	  Allow to specify owner and group of newly created interface.
+	  340 bytes of pure bloat. Say no here.
+
 source package/busybox/config/networking/udhcp/Config.in
 
 config BUSYBOX_CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS
@@ -946,6 +983,13 @@ config BUSYBOX_CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS
 	  Intended to alter options not available in /etc/network/interfaces.
 	  (IE: --syslog --background etc...)
 
+config BUSYBOX_CONFIG_UDPSVD
+	bool "udpsvd"
+	default n
+	help
+	  udpsvd listens on an UDP port and runs a program for each new
+	  connection.
+
 config BUSYBOX_CONFIG_VCONFIG
 	bool "vconfig"
 	default y
@@ -992,32 +1036,4 @@ config BUSYBOX_CONFIG_ZCIP
 	  See http://www.zeroconf.org for further details, and "zcip.script"
 	  in the busybox examples.
 
-config BUSYBOX_CONFIG_TCPSVD
-	bool "tcpsvd"
-	default n
-	help
-	  tcpsvd listens on a TCP port and runs a program for each new
-	  connection.
-
-config BUSYBOX_CONFIG_TUNCTL
-	bool "tunctl"
-	default n
-	help
-	  tunctl creates or deletes tun devices.
-
-config BUSYBOX_CONFIG_FEATURE_TUNCTL_UG
-	bool "Support owner:group assignment"
-	default n
-	depends on BUSYBOX_CONFIG_TUNCTL
-	help
-	  Allow to specify owner and group of newly created interface.
-	  340 bytes of pure bloat. Say no here.
-
-config BUSYBOX_CONFIG_UDPSVD
-	bool "udpsvd"
-	default n
-	help
-	  udpsvd listens on an UDP port and runs a program for each new
-	  connection.
-
 endmenu
diff --git a/package/busybox/config/networking/udhcp/Config.in b/package/busybox/config/networking/udhcp/Config.in
index 2597f72ca89ee923e87c1193bf8216ad81e6097f..e9827870e47dcc6ca8aa2adb1ba46ef9cdcd724e 100644
--- a/package/busybox/config/networking/udhcp/Config.in
+++ b/package/busybox/config/networking/udhcp/Config.in
@@ -92,7 +92,8 @@ config BUSYBOX_CONFIG_FEATURE_UDHCP_RFC3397
 	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC
 	help
 	  If selected, both client and server will support passing of domain
-	  search lists via option 119, specified in RFC3397.
+	  search lists via option 119, specified in RFC 3397,
+	  and SIP servers option 120, specified in RFC 3361.
 
 config BUSYBOX_CONFIG_UDHCPC_DEFAULT_SCRIPT
 	string "Absolute path to config script"
diff --git a/package/busybox/config/procps/Config.in b/package/busybox/config/procps/Config.in
index 2bac03891d23bc4fbf6e3bd00e0d3f5c5433f5eb..3a95439ce3f62ee0929145d44cc29baebee2c94f 100644
--- a/package/busybox/config/procps/Config.in
+++ b/package/busybox/config/procps/Config.in
@@ -5,6 +5,13 @@
 
 menu "Process Utilities"
 
+config BUSYBOX_CONFIG_SMEMCAP
+	bool "smemcap"
+	default n
+	help
+	  smemcap is a tool for capturing process data for smem,
+	  a memory usage statistic tool.
+
 config BUSYBOX_CONFIG_FREE
 	bool "free"
 	default y
diff --git a/package/busybox/config/runit/Config.in b/package/busybox/config/runit/Config.in
index 624d4992e314b73ba0b6b02a863582ea89cb01f6..c1ee81362b77228ce50d1808aa3f7190de425cbf 100644
--- a/package/busybox/config/runit/Config.in
+++ b/package/busybox/config/runit/Config.in
@@ -61,22 +61,26 @@ config BUSYBOX_CONFIG_CHPST
 
 config BUSYBOX_CONFIG_SETUIDGID
 	bool "setuidgid"
+	default n
 	help
 	  Sets soft resource limits as specified by options
 
 config BUSYBOX_CONFIG_ENVUIDGID
 	bool "envuidgid"
+	default n
 	help
 	  Sets $UID to account's uid and $GID to account's gid
 
 config BUSYBOX_CONFIG_ENVDIR
 	bool "envdir"
+	default n
 	help
 	  Sets various environment variables as specified by files
 	  in the given directory
 
 config BUSYBOX_CONFIG_SOFTLIMIT
 	bool "softlimit"
+	default n
 	help
 	  Sets soft resource limits as specified by options
 
diff --git a/package/busybox/config/selinux/Config.in b/package/busybox/config/selinux/Config.in
index dbd960630e02855a3dcb348232f0d55def5a5abd..50f324aaa1f329c84623965b3980817a468f8dfe 100644
--- a/package/busybox/config/selinux/Config.in
+++ b/package/busybox/config/selinux/Config.in
@@ -120,4 +120,3 @@ config BUSYBOX_CONFIG_SESTATUS
 	  Displays the status of SELinux.
 
 endmenu
-
diff --git a/package/busybox/config/shell/Config.in b/package/busybox/config/shell/Config.in
index 5d492e239925ad85d6fbe861a66f30ea981e965a..d652dd30745a50ffbb2572a02cc4c08972b6cd7f 100644
--- a/package/busybox/config/shell/Config.in
+++ b/package/busybox/config/shell/Config.in
@@ -5,34 +5,7 @@
 
 menu "Shells"
 
-choice
-	prompt "Choose your default shell"
-	default BUSYBOX_CONFIG_FEATURE_SH_IS_ASH
-	help
-	  Choose a shell. The ash shell is the most bash compatible
-	  and full featured one.
-
-config BUSYBOX_CONFIG_FEATURE_SH_IS_ASH
-	select BUSYBOX_CONFIG_ASH
-	bool "ash"
-	depends on !BUSYBOX_CONFIG_NOMMU
 
-config BUSYBOX_CONFIG_FEATURE_SH_IS_HUSH
-	select BUSYBOX_CONFIG_HUSH
-	bool "hush"
-
-####config FEATURE_SH_IS_LASH
-####	select LASH
-####	bool "lash"
-
-####config FEATURE_SH_IS_MSH
-####	select MSH
-####	bool "msh"
-
-config BUSYBOX_CONFIG_FEATURE_SH_IS_NONE
-	bool "none"
-
-endchoice
 
 config BUSYBOX_CONFIG_ASH
 	bool "ash"
@@ -243,6 +216,61 @@ config BUSYBOX_CONFIG_HUSH_RANDOM_SUPPORT
 	  Enable pseudorandom generator and dynamic variable "$RANDOM".
 	  Each read of "$RANDOM" will generate a new pseudorandom value.
 
+
+choice
+	prompt "Choose which shell is aliased to 'sh' name"
+	default BUSYBOX_CONFIG_FEATURE_SH_IS_ASH
+	help
+	  Choose which shell you want to be executed by 'sh' alias.
+	  The ash shell is the most bash compatible and full featured one.
+
+# note: cannot use "select ASH" here, it breaks "make allnoconfig"
+config BUSYBOX_CONFIG_FEATURE_SH_IS_ASH
+	depends on BUSYBOX_CONFIG_ASH
+	bool "ash"
+	depends on !BUSYBOX_CONFIG_NOMMU
+
+config BUSYBOX_CONFIG_FEATURE_SH_IS_HUSH
+	depends on BUSYBOX_CONFIG_HUSH
+	bool "hush"
+
+config BUSYBOX_CONFIG_FEATURE_SH_IS_NONE
+	bool "none"
+
+endchoice
+
+choice
+	prompt "Choose which shell is aliased to 'bash' name"
+	default BUSYBOX_CONFIG_FEATURE_BASH_IS_NONE
+	help
+	  Choose which shell you want to be executed by 'bash' alias.
+	  The ash shell is the most bash compatible and full featured one.
+
+	  Note that selecting this option does not switch on any bash
+	  compatibility code. It merely makes it possible to install
+	  /bin/bash (sym)link and run scripts which start with
+	  #!/bin/bash line.
+
+	  Many systems use it in scripts which use bash-specific features,
+	  even simple ones like $RANDOM. Without this option, busybox
+	  can't be used for running them because it won't recongnize
+	  "bash" as a supported applet name.
+
+config BUSYBOX_CONFIG_FEATURE_BASH_IS_ASH
+	depends on BUSYBOX_CONFIG_ASH
+	bool "ash"
+	depends on !BUSYBOX_CONFIG_NOMMU
+
+config BUSYBOX_CONFIG_FEATURE_BASH_IS_HUSH
+	depends on BUSYBOX_CONFIG_HUSH
+	bool "hush"
+
+config BUSYBOX_CONFIG_FEATURE_BASH_IS_NONE
+	bool "none"
+
+endchoice
+
+
 config BUSYBOX_CONFIG_LASH
 	bool "lash (deprecated: aliased to hush)"
 	default n
@@ -285,14 +313,14 @@ config BUSYBOX_CONFIG_SH_MATH_SUPPORT_64
 config BUSYBOX_CONFIG_FEATURE_SH_EXTRA_QUIET
 	bool "Hide message on interactive shell startup"
 	default n
-	depends on BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH
+	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH
 	help
 	  Remove the busybox introduction when starting a shell.
 
 config BUSYBOX_CONFIG_FEATURE_SH_STANDALONE
 	bool "Standalone shell"
 	default n
-	depends on (BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH) && BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
+	depends on (BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH) && BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
 	help
 	  This option causes busybox shells to use busybox applets
 	  in preference to executables in the PATH whenever possible. For
@@ -325,7 +353,7 @@ config BUSYBOX_CONFIG_FEATURE_SH_STANDALONE
 config BUSYBOX_CONFIG_FEATURE_SH_NOFORK
 	bool "Run 'nofork' applets directly"
 	default n
-	depends on (BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH) && BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
+	depends on (BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH) && BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
 	help
 	  This option causes busybox shells [currently only ash]
 	  to not execute typical fork/exec/wait sequence, but call <applet>_main
@@ -354,9 +382,20 @@ config BUSYBOX_CONFIG_CTTYHACK
 	  It analyzes stdin with various ioctls, trying to determine whether
 	  it is a /dev/ttyN or /dev/ttySN (virtual terminal or serial line).
 	  If it detects one, it closes stdin/out/err and reopens that device.
-	  Then it executes given program. Usage example for /etc/inittab
-	  (for busybox init):
+	  Then it executes given program. Opening the device will make
+	  that device a controlling tty. This may require cttyhack
+	  to be a session leader.
+
+	  Example for /etc/inittab (for busybox init):
 
 	  ::respawn:/bin/cttyhack /bin/sh
 
+	  Giving controlling tty to shell running with PID 1:
+
+	  $ exec cttyhack sh
+
+	  Starting an interactive shell from boot shell script:
+
+	  setsid cttyhack sh
+
 endmenu
diff --git a/package/busybox/config/sysklogd/Config.in b/package/busybox/config/sysklogd/Config.in
index b9e0db2fad8cc2d70f6bd39259cdde521fbbe9ea..ea134b546ee53023e32261b5d61f7142165b71c7 100644
--- a/package/busybox/config/sysklogd/Config.in
+++ b/package/busybox/config/sysklogd/Config.in
@@ -50,6 +50,16 @@ config BUSYBOX_CONFIG_FEATURE_SYSLOGD_DUP
 	  Option -D instructs syslogd to drop consecutive messages
 	  which are totally the same.
 
+config BUSYBOX_CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE
+	int "Read buffer size in bytes"
+	default 256
+	range 256 20000
+	depends on BUSYBOX_CONFIG_SYSLOGD
+	help
+	  This option sets the size of the syslog read buffer.
+	  Actual memory usage increases around five times the
+	  change done here.
+
 config BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG
 	bool "Circular Buffer support"
 	default y
@@ -115,4 +125,3 @@ config BUSYBOX_CONFIG_LOGGER
 	    problems that occur within programs and scripts.
 
 endmenu
-
diff --git a/package/busybox/config/util-linux/Config.in b/package/busybox/config/util-linux/Config.in
index a4fbc0ce6c664128af32e0fe1075a371fb2008c8..3745528da84de7ec921bc6f3326a3632c1a53f45 100644
--- a/package/busybox/config/util-linux/Config.in
+++ b/package/busybox/config/util-linux/Config.in
@@ -5,6 +5,12 @@
 
 menu "Linux System Utilities"
 
+config BUSYBOX_CONFIG_REV
+	bool "rev"
+	default n
+	help
+	  Reverse lines of a file or files.
+
 config BUSYBOX_CONFIG_ACPID
 	bool "acpid"
 	default n
@@ -191,6 +197,12 @@ config BUSYBOX_CONFIG_FINDFS
 	  WARNING:
 	  With all submodules selected, it will add ~8k to busybox.
 
+config BUSYBOX_CONFIG_FLOCK
+	bool "flock"
+	default n
+	help
+	  Manage locks from shell scripts
+
 config BUSYBOX_CONFIG_FREERAMDISK
 	bool "freeramdisk"
 	default n
@@ -227,9 +239,6 @@ config BUSYBOX_CONFIG_MKFS_MINIX
 	  with little overhead. If you wish to be able to create minix
 	  filesystems this utility will do the job for you.
 
-comment "Minix filesystem support"
-	depends on BUSYBOX_CONFIG_FSCK_MINIX || BUSYBOX_CONFIG_MKFS_MINIX
-
 config BUSYBOX_CONFIG_FEATURE_MINIX2
 	bool "Support Minix fs v2 (fsck_minix/mkfs_minix)"
 	default n
@@ -244,6 +253,7 @@ config BUSYBOX_CONFIG_MKFS_REISER
 	default n
 	help
 	  Utility to create ReiserFS filesystems.
+	  Note: this applet needs a lot of testing and polishing.
 
 config BUSYBOX_CONFIG_MKFS_VFAT
 	bool "mkfs_vfat"
@@ -289,7 +299,7 @@ config BUSYBOX_CONFIG_FEATURE_HEXDUMP_REVERSE
 config BUSYBOX_CONFIG_HD
 	bool "hd"
 	default n
-	select BUSYBOX_CONFIG_HEXDUMP
+	depends on BUSYBOX_CONFIG_HEXDUMP
 	help
 	  hd is an alias to hexdump -C.
 
@@ -464,221 +474,6 @@ config BUSYBOX_CONFIG_FEATURE_USE_TERMIOS
 	  will be unable to determine the current screen size, and will be
 	  unable to move the cursor.
 
-config BUSYBOX_CONFIG_VOLUMEID
-	bool #No description makes it a hidden option
-	default n
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_EXT
-	bool "Ext filesystem"
-	default y
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_BTRFS
-	bool "btrfs filesystem"
-	default y
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_REISERFS
-	bool "Reiser filesystem"
-	default y
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_FAT
-	bool "fat filesystem"
-	default y
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_HFS
-	bool "hfs filesystem"
-	default y
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_JFS
-	bool "jfs filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-### config FEATURE_VOLUMEID_UFS
-###	bool "ufs filesystem"
-###	default n
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_XFS
-	bool "xfs filesystem"
-	default y
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_NTFS
-	bool "ntfs filesystem"
-	default y
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_ISO9660
-	bool "iso9660 filesystem"
-	default y
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_UDF
-	bool "udf filesystem"
-	default y
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LUKS
-	bool "luks filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXSWAP
-	bool "linux swap filesystem"
-	default y
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-### config FEATURE_VOLUMEID_LVM
-###	bool "lvm"
-###	default n
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_CRAMFS
-	bool "cramfs filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-### config FEATURE_VOLUMEID_HPFS
-###	bool "hpfs filesystem"
-###	default n
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_ROMFS
-	bool "romfs filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_SYSV
-	bool "sysv filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-### config FEATURE_VOLUMEID_MINIX
-###	bool "minix filesystem"
-###	default n
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-### These only detect partition tables - not used (yet?)
-### config FEATURE_VOLUMEID_MAC
-###	bool "mac filesystem"
-###	default n
-###	depends on VOLUMEID
-###	help
-###	  TODO
-###
-### config FEATURE_VOLUMEID_MSDOS
-###	bool "msdos filesystem"
-###	default n
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_OCFS2
-	bool "ocfs2 filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-### config FEATURE_VOLUMEID_HIGHPOINTRAID
-###	bool "highpoint raid"
-###	default n
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-### config FEATURE_VOLUMEID_ISWRAID
-###	bool "intel raid"
-###	default n
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-### config FEATURE_VOLUMEID_LSIRAID
-###	bool "lsi raid"
-###	default n
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-### config FEATURE_VOLUMEID_VIARAID
-###	bool "via raid"
-###	default n
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-### config FEATURE_VOLUMEID_SILICONRAID
-###	bool "silicon raid"
-###	default n
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-### config FEATURE_VOLUMEID_NVIDIARAID
-###	bool "nvidia raid"
-###	default n
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-### config FEATURE_VOLUMEID_PROMISERAID
-###	bool "promise raid"
-###	default n
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXRAID
-	bool "linuxraid"
-	default y
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
 config BUSYBOX_CONFIG_MOUNT
 	bool "mount"
 	default y
@@ -719,7 +514,7 @@ config BUSYBOX_CONFIG_FEATURE_MOUNT_HELPERS
 	  The idea is to use such virtual filesystems in /etc/fstab.
 
 config BUSYBOX_CONFIG_FEATURE_MOUNT_LABEL
-	bool "Support specifiying devices by label or UUID"
+	bool "Support specifying devices by label or UUID"
 	default n
 	depends on BUSYBOX_CONFIG_MOUNT
 	select BUSYBOX_CONFIG_VOLUMEID
@@ -783,9 +578,9 @@ config BUSYBOX_CONFIG_RDATE
 	  systems.
 
 config BUSYBOX_CONFIG_RDEV
-       bool "rdev"
-       default n
-       help
+	bool "rdev"
+	default n
+	help
 	  Print the device node associated with the filesystem mounted at '/'.
 
 config BUSYBOX_CONFIG_READPROFILE
@@ -895,6 +690,18 @@ config BUSYBOX_CONFIG_FEATURE_MOUNT_LOOP
 	  specify an offset or cryptographic options to the loopback device.
 	  (If you don't want umount to free the loop device, use "umount -D".)
 
+config BUSYBOX_CONFIG_FEATURE_MOUNT_LOOP_CREATE
+	bool "Create new loopback devices if needed"
+	default n
+	depends on BUSYBOX_CONFIG_FEATURE_MOUNT_LOOP
+	help
+	  Linux kernels >= 2.6.24 support unlimited loopback devices. They are
+	  allocated for use when trying to use a loop device. The loop device
+	  must however exist.
+
+	  This feature lets mount to try to create next /dev/loopN device
+	  if it does not find a free one.
+
 config BUSYBOX_CONFIG_FEATURE_MTAB_SUPPORT
 	bool "Support for the old /etc/mtab file"
 	default n
@@ -912,11 +719,231 @@ config BUSYBOX_CONFIG_FEATURE_MTAB_SUPPORT
 	  If you must use this, keep in mind it's inherently brittle (for
 	  example a mount under chroot won't update it), can't handle modern
 	  features like separate per-process filesystem namespaces, requires
-	  that your /etc directory be writeable, tends to get easily confused
+	  that your /etc directory be writable, tends to get easily confused
 	  by --bind or --move mounts, won't update if you rename a directory
 	  that contains a mount point, and so on. (In brief: avoid.)
 
 	  About the only reason to use this is if you've removed /proc from
 	  your kernel.
 
+config BUSYBOX_CONFIG_VOLUMEID
+	bool #No description makes it a hidden option
+	default n
+
+menu "Filesystem/Volume identification"
+	depends on BUSYBOX_CONFIG_VOLUMEID
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_EXT
+	bool "Ext filesystem"
+	default y
+	depends on BUSYBOX_CONFIG_VOLUMEID
+	help
+	  TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_BTRFS
+	bool "btrfs filesystem"
+	default y
+	depends on BUSYBOX_CONFIG_VOLUMEID
+	help
+	  TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_REISERFS
+	bool "Reiser filesystem"
+	default y
+	depends on BUSYBOX_CONFIG_VOLUMEID
+	help
+	  TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_FAT
+	bool "fat filesystem"
+	default y
+	depends on BUSYBOX_CONFIG_VOLUMEID
+	help
+	  TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_HFS
+	bool "hfs filesystem"
+	default y
+	depends on BUSYBOX_CONFIG_VOLUMEID
+	help
+	  TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_JFS
+	bool "jfs filesystem"
+	default n
+	depends on BUSYBOX_CONFIG_VOLUMEID
+	help
+	  TODO
+
+### config FEATURE_VOLUMEID_UFS
+###	bool "ufs filesystem"
+###	default y
+###	depends on VOLUMEID
+###	help
+###	  TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_XFS
+	bool "xfs filesystem"
+	default y
+	depends on BUSYBOX_CONFIG_VOLUMEID
+	help
+	  TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_NTFS
+	bool "ntfs filesystem"
+	default y
+	depends on BUSYBOX_CONFIG_VOLUMEID
+	help
+	  TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_ISO9660
+	bool "iso9660 filesystem"
+	default y
+	depends on BUSYBOX_CONFIG_VOLUMEID
+	help
+	  TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_UDF
+	bool "udf filesystem"
+	default y
+	depends on BUSYBOX_CONFIG_VOLUMEID
+	help
+	  TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LUKS
+	bool "luks filesystem"
+	default n
+	depends on BUSYBOX_CONFIG_VOLUMEID
+	help
+	  TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXSWAP
+	bool "linux swap filesystem"
+	default y
+	depends on BUSYBOX_CONFIG_VOLUMEID
+	help
+	  TODO
+
+### config FEATURE_VOLUMEID_LVM
+###	bool "lvm"
+###	default y
+###	depends on VOLUMEID
+###	help
+###	  TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_CRAMFS
+	bool "cramfs filesystem"
+	default n
+	depends on BUSYBOX_CONFIG_VOLUMEID
+	help
+	  TODO
+
+### config FEATURE_VOLUMEID_HPFS
+###	bool "hpfs filesystem"
+###	default y
+###	depends on VOLUMEID
+###	help
+###	  TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_ROMFS
+	bool "romfs filesystem"
+	default n
+	depends on BUSYBOX_CONFIG_VOLUMEID
+	help
+	  TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_SYSV
+	bool "sysv filesystem"
+	default n
+	depends on BUSYBOX_CONFIG_VOLUMEID
+	help
+	  TODO
+
+### config FEATURE_VOLUMEID_MINIX
+###	bool "minix filesystem"
+###	default y
+###	depends on VOLUMEID
+###	help
+###	  TODO
+
+### These only detect partition tables - not used (yet?)
+### config FEATURE_VOLUMEID_MAC
+###	bool "mac filesystem"
+###	default y
+###	depends on VOLUMEID
+###	help
+###	  TODO
+###
+### config FEATURE_VOLUMEID_MSDOS
+###	bool "msdos filesystem"
+###	default y
+###	depends on VOLUMEID
+###	help
+###	  TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_OCFS2
+	bool "ocfs2 filesystem"
+	default n
+	depends on BUSYBOX_CONFIG_VOLUMEID
+	help
+	  TODO
+
+### config FEATURE_VOLUMEID_HIGHPOINTRAID
+###	bool "highpoint raid"
+###	default y
+###	depends on VOLUMEID
+###	help
+###	  TODO
+
+### config FEATURE_VOLUMEID_ISWRAID
+###	bool "intel raid"
+###	default y
+###	depends on VOLUMEID
+###	help
+###	  TODO
+
+### config FEATURE_VOLUMEID_LSIRAID
+###	bool "lsi raid"
+###	default y
+###	depends on VOLUMEID
+###	help
+###	  TODO
+
+### config FEATURE_VOLUMEID_VIARAID
+###	bool "via raid"
+###	default y
+###	depends on VOLUMEID
+###	help
+###	  TODO
+
+### config FEATURE_VOLUMEID_SILICONRAID
+###	bool "silicon raid"
+###	default y
+###	depends on VOLUMEID
+###	help
+###	  TODO
+
+### config FEATURE_VOLUMEID_NVIDIARAID
+###	bool "nvidia raid"
+###	default y
+###	depends on VOLUMEID
+###	help
+###	  TODO
+
+### config FEATURE_VOLUMEID_PROMISERAID
+###	bool "promise raid"
+###	default y
+###	depends on VOLUMEID
+###	help
+###	  TODO
+
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXRAID
+	bool "linuxraid"
+	default y
+	depends on BUSYBOX_CONFIG_VOLUMEID
+	help
+	  TODO
+
+endmenu
+
 endmenu
diff --git a/package/busybox/patches/000-autoconf.patch b/package/busybox/patches/000-autoconf.patch
new file mode 100644
index 0000000000000000000000000000000000000000..d237457348803933bd4aa31a4d652f2560272b3a
--- /dev/null
+++ b/package/busybox/patches/000-autoconf.patch
@@ -0,0 +1,11 @@
+--- a/applets/Kbuild.src
++++ b/applets/Kbuild.src
+@@ -28,7 +28,7 @@ HOSTCFLAGS_usage_pod.o = -I$(srctree_sla
+ applets/applets.o: include/usage_compressed.h include/applet_tables.h
+ 
+ applets/applet_tables: .config include/applets.h
+-applets/usage:         .config include/applets.h
++applets/usage:         .config include/applets.h include/autoconf.h
+ applets/usage_pod:     .config include/applet_tables.h include/applets.h
+ 
+ quiet_cmd_gen_usage_compressed = GEN     include/usage_compressed.h
diff --git a/package/busybox/patches/920-mktemp.patch b/package/busybox/patches/000-upstream-mktemp.patch
similarity index 100%
rename from package/busybox/patches/920-mktemp.patch
rename to package/busybox/patches/000-upstream-mktemp.patch
diff --git a/package/busybox/patches/921-sed.patch b/package/busybox/patches/000-upstream-sed.patch
similarity index 100%
rename from package/busybox/patches/921-sed.patch
rename to package/busybox/patches/000-upstream-sed.patch
diff --git a/package/busybox/patches/922-shell.patch b/package/busybox/patches/000-upstream-shell.patch
similarity index 100%
rename from package/busybox/patches/922-shell.patch
rename to package/busybox/patches/000-upstream-shell.patch
diff --git a/package/busybox/patches/241-udhcpc-oversized_packets.patch b/package/busybox/patches/241-udhcpc-oversized_packets.patch
index b810752fcbd32d746b5a23d152151ddbaf916a12..ef9e7f4be11ca5bd442c13b714e62255c047a3de 100644
--- a/package/busybox/patches/241-udhcpc-oversized_packets.patch
+++ b/package/busybox/patches/241-udhcpc-oversized_packets.patch
@@ -12,7 +12,7 @@
  /* Construct a ip/udp header for a packet, send packet */
  int FAST_FUNC udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt,
  		uint32_t source_nip, int source_port,
-@@ -173,11 +178,12 @@ int FAST_FUNC udhcp_send_raw_packet(stru
+@@ -173,10 +178,10 @@ int FAST_FUNC udhcp_send_raw_packet(stru
  {
  	struct sockaddr_ll dest_sll;
  	struct ip_udp_dhcp_packet packet;
@@ -20,27 +20,36 @@
  	int fd;
  	int result = -1;
  	const char *msg;
- 
 +	int p_len = udhcp_get_payload_len(dhcp_pkt);
-+
+ 
  	fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP));
  	if (fd < 0) {
- 		msg = "socket(%s)";
-@@ -186,7 +192,7 @@ int FAST_FUNC udhcp_send_raw_packet(stru
+@@ -185,8 +190,8 @@ int FAST_FUNC udhcp_send_raw_packet(stru
+ 	}
  
  	memset(&dest_sll, 0, sizeof(dest_sll));
- 	memset(&packet, 0, offsetof(struct ip_udp_dhcp_packet, data));
+-	memset(&packet, 0, offsetof(struct ip_udp_dhcp_packet, data));
 -	packet.data = *dhcp_pkt; /* struct copy */
++	memset(&packet, 0, sizeof(packet));
 +	memcpy(&(packet.data), dhcp_pkt, p_len);
  
  	dest_sll.sll_family = AF_PACKET;
  	dest_sll.sll_protocol = htons(ETH_P_IP);
-@@ -208,27 +214,25 @@ int FAST_FUNC udhcp_send_raw_packet(stru
- 	 * In order to work with those buggy servers,
- 	 * we truncate packets after end option byte.
- 	 */
--	padding = DHCP_OPTIONS_BUFSIZE - 1 - udhcp_end_option(packet.data.options);
+@@ -199,36 +204,24 @@ int FAST_FUNC udhcp_send_raw_packet(stru
+ 		goto ret_close;
+ 	}
  
+-	/* We were sending full-sized DHCP packets (zero padded),
+-	 * but some badly configured servers were seen dropping them.
+-	 * Apparently they drop all DHCP packets >576 *ethernet* octets big,
+-	 * whereas they may only drop packets >576 *IP* octets big
+-	 * (which for typical Ethernet II means 590 octets: 6+6+2 + 576).
+-	 *
+-	 * In order to work with those buggy servers,
+-	 * we truncate packets after end option byte.
+-	 */
+-	padding = DHCP_OPTIONS_BUFSIZE - 1 - udhcp_end_option(packet.data.options);
+-
  	packet.ip.protocol = IPPROTO_UDP;
  	packet.ip.saddr = source_nip;
  	packet.ip.daddr = dest_nip;
@@ -65,11 +74,11 @@
  
  	udhcp_dump_packet(dhcp_pkt);
 -	result = sendto(fd, &packet, IP_UPD_DHCP_SIZE - padding, /*flags:*/ 0,
-+	result = sendto(fd, &packet, p_len, 0,
++	result = sendto(fd, &packet, p_len, /*flags:*/ 0,
  			(struct sockaddr *) &dest_sll, sizeof(dest_sll));
  	msg = "sendto";
   ret_close:
-@@ -246,7 +250,6 @@ int FAST_FUNC udhcp_send_kernel_packet(s
+@@ -246,7 +239,6 @@ int FAST_FUNC udhcp_send_kernel_packet(s
  		uint32_t dest_nip, int dest_port)
  {
  	struct sockaddr_in client;
@@ -77,10 +86,11 @@
  	int fd;
  	int result = -1;
  	const char *msg;
-@@ -278,8 +281,7 @@ int FAST_FUNC udhcp_send_kernel_packet(s
+@@ -277,9 +269,7 @@ int FAST_FUNC udhcp_send_kernel_packet(s
+ 	}
  
  	udhcp_dump_packet(dhcp_pkt);
- 
+-
 -	padding = DHCP_OPTIONS_BUFSIZE - 1 - udhcp_end_option(dhcp_pkt->options);
 -	result = safe_write(fd, dhcp_pkt, DHCP_SIZE - padding);
 +	result = safe_write(fd, dhcp_pkt, udhcp_get_payload_len(dhcp_pkt));
diff --git a/package/busybox/patches/250-ash_export-n.patch b/package/busybox/patches/250-ash_export-n.patch
index 48efdcf942805209e3e53cb9f823a6ff4c1d7307..9c23920b8848f48a7ea5d07272383aeb893546d5 100644
--- a/package/busybox/patches/250-ash_export-n.patch
+++ b/package/busybox/patches/250-ash_export-n.patch
@@ -1,6 +1,6 @@
 --- a/shell/ash.c
 +++ b/shell/ash.c
-@@ -12428,8 +12428,17 @@ exportcmd(int argc UNUSED_PARAM, char **
+@@ -12429,8 +12429,17 @@ exportcmd(int argc UNUSED_PARAM, char **
  	const char *p;
  	char **aptr;
  	int flag = argv[0][0] == 'r' ? VREADONLY : VEXPORT;
@@ -19,7 +19,7 @@
  		aptr = argptr;
  		name = *aptr;
  		if (name) {
-@@ -12441,10 +12450,12 @@ exportcmd(int argc UNUSED_PARAM, char **
+@@ -12442,10 +12451,12 @@ exportcmd(int argc UNUSED_PARAM, char **
  					vp = *findvar(hashvar(name), name);
  					if (vp) {
  						vp->flags |= flag;
diff --git a/package/busybox/patches/300-netmsg.patch b/package/busybox/patches/300-netmsg.patch
index 7e48930bbc976cf851bca5697742de07d63f1682..b7dd5d9869159bfdb640286e055bf1fb6cf9a423 100644
--- a/package/busybox/patches/300-netmsg.patch
+++ b/package/busybox/patches/300-netmsg.patch
@@ -8,18 +8,6 @@
  IF_NETSTAT(APPLET(netstat, _BB_DIR_BIN, _BB_SUID_DROP))
  IF_NICE(APPLET(nice, _BB_DIR_BIN, _BB_SUID_DROP))
  IF_NMETER(APPLET(nmeter, _BB_DIR_USR_BIN, _BB_SUID_DROP))
---- a/include/usage.src.h
-+++ b/include/usage.src.h
-@@ -2961,6 +2961,9 @@ INSERT
-        " or\n" \
-        "$ nameif -c /etc/my_mactab_file\n" \
- 
-+#define netmsg_trivial_usage NOUSAGE_STR
-+#define netmsg_full_usage ""
-+
- #define netstat_trivial_usage \
-        "[-laentuwxr"IF_FEATURE_NETSTAT_WIDE("W")IF_FEATURE_NETSTAT_PRG("p")"]"
- #define netstat_full_usage "\n\n" \
 --- a/networking/Config.src
 +++ b/networking/Config.src
 @@ -623,6 +623,12 @@ config FEATURE_NAMEIF_EXTENDED
@@ -30,7 +18,7 @@
 +	bool "netmsg"
 +	default n
 +	help
-+	 simple program for sending udp broadcast messages
++	  simple program for sending udp broadcast messages
 +
  config NETSTAT
  	bool "netstat"
@@ -111,3 +99,20 @@
 +	close(s);
 +	exit(1);
 +}
+--- a/include/usage.src.h
++++ b/include/usage.src.h
+@@ -1,3 +1,4 @@
++
+ /* vi: set sw=8 ts=8: */
+ /*
+  * This file suffers from chronically incorrect tabification
+@@ -2961,6 +2962,9 @@ INSERT
+        " or\n" \
+        "$ nameif -c /etc/my_mactab_file\n" \
+ 
++#define netmsg_trivial_usage NOUSAGE_STR
++#define netmsg_full_usage ""
++
+ #define netstat_trivial_usage \
+        "[-laentuwxr"IF_FEATURE_NETSTAT_WIDE("W")IF_FEATURE_NETSTAT_PRG("p")"]"
+ #define netstat_full_usage "\n\n" \
diff --git a/package/busybox/patches/310-passwd_access.patch b/package/busybox/patches/310-passwd_access.patch
index 24241c1260982eab24eb7ba9d0a84d4ea1bfd595..5faf6faf194e3e6be21299f1ed8099f954ed57d4 100644
--- a/package/busybox/patches/310-passwd_access.patch
+++ b/package/busybox/patches/310-passwd_access.patch
@@ -3,7 +3,7 @@
 
 --- a/networking/httpd.c
 +++ b/networking/httpd.c
-@@ -1717,21 +1717,32 @@ static int check_user_passwd(const char
+@@ -1717,21 +1717,32 @@ static int check_user_passwd(const char 
  
  		if (ENABLE_FEATURE_HTTPD_AUTH_MD5) {
  			char *md5_passwd;
diff --git a/package/busybox/patches/340-lock_util.patch b/package/busybox/patches/340-lock_util.patch
index b974b044694908cc9e637d48426c9e854f9d2501..473d1b9ac17acf38f25fc7214f64d2f712657e0c 100644
--- a/package/busybox/patches/340-lock_util.patch
+++ b/package/busybox/patches/340-lock_util.patch
@@ -10,7 +10,7 @@
  IF_LOGNAME(APPLET_NOFORK(logname, logname, _BB_DIR_USR_BIN, _BB_SUID_DROP, logname))
 --- a/include/usage.src.h
 +++ b/include/usage.src.h
-@@ -2319,6 +2319,9 @@ INSERT
+@@ -2320,6 +2320,9 @@ INSERT
  #define loadkmap_example_usage \
         "$ loadkmap < /etc/i18n/lang-keymap\n"
  
diff --git a/package/busybox/patches/350-httpd_redir.patch b/package/busybox/patches/350-httpd_redir.patch
index 2bd569c296bac61b888594571dccd52870b2f79e..7437d898c28ed79401242ebf2bd568e9cbde8fb8 100644
--- a/package/busybox/patches/350-httpd_redir.patch
+++ b/package/busybox/patches/350-httpd_redir.patch
@@ -1,6 +1,6 @@
 --- a/include/usage.src.h
 +++ b/include/usage.src.h
-@@ -1718,7 +1718,8 @@ INSERT
+@@ -1719,7 +1719,8 @@ INSERT
  	IF_FEATURE_HTTPD_SETUID(" [-u USER[:GRP]]") \
  	IF_FEATURE_HTTPD_BASIC_AUTH(" [-r REALM]") \
         " [-h HOME]\n" \
@@ -10,16 +10,15 @@
  #define httpd_full_usage "\n\n" \
         "Listen for incoming HTTP requests\n" \
       "\nOptions:" \
-@@ -2321,6 +2322,9 @@ INSERT
+@@ -1737,6 +1738,8 @@ INSERT
+      "\n	-m STRING	MD5 crypt STRING") \
+      "\n	-e STRING	HTML encode STRING" \
+      "\n	-d STRING	URL decode STRING" \
++     "\n	-R PATH		Redirect target path" \
++     "\n	-H HOST		Redirect target host" \
  
- #define lock_trivial_usage NOUSAGE_STR
- #define lock_full_usage ""
-+
-+#define lock_trivial_usage NOUSAGE_STR
-+#define lock_full_usage ""
- 
- #define logger_trivial_usage \
-        "[OPTIONS] [MESSAGE]"
+ #define hwclock_trivial_usage \
+ 	IF_FEATURE_HWCLOCK_LONG_OPTIONS( \
 --- a/networking/httpd.c
 +++ b/networking/httpd.c
 @@ -250,6 +250,8 @@ struct globals {
diff --git a/package/busybox/patches/470-insmod_search.patch b/package/busybox/patches/470-insmod_search.patch
index ef170a20c8607f49b49fbfc3c596aeab0bc99e94..8f52d985f7d84154714cc5d3fec62779efc3e8c6 100644
--- a/package/busybox/patches/470-insmod_search.patch
+++ b/package/busybox/patches/470-insmod_search.patch
@@ -124,7 +124,7 @@
  	string "Default directory containing modules"
  	default "/lib/modules"
 -	depends on DEPMOD || MODPROBE || MODPROBE_SMALL || MODINFO
-+	depends on DEPMOD || MODPROBE || MODPROBE_SMALL || MODINFO || INSMOD
++	depends on DEPMOD || INSMOD || MODPROBE || MODPROBE_SMALL || MODINFO
  	help
  	  Directory that contains kernel modules.
  	  Defaults to "/lib/modules"
diff --git a/package/busybox/patches/510-awk_include.patch b/package/busybox/patches/510-awk_include.patch
index 36dd080f978350a29e084088675ff49ca9c21f0f..07f28c9de163856cfc1769ad9d1d470137d85c70 100644
--- a/package/busybox/patches/510-awk_include.patch
+++ b/package/busybox/patches/510-awk_include.patch
@@ -1,6 +1,11 @@
 --- a/editors/awk.c
 +++ b/editors/awk.c
-@@ -70,9 +70,14 @@ typedef struct chain_s {
+@@ -1,3 +1,4 @@
++
+ /* vi: set sw=4 ts=4: */
+ /*
+  * awk implementation for busybox
+@@ -70,9 +71,14 @@ typedef struct chain_s {
  } chain;
  
  /* Function */
@@ -15,7 +20,7 @@
  } func;
  
  /* I/O stream */
-@@ -1453,7 +1458,8 @@ static void parse_program(char *p)
+@@ -1453,7 +1459,8 @@ static void parse_program(char *p)
  			next_token(TC_FUNCTION);
  			g_pos++;
  			f = newfunc(t_string);
@@ -25,7 +30,7 @@
  			f->nargs = 0;
  			while (next_token(TC_VARIABLE | TC_SEQTERM) & TC_VARIABLE) {
  				v = findvar(ahash, t_string);
-@@ -1462,7 +1468,7 @@ static void parse_program(char *p)
+@@ -1462,7 +1469,7 @@ static void parse_program(char *p)
  				if (next_token(TC_COMMA | TC_SEQTERM) & TC_SEQTERM)
  					break;
  			}
@@ -34,7 +39,7 @@
  			chain_group();
  			clear_array(ahash);
  
-@@ -2547,7 +2553,8 @@ static var *evaluate(node *op, var *res)
+@@ -2547,7 +2554,8 @@ static var *evaluate(node *op, var *res)
  			var *vbeg, *v;
  			const char *sv_progname;
  
@@ -44,7 +49,7 @@
  				syntax_error(EMSG_UNDEF_FUNC);
  
  			vbeg = v = nvalloc(op->r.f->nargs + 1);
-@@ -2564,7 +2571,10 @@ static var *evaluate(node *op, var *res)
+@@ -2564,7 +2572,10 @@ static var *evaluate(node *op, var *res)
  			fnargs = vbeg;
  			sv_progname = g_progname;
  
@@ -56,7 +61,7 @@
  
  			g_progname = sv_progname;
  			nvfree(fnargs);
-@@ -2942,6 +2952,143 @@ static rstream *next_input_file(void)
+@@ -2942,6 +2953,143 @@ static rstream *next_input_file(void)
  #undef files_happen
  }
  
@@ -200,7 +205,7 @@
  int awk_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
  int awk_main(int argc, char **argv)
  {
-@@ -3007,6 +3154,9 @@ int awk_main(int argc, char **argv)
+@@ -3007,6 +3155,9 @@ int awk_main(int argc, char **argv)
  			*s1 = '=';
  		}
  	}
diff --git a/package/busybox/patches/610-syslog-remote-retry-connection.patch b/package/busybox/patches/610-syslog-remote-retry-connection.patch
index 949ac9fd479e06e49d216cf1dd64394ebc7e96ff..94cd3ded04ddf4d94713cb86d82b9ebcc43bcfbc 100644
--- a/package/busybox/patches/610-syslog-remote-retry-connection.patch
+++ b/package/busybox/patches/610-syslog-remote-retry-connection.patch
@@ -1,34 +1,26 @@
 --- a/sysklogd/syslogd.c
 +++ b/sysklogd/syslogd.c
-@@ -98,6 +98,8 @@ struct globals {
- 	GLOBALS
- 
- #if ENABLE_FEATURE_REMOTE_LOG
-+	len_and_sockaddr *remoteAddr;
-+	int remoteFD;
- 	llist_t *remoteHosts;
- #endif
- #if ENABLE_FEATURE_IPC_SYSLOG
-@@ -554,6 +556,7 @@ static void do_syslogd(void) NORETURN;
- static void do_syslogd(void)
+@@ -555,6 +555,7 @@ static void do_syslogd(void)
  {
  	int sock_fd;
-+	int send_err = 0;
  #if ENABLE_FEATURE_REMOTE_LOG
++	int send_err = 0;
  	llist_t *item;
  #endif
-@@ -637,10 +640,23 @@ static void do_syslogd(void)
+ #if ENABLE_FEATURE_SYSLOGD_DUP
+@@ -636,11 +637,23 @@ static void do_syslogd(void)
+ 				if (rh->remoteFD == -1)
  					continue;
  			}
- 			/* Send message to remote logger, ignore possible error */
+-			/* Send message to remote logger, ignore possible error */
 -			/* TODO: on some errors, close and set G.remoteFD to -1
 -			 * so that DNS resolution and connect is retried? */
 -			sendto(rh->remoteFD, recvbuf, sz+1, MSG_DONTWAIT,
 -				&(rh->remoteAddr->u.sa), rh->remoteAddr->len);
++			/* Send message to remote logger */
 +			if (sendto(rh->remoteFD, recvbuf, sz+1, MSG_DONTWAIT,
-+				&G.remoteAddr->u.sa, G.remoteAddr->len)  == -1 ) {
++				&(rh->remoteAddr->u.sa), rh->remoteAddr->len) == -1)
 +				send_err = errno;
-+			}
 +
 +			/* On some errors, close and set G.remoteFD to -1
 +			 * so that DNS resolution and connect is retried */
@@ -38,8 +30,8 @@
 +				case EISCONN:
 +				case ENOTCONN:
 +				case EPIPE:
-+					close(G.remoteFD);
-+					G.remoteFD = -1;
++					close(rh->remoteFD);
++					rh->remoteFD = -1;
 +					break;
 +			}
  		}
diff --git a/package/busybox/patches/803-id_getgrouplist.patch b/package/busybox/patches/803-id_getgrouplist.patch
index 48aa57c04f931d94a595a016b6991f827965e929..dd2dee66f6323de61048b4b87cd9d30680104a0a 100644
--- a/package/busybox/patches/803-id_getgrouplist.patch
+++ b/package/busybox/patches/803-id_getgrouplist.patch
@@ -31,7 +31,7 @@ Signed-off-by: Nicolas Thill <nico@openwrt.org>
  		/* I guess *n < 0 might indicate error. Anyway,
  		 * malloc'ing -1 bytes won't be good, so: */
  		//if (*n < 0)
-@@ -154,6 +160,7 @@ int id_main(int argc UNUSED_PARAM, char
+@@ -154,6 +160,7 @@ int id_main(int argc UNUSED_PARAM, char 
  			if (egid != rgid)
  				status |= print_group(egid, " ");
  		}
@@ -39,7 +39,7 @@ Signed-off-by: Nicolas Thill <nico@openwrt.org>
  		/* We are supplying largish buffer, trying
  		 * to not run get_groups() twice. That might be slow
  		 * ("user database in remote SQL server" case) */
-@@ -181,6 +188,7 @@ int id_main(int argc UNUSED_PARAM, char
+@@ -181,6 +188,7 @@ int id_main(int argc UNUSED_PARAM, char 
  		}
  		if (ENABLE_FEATURE_CLEAN_UP)
  			free(groups);