2 # For a description of the syntax of this configuration file,
3 # see docs/Kconfig-language.txt.
6 comment "Library Tuning"
11 prompt "Buffer allocation policy"
12 default FEATURE_BUFFERS_USE_MALLOC
14 There are 3 ways busybox can handle buffer allocations:
15 - Use malloc. This costs code size for the call to xmalloc.
16 - Put them on stack. For some very small machines with limited stack
17 space, this can be deadly. For most folks, this works just fine.
18 - Put them in BSS. This works beautifully for computers with a real
19 MMU (and OS support), but wastes runtime RAM for uCLinux. This
20 behavior was the only one available for versions 0.48 and earlier.
22 config FEATURE_BUFFERS_USE_MALLOC
23 bool "Allocate with Malloc"
25 config FEATURE_BUFFERS_GO_ON_STACK
26 bool "Allocate on the Stack"
28 config FEATURE_BUFFERS_GO_IN_BSS
29 bool "Allocate in the .bss section"
33 config PASSWORD_MINLEN
34 int "Minimum password length"
38 Minimum allowable password length.
41 int "MD5: Trade bytes for speed (0:fast, 3:slow)"
42 default 1 # all "fast or small" options default to small
45 Trade binary size versus speed for the md5sum algorithm.
46 Approximate values running uClibc and hashing
47 linux-2.4.4.tar.bz2 were:
48 value user times (sec) text size (386)
55 int "SHA3: Trade bytes for speed (0:fast, 1:slow)"
56 default 1 # all "fast or small" options default to small
59 Trade binary size versus speed for the sha3sum algorithm.
60 SHA3_SMALL=0 compared to SHA3_SMALL=1 (approximate):
61 64-bit x86: +270 bytes of code, 45% faster
62 32-bit x86: +450 bytes of code, 75% faster
64 config FEATURE_FAST_TOP
65 bool "Faster /proc scanning code (+100 bytes)"
66 default n # all "fast or small" options default to small
68 This option makes top and ps ~20% faster (or 20% less CPU hungry),
69 but code size is slightly bigger.
71 config FEATURE_ETC_NETWORKS
72 bool "Support /etc/networks"
75 Enable support for network names in /etc/networks. This is
76 a rarely used feature which allows you to use names
77 instead of IP/mask pairs in route command.
79 config FEATURE_ETC_SERVICES
80 bool "Consult /etc/services even for well-known ports"
83 Look up e.g. "telnet" and "http" in /etc/services file
84 instead of assuming ports 23 and 80.
85 This is almost never necessary (everybody uses standard ports),
86 and it makes sense to avoid reading this file.
87 If you disable this option, in the cases where port is explicitly
88 specified as a service name (e.g. "telnet HOST PORTNAME"),
89 it will still be looked up in /etc/services.
91 config FEATURE_EDITING
92 bool "Command line editing"
95 Enable line editing (mainly for shell command line).
97 config FEATURE_EDITING_MAX_LEN
98 int "Maximum length of input"
101 depends on FEATURE_EDITING
103 Line editing code uses on-stack buffers for storage.
104 You may want to decrease this parameter if your target machine
105 benefits from smaller stack usage.
107 config FEATURE_EDITING_VI
108 bool "vi-style line editing commands"
110 depends on FEATURE_EDITING
112 Enable vi-style line editing. In shells, this mode can be
113 turned on and off with "set -o vi" and "set +o vi".
115 config FEATURE_EDITING_HISTORY
117 # Don't allow way too big values here, code uses fixed "char *history[N]" struct member
120 depends on FEATURE_EDITING
122 Specify command history size (0 - disable).
124 config FEATURE_EDITING_SAVEHISTORY
125 bool "History saving"
127 depends on FEATURE_EDITING
129 Enable history saving in shells.
131 config FEATURE_EDITING_SAVE_ON_EXIT
132 bool "Save history on shell exit, not after every command"
134 depends on FEATURE_EDITING_SAVEHISTORY
136 Save history on shell exit, not after every command.
138 config FEATURE_REVERSE_SEARCH
139 bool "Reverse history search"
141 depends on FEATURE_EDITING
143 Enable readline-like Ctrl-R combination for reverse history search.
144 Increases code by about 0.5k.
146 config FEATURE_TAB_COMPLETION
147 bool "Tab completion"
149 depends on FEATURE_EDITING
151 config FEATURE_USERNAME_COMPLETION
152 bool "Username completion"
154 depends on FEATURE_TAB_COMPLETION
156 config FEATURE_EDITING_FANCY_PROMPT
157 bool "Fancy shell prompts"
159 depends on FEATURE_EDITING
161 Setting this option allows for prompts to use things like \w and
164 config FEATURE_EDITING_WINCH
165 bool "Enable automatic tracking of window size changes"
167 depends on FEATURE_EDITING
169 config FEATURE_EDITING_ASK_TERMINAL
170 bool "Query cursor position from terminal"
172 depends on FEATURE_EDITING
174 Allow usage of "ESC [ 6 n" sequence. Terminal answers back with
175 current cursor position. This information is used to make line
176 editing more robust in some cases.
177 If you are not sure whether your terminals respond to this code
178 correctly, or want to save on code size (about 400 bytes),
179 then do not turn this option on.
181 config LOCALE_SUPPORT
182 bool "Enable locale support (system needs locale for this to work)"
185 Enable this if your system has locale support and you would like
186 busybox to support locale settings.
188 config UNICODE_SUPPORT
189 bool "Support Unicode"
192 This makes various applets aware that one byte is not
193 one character on screen.
195 Busybox aims to eventually work correctly with Unicode displays.
196 Any older encodings are not guaranteed to work.
197 Probably by the time when busybox will be fully Unicode-clean,
198 other encodings will be mainly of historic interest.
200 config UNICODE_USING_LOCALE
201 bool "Use libc routines for Unicode (else uses internal ones)"
203 depends on UNICODE_SUPPORT && LOCALE_SUPPORT
205 With this option on, Unicode support is implemented using libc
206 routines. Otherwise, internal implementation is used.
207 Internal implementation is smaller.
209 config FEATURE_CHECK_UNICODE_IN_ENV
210 bool "Check $LC_ALL, $LC_CTYPE and $LANG environment variables"
212 depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE
214 With this option on, Unicode support is activated
215 only if locale-related variables have the value of the form
218 Otherwise, Unicode support will be always enabled and active.
221 int "Character code to substitute unprintable characters with"
222 depends on UNICODE_SUPPORT
225 Typical values are 63 for '?' (works with any output device),
226 30 for ASCII substitute control code,
227 65533 (0xfffd) for Unicode replacement character.
229 config LAST_SUPPORTED_WCHAR
230 int "Range of supported Unicode characters"
231 depends on UNICODE_SUPPORT
234 Any character with Unicode value bigger than this is assumed
235 to be non-printable on output device. Many applets replace
236 such characters with substitution character.
238 The idea is that many valid printable Unicode chars
239 nevertheless are not displayed correctly. Think about
240 combining charachers, double-wide hieroglyphs, obscure
241 characters in dozens of ancient scripts...
242 Many terminals, terminal emulators, xterms etc will fail
243 to handle them correctly. Choose the smallest value
244 which suits your needs.
248 767 (0x2ff) - there are no combining chars in [0..767] range
249 (the range includes Latin 1, Latin Ext. A and B),
250 code is ~700 bytes smaller for this case.
251 4351 (0x10ff) - there are no double-wide chars in [0..4351] range,
252 code is ~300 bytes smaller for this case.
253 12799 (0x31ff) - nearly all non-ideographic characters are
254 available in [0..12799] range, including
255 East Asian scripts like katakana, hiragana, hangul,
257 0 - off, any valid printable Unicode character will be printed.
259 config UNICODE_COMBINING_WCHARS
260 bool "Allow zero-width Unicode characters on output"
262 depends on UNICODE_SUPPORT
264 With this option off, any Unicode char with width of 0
265 is substituted on output.
267 config UNICODE_WIDE_WCHARS
268 bool "Allow wide Unicode characters on output"
270 depends on UNICODE_SUPPORT
272 With this option off, any Unicode char with width > 1
273 is substituted on output.
275 config UNICODE_BIDI_SUPPORT
276 bool "Bidirectional character-aware line input"
278 depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE
280 With this option on, right-to-left Unicode characters
281 are treated differently on input (e.g. cursor movement).
283 config UNICODE_NEUTRAL_TABLE
284 bool "In bidi input, support non-ASCII neutral chars too"
286 depends on UNICODE_BIDI_SUPPORT
288 In most cases it's enough to treat only ASCII non-letters
289 (i.e. punctuation, numbers and space) as characters
290 with neutral directionality.
291 With this option on, more extensive (and bigger) table
292 of neutral chars will be used.
294 config UNICODE_PRESERVE_BROKEN
295 bool "Make it possible to enter sequences of chars which are not Unicode"
297 depends on UNICODE_SUPPORT
299 With this option on, on line-editing input (such as used by shells)
300 invalid UTF-8 bytes are not substituted with the selected
301 substitution character.
302 For example, this means that entering 'l', 's', ' ', 0xff, [Enter]
303 at shell prompt will list file named 0xff (single char name
304 with char value 255), not file named '?'.
306 config FEATURE_NON_POSIX_CP
307 bool "Non-POSIX, but safer, copying to special nodes"
310 With this option, "cp file symlink" will delete symlink
311 and create a regular file. This does not conform to POSIX,
312 but prevents a symlink attack.
313 Similarly, "cp file device" will not send file's data
314 to the device. (To do that, use "cat file >device")
316 config FEATURE_VERBOSE_CP_MESSAGE
317 bool "Give more precise messages when copy fails (cp, mv etc)"
320 Error messages with this feature enabled:
322 $ cp file /does_not_exist/file
323 cp: cannot create '/does_not_exist/file': Path does not exist
324 $ cp file /vmlinuz/file
325 cp: cannot stat '/vmlinuz/file': Path has non-directory component
327 If this feature is not enabled, they will be, respectively:
329 cp: cannot create '/does_not_exist/file': No such file or directory
330 cp: cannot stat '/vmlinuz/file': Not a directory
332 This will cost you ~60 bytes.
334 config FEATURE_USE_SENDFILE
335 bool "Use sendfile system call"
337 select PLATFORM_LINUX
339 When enabled, busybox will use the kernel sendfile() function
340 instead of read/write loops to copy data between file descriptors
341 (for example, cp command does this a lot).
342 If sendfile() doesn't work, copying code falls back to read/write
343 loop. sendfile() was originally implemented for faster I/O
344 from files to sockets, but since Linux 2.6.33 it was extended
345 to work for many more file types.
347 config FEATURE_COPYBUF_KB
348 int "Copy buffer size, in kilobytes"
352 Size of buffer used by cp, mv, install, wget etc.
353 Buffers which are 4 kb or less will be allocated on stack.
354 Bigger buffers will be allocated with mmap, with fallback to 4 kb
355 stack buffer if mmap fails.
357 config FEATURE_SKIP_ROOTFS
358 bool "Skip rootfs in mount table"
361 Ignore rootfs entry in mount table.
363 In Linux, kernel has a special filesystem, rootfs, which is initially
364 mounted on /. It contains initramfs data, if kernel is configured
365 to have one. Usually, another file system is mounted over / early
366 in boot process, and therefore most tools which manipulate
367 mount table, such as df, will skip rootfs entry.
369 However, some systems do not mount anything on /.
370 If you need to configure busybox for one of these systems,
371 you may find it useful to turn this option off to make df show
372 initramfs statistics.
376 config MONOTONIC_SYSCALL
377 bool "Use clock_gettime(CLOCK_MONOTONIC) syscall"
379 select PLATFORM_LINUX
381 Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring
382 time intervals (time, ping, traceroute etc need this).
383 Probably requires Linux 2.6+. If not selected, gettimeofday
384 will be used instead (which gives wrong results if date/time
387 config IOCTL_HEX2STR_ERROR
388 bool "Use ioctl names rather than hex values in error messages"
391 Use ioctl names rather than hex values in error messages
392 (e.g. VT_DISALLOCATE rather than 0x5608). If disabled this
393 saves about 1400 bytes.
396 bool "Support infiniband HW"
399 Support for printing infiniband addresses in network applets.