2 # For a description of the syntax of this configuration file,
3 # see scripts/kbuild/config-language.txt.
6 menu "Busybox Library Tuning"
10 config PASSWORD_MINLEN
11 int "Minimum password length"
15 Minimum allowable password length.
18 int "MD5: Trade bytes for speed (0:fast, 3:slow)"
19 default 1 # all "fast or small" options default to small
22 Trade binary size versus speed for the md5sum algorithm.
23 Approximate values running uClibc and hashing
24 linux-2.4.4.tar.bz2 were:
25 user times (sec) text size (386)
32 int "SHA3: Trade bytes for speed (0:fast, 1:slow)"
33 default 1 # all "fast or small" options default to small
36 Trade binary size versus speed for the sha3sum algorithm.
37 SHA3_SMALL=0 compared to SHA3_SMALL=1 (approximate):
38 64-bit x86: +270 bytes of code, 45% faster
39 32-bit x86: +450 bytes of code, 75% faster
41 config FEATURE_FAST_TOP
42 bool "Faster /proc scanning code (+100 bytes)"
43 default n # all "fast or small" options default to small
45 This option makes top (and ps) ~20% faster (or 20% less CPU hungry),
46 but code size is slightly bigger.
48 config FEATURE_ETC_NETWORKS
49 bool "Support for /etc/networks"
52 Enable support for network names in /etc/networks. This is
53 a rarely used feature which allows you to use names
54 instead of IP/mask pairs in route command.
56 config FEATURE_USE_TERMIOS
57 bool "Use termios to manipulate the screen"
59 depends on MORE || TOP || POWERTOP
61 This option allows utilities such as 'more' and 'top' to determine
62 the size of the screen. If you leave this disabled, your utilities
63 that display things on the screen will be especially primitive and
64 will be unable to determine the current screen size, and will be
65 unable to move the cursor.
67 config FEATURE_EDITING
68 bool "Command line editing"
71 Enable line editing (mainly for shell command line).
73 config FEATURE_EDITING_MAX_LEN
74 int "Maximum length of input"
77 depends on FEATURE_EDITING
79 Line editing code uses on-stack buffers for storage.
80 You may want to decrease this parameter if your target machine
81 benefits from smaller stack usage.
83 config FEATURE_EDITING_VI
84 bool "vi-style line editing commands"
86 depends on FEATURE_EDITING
88 Enable vi-style line editing. In shells, this mode can be
89 turned on and off with "set -o vi" and "set +o vi".
91 config FEATURE_EDITING_HISTORY
93 # Don't allow way too big values here, code uses fixed "char *history[N]" struct member
96 depends on FEATURE_EDITING
98 Specify command history size (0 - disable).
100 config FEATURE_EDITING_SAVEHISTORY
101 bool "History saving"
103 depends on FEATURE_EDITING
105 Enable history saving in shells.
107 config FEATURE_EDITING_SAVE_ON_EXIT
108 bool "Save history on shell exit, not after every command"
110 depends on FEATURE_EDITING_SAVEHISTORY
112 Save history on shell exit, not after every command.
114 config FEATURE_REVERSE_SEARCH
115 bool "Reverse history search"
117 depends on FEATURE_EDITING
119 Enable readline-like Ctrl-R combination for reverse history search.
120 Increases code by about 0.5k.
122 config FEATURE_TAB_COMPLETION
123 bool "Tab completion"
125 depends on FEATURE_EDITING
127 Enable tab completion.
129 config FEATURE_USERNAME_COMPLETION
130 bool "Username completion"
132 depends on FEATURE_TAB_COMPLETION
134 Enable username completion.
136 config FEATURE_EDITING_FANCY_PROMPT
137 bool "Fancy shell prompts"
139 depends on FEATURE_EDITING
141 Setting this option allows for prompts to use things like \w and
144 config FEATURE_EDITING_ASK_TERMINAL
145 bool "Query cursor position from terminal"
147 depends on FEATURE_EDITING
149 Allow usage of "ESC [ 6 n" sequence. Terminal answers back with
150 current cursor position. This information is used to make line
151 editing more robust in some cases.
152 If you are not sure whether your terminals respond to this code
153 correctly, or want to save on code size (about 400 bytes),
154 then do not turn this option on.
156 config LOCALE_SUPPORT
157 bool "Enable locale support (system needs locale for this to work)"
160 Enable this if your system has locale support and you would like
161 busybox to support locale settings.
163 config UNICODE_SUPPORT
164 bool "Support Unicode"
167 This makes various applets aware that one byte is not
168 one character on screen.
170 Busybox aims to eventually work correctly with Unicode displays.
171 Any older encodings are not guaranteed to work.
172 Probably by the time when busybox will be fully Unicode-clean,
173 other encodings will be mainly of historic interest.
175 config UNICODE_USING_LOCALE
176 bool "Use libc routines for Unicode (else uses internal ones)"
178 depends on UNICODE_SUPPORT && LOCALE_SUPPORT
180 With this option on, Unicode support is implemented using libc
181 routines. Otherwise, internal implementation is used.
182 Internal implementation is smaller.
184 config FEATURE_CHECK_UNICODE_IN_ENV
185 bool "Check $LC_ALL, $LC_CTYPE and $LANG environment variables"
187 depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE
189 With this option on, Unicode support is activated
190 only if locale-related variables have the value of the form
193 Otherwise, Unicode support will be always enabled and active.
196 int "Character code to substitute unprintable characters with"
197 depends on UNICODE_SUPPORT
200 Typical values are 63 for '?' (works with any output device),
201 30 for ASCII substitute control code,
202 65533 (0xfffd) for Unicode replacement character.
204 config LAST_SUPPORTED_WCHAR
205 int "Range of supported Unicode characters"
206 depends on UNICODE_SUPPORT
209 Any character with Unicode value bigger than this is assumed
210 to be non-printable on output device. Many applets replace
211 such characters with substitution character.
213 The idea is that many valid printable Unicode chars
214 nevertheless are not displayed correctly. Think about
215 combining charachers, double-wide hieroglyphs, obscure
216 characters in dozens of ancient scripts...
217 Many terminals, terminal emulators, xterms etc will fail
218 to handle them correctly. Choose the smallest value
219 which suits your needs.
223 767 (0x2ff) - there are no combining chars in [0..767] range
224 (the range includes Latin 1, Latin Ext. A and B),
225 code is ~700 bytes smaller for this case.
226 4351 (0x10ff) - there are no double-wide chars in [0..4351] range,
227 code is ~300 bytes smaller for this case.
228 12799 (0x31ff) - nearly all non-ideographic characters are
229 available in [0..12799] range, including
230 East Asian scripts like katakana, hiragana, hangul,
232 0 - off, any valid printable Unicode character will be printed.
234 config UNICODE_COMBINING_WCHARS
235 bool "Allow zero-width Unicode characters on output"
237 depends on UNICODE_SUPPORT
239 With this option off, any Unicode char with width of 0
240 is substituted on output.
242 config UNICODE_WIDE_WCHARS
243 bool "Allow wide Unicode characters on output"
245 depends on UNICODE_SUPPORT
247 With this option off, any Unicode char with width > 1
248 is substituted on output.
250 config UNICODE_BIDI_SUPPORT
251 bool "Bidirectional character-aware line input"
253 depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE
255 With this option on, right-to-left Unicode characters
256 are treated differently on input (e.g. cursor movement).
258 config UNICODE_NEUTRAL_TABLE
259 bool "In bidi input, support non-ASCII neutral chars too"
261 depends on UNICODE_BIDI_SUPPORT
263 In most cases it's enough to treat only ASCII non-letters
264 (i.e. punctuation, numbers and space) as characters
265 with neutral directionality.
266 With this option on, more extensive (and bigger) table
267 of neutral chars will be used.
269 config UNICODE_PRESERVE_BROKEN
270 bool "Make it possible to enter sequences of chars which are not Unicode"
272 depends on UNICODE_SUPPORT
274 With this option on, on line-editing input (such as used by shells)
275 invalid UTF-8 bytes are not substituted with the selected
276 substitution character.
277 For example, this means that entering 'l', 's', ' ', 0xff, [Enter]
278 at shell prompt will list file named 0xff (single char name
279 with char value 255), not file named '?'.
281 config FEATURE_NON_POSIX_CP
282 bool "Non-POSIX, but safer, copying to special nodes"
285 With this option, "cp file symlink" will delete symlink
286 and create a regular file. This does not conform to POSIX,
287 but prevents a symlink attack.
288 Similarly, "cp file device" will not send file's data
289 to the device. (To do that, use "cat file >device")
291 config FEATURE_VERBOSE_CP_MESSAGE
292 bool "Give more precise messages when copy fails (cp, mv etc)"
295 Error messages with this feature enabled:
296 $ cp file /does_not_exist/file
297 cp: cannot create '/does_not_exist/file': Path does not exist
298 $ cp file /vmlinuz/file
299 cp: cannot stat '/vmlinuz/file': Path has non-directory component
300 If this feature is not enabled, they will be, respectively:
301 cp: cannot create '/does_not_exist/file': No such file or directory
302 cp: cannot stat '/vmlinuz/file': Not a directory
303 This will cost you ~60 bytes.
305 config FEATURE_USE_SENDFILE
306 bool "Use sendfile system call"
308 select PLATFORM_LINUX
310 When enabled, busybox will use the kernel sendfile() function
311 instead of read/write loops to copy data between file descriptors
312 (for example, cp command does this a lot).
313 If sendfile() doesn't work, copying code falls back to read/write
314 loop. sendfile() was originally implemented for faster I/O
315 from files to sockets, but since Linux 2.6.33 it was extended
316 to work for many more file types.
318 config FEATURE_COPYBUF_KB
319 int "Copy buffer size, in kilobytes"
323 Size of buffer used by cp, mv, install, wget etc.
324 Buffers which are 4 kb or less will be allocated on stack.
325 Bigger buffers will be allocated with mmap, with fallback to 4 kb
326 stack buffer if mmap fails.
328 config FEATURE_SKIP_ROOTFS
329 bool "Skip rootfs in mount table"
332 Ignore rootfs entry in mount table.
334 In Linux, kernel has a special filesystem, rootfs, which is initially
335 mounted on /. It contains initramfs data, if kernel is configured
336 to have one. Usually, another file system is mounted over / early
337 in boot process, and therefore most tools which manipulate
338 mount table, such as df, will skip rootfs entry.
340 However, some systems do not mount anything on /.
341 If you need to configure busybox for one of these systems,
342 you may find it useful to turn this option off to make df show
343 initramfs statistics.
347 config MONOTONIC_SYSCALL
348 bool "Use clock_gettime(CLOCK_MONOTONIC) syscall"
350 select PLATFORM_LINUX
352 Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring
353 time intervals (time, ping, traceroute etc need this).
354 Probably requires Linux 2.6+. If not selected, gettimeofday
355 will be used instead (which gives wrong results if date/time
358 config IOCTL_HEX2STR_ERROR
359 bool "Use ioctl names rather than hex values in error messages"
362 Use ioctl names rather than hex values in error messages
363 (e.g. VT_DISALLOCATE rather than 0x5608). If disabled this
364 saves about 1400 bytes.
367 bool "Support infiniband HW"
370 Support for printing infiniband addresses in