blob: b980f19a92738dc6a7a1174e1ddb2d271c32d04a [file] [log] [blame]
Rob Landley5cf7c2d2006-02-21 06:44:43 +00001#
2# For a description of the syntax of this configuration file,
Kartik Agaram43b17b12018-05-31 22:15:55 -07003# see docs/Kconfig-language.txt.
Rob Landley5cf7c2d2006-02-21 06:44:43 +00004#
5
Denys Vlasenkoa3df2fa2017-07-15 20:49:32 +02006comment "Library Tuning"
Rob Landley5cf7c2d2006-02-21 06:44:43 +00007
Denys Vlasenkod70e0e92010-06-08 12:15:11 +02008INSERT
9
Denys Vlasenko24860fa2016-11-24 22:30:52 +010010choice
11 prompt "Buffer allocation policy"
12 default FEATURE_BUFFERS_USE_MALLOC
13 help
Denys Vlasenko86d5bf42017-07-27 02:59:13 +020014 There are 3 ways busybox can handle buffer allocations:
Denys Vlasenko72089cf2017-07-21 09:50:55 +020015 - 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
Denys Vlasenko86d5bf42017-07-27 02:59:13 +020020 behavior was the only one available for versions 0.48 and earlier.
Denys Vlasenko24860fa2016-11-24 22:30:52 +010021
22config FEATURE_BUFFERS_USE_MALLOC
23 bool "Allocate with Malloc"
24
25config FEATURE_BUFFERS_GO_ON_STACK
26 bool "Allocate on the Stack"
27
28config FEATURE_BUFFERS_GO_IN_BSS
29 bool "Allocate in the .bss section"
30
31endchoice
32
Denis Vlasenko7d219aa2006-10-05 10:17:08 +000033config PASSWORD_MINLEN
"Robert P. J. Day"087b9d62006-07-02 18:35:39 +000034 int "Minimum password length"
35 default 6
36 range 5 32
37 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +020038 Minimum allowable password length.
"Robert P. J. Day"087b9d62006-07-02 18:35:39 +000039
Denys Vlasenko522041e2011-09-10 13:25:57 +020040config MD5_SMALL
Denys Vlasenko7e7e08f2009-07-06 23:24:20 +020041 int "MD5: Trade bytes for speed (0:fast, 3:slow)"
Denys Vlasenkodb700332015-10-25 20:36:03 +010042 default 1 # all "fast or small" options default to small
Rob Landley5cf7c2d2006-02-21 06:44:43 +000043 range 0 3
44 help
Denys Vlasenko25aadc82021-12-30 13:07:12 +010045 Trade binary size versus speed for the md5 algorithm.
Denys Vlasenko72089cf2017-07-21 09:50:55 +020046 Approximate values running uClibc and hashing
47 linux-2.4.4.tar.bz2 were:
Denys Vlasenko25aadc82021-12-30 13:07:12 +010048 value user times (sec) text size (386)
49 0 (fastest) 1.1 6144
50 1 1.4 5392
51 2 3.0 5088
52 3 (smallest) 5.1 4912
53
54config SHA1_SMALL
55 int "SHA1: Trade bytes for speed (0:fast, 3:slow)"
56 default 3 # all "fast or small" options default to small
57 range 0 3
58 help
59 Trade binary size versus speed for the sha1 algorithm.
Denys Vlasenko1891fdd2022-02-18 17:09:51 +010060 With FEATURE_COPYBUF_KB=64:
Denys Vlasenko25aadc82021-12-30 13:07:12 +010061 throughput MB/s size of sha1_process_block64
62 value 486 x86-64 486 x86-64
Denys Vlasenko1891fdd2022-02-18 17:09:51 +010063 0 440 485 3481 3502
64 1 265 265 641 696
65 2,3 220 210 342 364
Rob Landley5cf7c2d2006-02-21 06:44:43 +000066
Denys Vlasenko711e20e2022-01-07 00:43:59 +010067config SHA1_HWACCEL
68 bool "SHA1: Use hardware accelerated instructions if possible"
69 default y
70 help
71 On x86, this adds ~590 bytes of code. Throughput
72 is about twice as fast as fully-unrolled generic code.
73
Denys Vlasenko6472ac92022-02-03 14:15:20 +010074config SHA256_HWACCEL
75 bool "SHA256: Use hardware accelerated instructions if possible"
76 default y
77 help
78 On x86, this adds ~1k bytes of code.
79
Denys Vlasenko30a86522013-01-15 01:12:26 +010080config SHA3_SMALL
81 int "SHA3: Trade bytes for speed (0:fast, 1:slow)"
Denys Vlasenkodb700332015-10-25 20:36:03 +010082 default 1 # all "fast or small" options default to small
Denys Vlasenko30a86522013-01-15 01:12:26 +010083 range 0 1
84 help
Denys Vlasenko25aadc82021-12-30 13:07:12 +010085 Trade binary size versus speed for the sha3 algorithm.
Denys Vlasenko72089cf2017-07-21 09:50:55 +020086 SHA3_SMALL=0 compared to SHA3_SMALL=1 (approximate):
87 64-bit x86: +270 bytes of code, 45% faster
88 32-bit x86: +450 bytes of code, 75% faster
Denys Vlasenko30a86522013-01-15 01:12:26 +010089
Denys Vlasenko94c78aa2021-10-12 13:23:29 +020090config FEATURE_NON_POSIX_CP
91 bool "Non-POSIX, but safer, copying to special nodes"
92 default y
Denis Vlasenko3afac4c2007-06-19 13:46:24 +000093 help
Denys Vlasenko94c78aa2021-10-12 13:23:29 +020094 With this option, "cp file symlink" will delete symlink
95 and create a regular file. This does not conform to POSIX,
96 but prevents a symlink attack.
97 Similarly, "cp file device" will not send file's data
98 to the device. (To do that, use "cat file >device")
Denis Vlasenko3afac4c2007-06-19 13:46:24 +000099
Denys Vlasenko94c78aa2021-10-12 13:23:29 +0200100config FEATURE_VERBOSE_CP_MESSAGE
101 bool "Give more precise messages when copy fails (cp, mv etc)"
Denis Vlasenkoa61cb922007-06-19 11:24:47 +0000102 default n
103 help
Denys Vlasenko94c78aa2021-10-12 13:23:29 +0200104 Error messages with this feature enabled:
Denis Vlasenkoa61cb922007-06-19 11:24:47 +0000105
Denys Vlasenko94c78aa2021-10-12 13:23:29 +0200106 $ cp file /does_not_exist/file
107 cp: cannot create '/does_not_exist/file': Path does not exist
108 $ cp file /vmlinuz/file
109 cp: cannot stat '/vmlinuz/file': Path has non-directory component
110
111 If this feature is not enabled, they will be, respectively:
112
113 cp: cannot create '/does_not_exist/file': No such file or directory
114 cp: cannot stat '/vmlinuz/file': Not a directory
115
116 This will cost you ~60 bytes.
117
118config FEATURE_USE_SENDFILE
119 bool "Use sendfile system call"
120 default y
Denys Vlasenko2aeb2012018-04-17 12:43:54 +0200121 help
Denys Vlasenko94c78aa2021-10-12 13:23:29 +0200122 When enabled, busybox will use the kernel sendfile() function
123 instead of read/write loops to copy data between file descriptors
124 (for example, cp command does this a lot).
125 If sendfile() doesn't work, copying code falls back to read/write
126 loop. sendfile() was originally implemented for faster I/O
127 from files to sockets, but since Linux 2.6.33 it was extended
128 to work for many more file types.
129
130config FEATURE_COPYBUF_KB
131 int "Copy buffer size, in kilobytes"
132 range 1 1024
133 default 4
134 help
135 Size of buffer used by cp, mv, install, wget etc.
136 Buffers which are 4 kb or less will be allocated on stack.
137 Bigger buffers will be allocated with mmap, with fallback to 4 kb
138 stack buffer if mmap fails.
139
140config MONOTONIC_SYSCALL
141 bool "Use clock_gettime(CLOCK_MONOTONIC) syscall"
142 default y
143 help
144 Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring
145 time intervals (time, ping, traceroute etc need this).
146 Probably requires Linux 2.6+. If not selected, gettimeofday
147 will be used instead (which gives wrong results if date/time
148 is reset).
149
150config IOCTL_HEX2STR_ERROR
151 bool "Use ioctl names rather than hex values in error messages"
152 default y
153 help
154 Use ioctl names rather than hex values in error messages
155 (e.g. VT_DISALLOCATE rather than 0x5608). If disabled this
156 saves about 1400 bytes.
Denys Vlasenko2aeb2012018-04-17 12:43:54 +0200157
Denis Vlasenko38f63192007-01-22 09:03:07 +0000158config FEATURE_EDITING
159 bool "Command line editing"
Denys Vlasenko2f32bf82010-06-06 04:14:28 +0200160 default y
Denis Vlasenko38f63192007-01-22 09:03:07 +0000161 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200162 Enable line editing (mainly for shell command line).
Denis Vlasenkoe8a07882007-06-10 15:08:44 +0000163
164config FEATURE_EDITING_MAX_LEN
165 int "Maximum length of input"
166 range 128 8192
167 default 1024
168 depends on FEATURE_EDITING
169 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200170 Line editing code uses on-stack buffers for storage.
171 You may want to decrease this parameter if your target machine
172 benefits from smaller stack usage.
Denis Vlasenko38f63192007-01-22 09:03:07 +0000173
Denis Vlasenko38f63192007-01-22 09:03:07 +0000174config FEATURE_EDITING_VI
175 bool "vi-style line editing commands"
176 default n
177 depends on FEATURE_EDITING
178 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200179 Enable vi-style line editing. In shells, this mode can be
180 turned on and off with "set -o vi" and "set +o vi".
Denis Vlasenko38f63192007-01-22 09:03:07 +0000181
182config FEATURE_EDITING_HISTORY
183 int "History size"
Denys Vlasenko2c4de5b2011-03-31 13:16:52 +0200184 # Don't allow way too big values here, code uses fixed "char *history[N]" struct member
185 range 0 9999
Denys Vlasenko2f32bf82010-06-06 04:14:28 +0200186 default 255
Denis Vlasenko38f63192007-01-22 09:03:07 +0000187 depends on FEATURE_EDITING
188 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200189 Specify command history size (0 - disable).
Denis Vlasenko38f63192007-01-22 09:03:07 +0000190
191config FEATURE_EDITING_SAVEHISTORY
192 bool "History saving"
Denys Vlasenko2f32bf82010-06-06 04:14:28 +0200193 default y
Denys Vlasenko99862cb2010-09-12 17:34:13 +0200194 depends on FEATURE_EDITING
Denis Vlasenko38f63192007-01-22 09:03:07 +0000195 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200196 Enable history saving in shells.
Denis Vlasenko38f63192007-01-22 09:03:07 +0000197
Denys Vlasenkobede2152011-09-04 16:12:33 +0200198config FEATURE_EDITING_SAVE_ON_EXIT
199 bool "Save history on shell exit, not after every command"
200 default n
201 depends on FEATURE_EDITING_SAVEHISTORY
202 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200203 Save history on shell exit, not after every command.
Denys Vlasenkobede2152011-09-04 16:12:33 +0200204
Denys Vlasenkoa669eca2011-07-11 07:36:59 +0200205config FEATURE_REVERSE_SEARCH
206 bool "Reverse history search"
207 default y
Denys Vlasenkofe0dc342015-10-30 21:39:19 +0100208 depends on FEATURE_EDITING
Denys Vlasenkoa669eca2011-07-11 07:36:59 +0200209 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200210 Enable readline-like Ctrl-R combination for reverse history search.
211 Increases code by about 0.5k.
Denys Vlasenkoa669eca2011-07-11 07:36:59 +0200212
Denis Vlasenko38f63192007-01-22 09:03:07 +0000213config FEATURE_TAB_COMPLETION
214 bool "Tab completion"
Denys Vlasenko2f32bf82010-06-06 04:14:28 +0200215 default y
Denis Vlasenko38f63192007-01-22 09:03:07 +0000216 depends on FEATURE_EDITING
Denis Vlasenko38f63192007-01-22 09:03:07 +0000217
218config FEATURE_USERNAME_COMPLETION
219 bool "Username completion"
Denys Vlasenko1afa4942016-12-23 13:40:24 +0100220 default y
Denis Vlasenko38f63192007-01-22 09:03:07 +0000221 depends on FEATURE_TAB_COMPLETION
Denis Vlasenko38f63192007-01-22 09:03:07 +0000222
223config FEATURE_EDITING_FANCY_PROMPT
224 bool "Fancy shell prompts"
Denys Vlasenko5d26df62010-07-16 15:31:38 +0200225 default y
Denis Vlasenko38f63192007-01-22 09:03:07 +0000226 depends on FEATURE_EDITING
227 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200228 Setting this option allows for prompts to use things like \w and
229 \$ and escape codes.
Denis Vlasenko38f63192007-01-22 09:03:07 +0000230
Ron Yorston23286902018-02-25 20:09:54 +0100231config FEATURE_EDITING_WINCH
232 bool "Enable automatic tracking of window size changes"
233 default y
234 depends on FEATURE_EDITING
235
Denys Vlasenko020f4062009-05-17 16:44:54 +0200236config FEATURE_EDITING_ASK_TERMINAL
237 bool "Query cursor position from terminal"
238 default n
239 depends on FEATURE_EDITING
240 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200241 Allow usage of "ESC [ 6 n" sequence. Terminal answers back with
242 current cursor position. This information is used to make line
243 editing more robust in some cases.
244 If you are not sure whether your terminals respond to this code
245 correctly, or want to save on code size (about 400 bytes),
246 then do not turn this option on.
Denys Vlasenko020f4062009-05-17 16:44:54 +0200247
Denys Vlasenko12559252016-11-24 22:18:55 +0100248config LOCALE_SUPPORT
249 bool "Enable locale support (system needs locale for this to work)"
250 default n
251 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200252 Enable this if your system has locale support and you would like
253 busybox to support locale settings.
Denys Vlasenko12559252016-11-24 22:18:55 +0100254
255config UNICODE_SUPPORT
256 bool "Support Unicode"
257 default y
258 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200259 This makes various applets aware that one byte is not
260 one character on screen.
Denys Vlasenko12559252016-11-24 22:18:55 +0100261
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200262 Busybox aims to eventually work correctly with Unicode displays.
263 Any older encodings are not guaranteed to work.
264 Probably by the time when busybox will be fully Unicode-clean,
265 other encodings will be mainly of historic interest.
Denys Vlasenko12559252016-11-24 22:18:55 +0100266
267config UNICODE_USING_LOCALE
268 bool "Use libc routines for Unicode (else uses internal ones)"
269 default n
270 depends on UNICODE_SUPPORT && LOCALE_SUPPORT
271 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200272 With this option on, Unicode support is implemented using libc
273 routines. Otherwise, internal implementation is used.
274 Internal implementation is smaller.
Denys Vlasenko12559252016-11-24 22:18:55 +0100275
276config FEATURE_CHECK_UNICODE_IN_ENV
277 bool "Check $LC_ALL, $LC_CTYPE and $LANG environment variables"
278 default n
279 depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE
280 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200281 With this option on, Unicode support is activated
282 only if locale-related variables have the value of the form
283 "xxxx.utf8"
Denys Vlasenko12559252016-11-24 22:18:55 +0100284
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200285 Otherwise, Unicode support will be always enabled and active.
Denys Vlasenko12559252016-11-24 22:18:55 +0100286
287config SUBST_WCHAR
288 int "Character code to substitute unprintable characters with"
289 depends on UNICODE_SUPPORT
290 default 63
291 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200292 Typical values are 63 for '?' (works with any output device),
293 30 for ASCII substitute control code,
294 65533 (0xfffd) for Unicode replacement character.
Denys Vlasenko12559252016-11-24 22:18:55 +0100295
296config LAST_SUPPORTED_WCHAR
297 int "Range of supported Unicode characters"
298 depends on UNICODE_SUPPORT
299 default 767
300 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200301 Any character with Unicode value bigger than this is assumed
302 to be non-printable on output device. Many applets replace
303 such characters with substitution character.
Denys Vlasenko12559252016-11-24 22:18:55 +0100304
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200305 The idea is that many valid printable Unicode chars
306 nevertheless are not displayed correctly. Think about
307 combining charachers, double-wide hieroglyphs, obscure
308 characters in dozens of ancient scripts...
309 Many terminals, terminal emulators, xterms etc will fail
310 to handle them correctly. Choose the smallest value
311 which suits your needs.
Denys Vlasenko12559252016-11-24 22:18:55 +0100312
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200313 Typical values are:
314 126 - ASCII only
315 767 (0x2ff) - there are no combining chars in [0..767] range
Denys Vlasenko12559252016-11-24 22:18:55 +0100316 (the range includes Latin 1, Latin Ext. A and B),
317 code is ~700 bytes smaller for this case.
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200318 4351 (0x10ff) - there are no double-wide chars in [0..4351] range,
Denys Vlasenko12559252016-11-24 22:18:55 +0100319 code is ~300 bytes smaller for this case.
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200320 12799 (0x31ff) - nearly all non-ideographic characters are
Denys Vlasenko12559252016-11-24 22:18:55 +0100321 available in [0..12799] range, including
322 East Asian scripts like katakana, hiragana, hangul,
323 bopomofo...
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200324 0 - off, any valid printable Unicode character will be printed.
Denys Vlasenko12559252016-11-24 22:18:55 +0100325
326config UNICODE_COMBINING_WCHARS
327 bool "Allow zero-width Unicode characters on output"
328 default n
329 depends on UNICODE_SUPPORT
330 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200331 With this option off, any Unicode char with width of 0
332 is substituted on output.
Denys Vlasenko12559252016-11-24 22:18:55 +0100333
334config UNICODE_WIDE_WCHARS
335 bool "Allow wide Unicode characters on output"
336 default n
337 depends on UNICODE_SUPPORT
338 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200339 With this option off, any Unicode char with width > 1
340 is substituted on output.
Denys Vlasenko12559252016-11-24 22:18:55 +0100341
342config UNICODE_BIDI_SUPPORT
343 bool "Bidirectional character-aware line input"
344 default n
345 depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE
346 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200347 With this option on, right-to-left Unicode characters
348 are treated differently on input (e.g. cursor movement).
Denys Vlasenko12559252016-11-24 22:18:55 +0100349
350config UNICODE_NEUTRAL_TABLE
351 bool "In bidi input, support non-ASCII neutral chars too"
352 default n
353 depends on UNICODE_BIDI_SUPPORT
354 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200355 In most cases it's enough to treat only ASCII non-letters
356 (i.e. punctuation, numbers and space) as characters
357 with neutral directionality.
358 With this option on, more extensive (and bigger) table
359 of neutral chars will be used.
Denys Vlasenko12559252016-11-24 22:18:55 +0100360
361config UNICODE_PRESERVE_BROKEN
362 bool "Make it possible to enter sequences of chars which are not Unicode"
363 default n
364 depends on UNICODE_SUPPORT
365 help
Denys Vlasenko72089cf2017-07-21 09:50:55 +0200366 With this option on, on line-editing input (such as used by shells)
367 invalid UTF-8 bytes are not substituted with the selected
368 substitution character.
369 For example, this means that entering 'l', 's', ' ', 0xff, [Enter]
370 at shell prompt will list file named 0xff (single char name
371 with char value 255), not file named '?'.
Denys Vlasenko45734a22022-12-13 14:27:08 +0100372
373choice
374 prompt "Use LOOP_CONFIGURE for losetup and loop mounts"
375 default TRY_LOOP_CONFIGURE
376 help
377 LOOP_CONFIGURE is added to Linux 5.8
378 https://lwn.net/Articles/820408/
379 This allows userspace to completely setup a loop device with a single
380 ioctl, removing the in-between state where the device can be partially
381 configured - eg the loop device has a backing file associated with it,
382 but is reading from the wrong offset.
383
384config LOOP_CONFIGURE
385 bool "use LOOP_CONFIGURE, needs kernel >= 5.8"
386
387config NO_LOOP_CONFIGURE
388 bool "use LOOP_SET_FD + LOOP_SET_STATUS"
389
390config TRY_LOOP_CONFIGURE
391 bool "try LOOP_CONFIGURE, fall back to LOOP_SET_FD + LOOP_SET_STATUS"
392
393endchoice