blob: 172fbcc0e7c9ac0c6889cf2c56b19ce139fb633b
1 | # |
2 | # For a description of the syntax of this configuration file, |
3 | # see scripts/kbuild/config-language.txt. |
4 | # |
5 | |
6 | menu "Busybox Library Tuning" |
7 | |
8 | INSERT |
9 | |
10 | choice |
11 | prompt "Buffer allocation policy" |
12 | default FEATURE_BUFFERS_USE_MALLOC |
13 | help |
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 BusyBox versions 0.48 and |
21 | earlier. |
22 | |
23 | config FEATURE_BUFFERS_USE_MALLOC |
24 | bool "Allocate with Malloc" |
25 | |
26 | config FEATURE_BUFFERS_GO_ON_STACK |
27 | bool "Allocate on the Stack" |
28 | |
29 | config FEATURE_BUFFERS_GO_IN_BSS |
30 | bool "Allocate in the .bss section" |
31 | |
32 | endchoice |
33 | |
34 | config PASSWORD_MINLEN |
35 | int "Minimum password length" |
36 | default 6 |
37 | range 5 32 |
38 | help |
39 | Minimum allowable password length. |
40 | |
41 | config MD5_SMALL |
42 | int "MD5: Trade bytes for speed (0:fast, 3:slow)" |
43 | default 1 # all "fast or small" options default to small |
44 | range 0 3 |
45 | help |
46 | Trade binary size versus speed for the md5sum algorithm. |
47 | Approximate values running uClibc and hashing |
48 | linux-2.4.4.tar.bz2 were: |
49 | user times (sec) text size (386) |
50 | 0 (fastest) 1.1 6144 |
51 | 1 1.4 5392 |
52 | 2 3.0 5088 |
53 | 3 (smallest) 5.1 4912 |
54 | |
55 | config SHA3_SMALL |
56 | int "SHA3: Trade bytes for speed (0:fast, 1:slow)" |
57 | default 1 # all "fast or small" options default to small |
58 | range 0 1 |
59 | help |
60 | Trade binary size versus speed for the sha3sum algorithm. |
61 | SHA3_SMALL=0 compared to SHA3_SMALL=1 (approximate): |
62 | 64-bit x86: +270 bytes of code, 45% faster |
63 | 32-bit x86: +450 bytes of code, 75% faster |
64 | |
65 | config FEATURE_FAST_TOP |
66 | bool "Faster /proc scanning code (+100 bytes)" |
67 | default n # all "fast or small" options default to small |
68 | help |
69 | This option makes top (and ps) ~20% faster (or 20% less CPU hungry), |
70 | but code size is slightly bigger. |
71 | |
72 | config FEATURE_ETC_NETWORKS |
73 | bool "Support for /etc/networks" |
74 | default n |
75 | help |
76 | Enable support for network names in /etc/networks. This is |
77 | a rarely used feature which allows you to use names |
78 | instead of IP/mask pairs in route command. |
79 | |
80 | config FEATURE_USE_TERMIOS |
81 | bool "Use termios to manipulate the screen" |
82 | default y |
83 | depends on MORE || TOP || POWERTOP |
84 | help |
85 | This option allows utilities such as 'more' and 'top' to determine |
86 | the size of the screen. If you leave this disabled, your utilities |
87 | that display things on the screen will be especially primitive and |
88 | will be unable to determine the current screen size, and will be |
89 | unable to move the cursor. |
90 | |
91 | config FEATURE_EDITING |
92 | bool "Command line editing" |
93 | default y |
94 | help |
95 | Enable line editing (mainly for shell command line). |
96 | |
97 | config FEATURE_EDITING_MAX_LEN |
98 | int "Maximum length of input" |
99 | range 128 8192 |
100 | default 1024 |
101 | depends on FEATURE_EDITING |
102 | help |
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. |
106 | |
107 | config FEATURE_EDITING_VI |
108 | bool "vi-style line editing commands" |
109 | default n |
110 | depends on FEATURE_EDITING |
111 | help |
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". |
114 | |
115 | config FEATURE_EDITING_HISTORY |
116 | int "History size" |
117 | # Don't allow way too big values here, code uses fixed "char *history[N]" struct member |
118 | range 0 9999 |
119 | default 255 |
120 | depends on FEATURE_EDITING |
121 | help |
122 | Specify command history size (0 - disable). |
123 | |
124 | config FEATURE_EDITING_SAVEHISTORY |
125 | bool "History saving" |
126 | default y |
127 | depends on FEATURE_EDITING |
128 | help |
129 | Enable history saving in shells. |
130 | |
131 | config FEATURE_EDITING_SAVE_ON_EXIT |
132 | bool "Save history on shell exit, not after every command" |
133 | default n |
134 | depends on FEATURE_EDITING_SAVEHISTORY |
135 | help |
136 | Save history on shell exit, not after every command. |
137 | |
138 | config FEATURE_REVERSE_SEARCH |
139 | bool "Reverse history search" |
140 | default y |
141 | depends on FEATURE_EDITING |
142 | help |
143 | Enable readline-like Ctrl-R combination for reverse history search. |
144 | Increases code by about 0.5k. |
145 | |
146 | config FEATURE_TAB_COMPLETION |
147 | bool "Tab completion" |
148 | default y |
149 | depends on FEATURE_EDITING |
150 | help |
151 | Enable tab completion. |
152 | |
153 | config FEATURE_USERNAME_COMPLETION |
154 | bool "Username completion" |
155 | default y |
156 | depends on FEATURE_TAB_COMPLETION |
157 | help |
158 | Enable username completion. |
159 | |
160 | config FEATURE_EDITING_FANCY_PROMPT |
161 | bool "Fancy shell prompts" |
162 | default y |
163 | depends on FEATURE_EDITING |
164 | help |
165 | Setting this option allows for prompts to use things like \w and |
166 | \$ and escape codes. |
167 | |
168 | config FEATURE_EDITING_ASK_TERMINAL |
169 | bool "Query cursor position from terminal" |
170 | default n |
171 | depends on FEATURE_EDITING |
172 | help |
173 | Allow usage of "ESC [ 6 n" sequence. Terminal answers back with |
174 | current cursor position. This information is used to make line |
175 | editing more robust in some cases. |
176 | If you are not sure whether your terminals respond to this code |
177 | correctly, or want to save on code size (about 400 bytes), |
178 | then do not turn this option on. |
179 | |
180 | config LOCALE_SUPPORT |
181 | bool "Enable locale support (system needs locale for this to work)" |
182 | default n |
183 | help |
184 | Enable this if your system has locale support and you would like |
185 | busybox to support locale settings. |
186 | |
187 | config UNICODE_SUPPORT |
188 | bool "Support Unicode" |
189 | default y |
190 | help |
191 | This makes various applets aware that one byte is not |
192 | one character on screen. |
193 | |
194 | Busybox aims to eventually work correctly with Unicode displays. |
195 | Any older encodings are not guaranteed to work. |
196 | Probably by the time when busybox will be fully Unicode-clean, |
197 | other encodings will be mainly of historic interest. |
198 | |
199 | config UNICODE_USING_LOCALE |
200 | bool "Use libc routines for Unicode (else uses internal ones)" |
201 | default n |
202 | depends on UNICODE_SUPPORT && LOCALE_SUPPORT |
203 | help |
204 | With this option on, Unicode support is implemented using libc |
205 | routines. Otherwise, internal implementation is used. |
206 | Internal implementation is smaller. |
207 | |
208 | config FEATURE_CHECK_UNICODE_IN_ENV |
209 | bool "Check $LC_ALL, $LC_CTYPE and $LANG environment variables" |
210 | default n |
211 | depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE |
212 | help |
213 | With this option on, Unicode support is activated |
214 | only if locale-related variables have the value of the form |
215 | "xxxx.utf8" |
216 | |
217 | Otherwise, Unicode support will be always enabled and active. |
218 | |
219 | config SUBST_WCHAR |
220 | int "Character code to substitute unprintable characters with" |
221 | depends on UNICODE_SUPPORT |
222 | default 63 |
223 | help |
224 | Typical values are 63 for '?' (works with any output device), |
225 | 30 for ASCII substitute control code, |
226 | 65533 (0xfffd) for Unicode replacement character. |
227 | |
228 | config LAST_SUPPORTED_WCHAR |
229 | int "Range of supported Unicode characters" |
230 | depends on UNICODE_SUPPORT |
231 | default 767 |
232 | help |
233 | Any character with Unicode value bigger than this is assumed |
234 | to be non-printable on output device. Many applets replace |
235 | such characters with substitution character. |
236 | |
237 | The idea is that many valid printable Unicode chars |
238 | nevertheless are not displayed correctly. Think about |
239 | combining charachers, double-wide hieroglyphs, obscure |
240 | characters in dozens of ancient scripts... |
241 | Many terminals, terminal emulators, xterms etc will fail |
242 | to handle them correctly. Choose the smallest value |
243 | which suits your needs. |
244 | |
245 | Typical values are: |
246 | 126 - ASCII only |
247 | 767 (0x2ff) - there are no combining chars in [0..767] range |
248 | (the range includes Latin 1, Latin Ext. A and B), |
249 | code is ~700 bytes smaller for this case. |
250 | 4351 (0x10ff) - there are no double-wide chars in [0..4351] range, |
251 | code is ~300 bytes smaller for this case. |
252 | 12799 (0x31ff) - nearly all non-ideographic characters are |
253 | available in [0..12799] range, including |
254 | East Asian scripts like katakana, hiragana, hangul, |
255 | bopomofo... |
256 | 0 - off, any valid printable Unicode character will be printed. |
257 | |
258 | config UNICODE_COMBINING_WCHARS |
259 | bool "Allow zero-width Unicode characters on output" |
260 | default n |
261 | depends on UNICODE_SUPPORT |
262 | help |
263 | With this option off, any Unicode char with width of 0 |
264 | is substituted on output. |
265 | |
266 | config UNICODE_WIDE_WCHARS |
267 | bool "Allow wide Unicode characters on output" |
268 | default n |
269 | depends on UNICODE_SUPPORT |
270 | help |
271 | With this option off, any Unicode char with width > 1 |
272 | is substituted on output. |
273 | |
274 | config UNICODE_BIDI_SUPPORT |
275 | bool "Bidirectional character-aware line input" |
276 | default n |
277 | depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE |
278 | help |
279 | With this option on, right-to-left Unicode characters |
280 | are treated differently on input (e.g. cursor movement). |
281 | |
282 | config UNICODE_NEUTRAL_TABLE |
283 | bool "In bidi input, support non-ASCII neutral chars too" |
284 | default n |
285 | depends on UNICODE_BIDI_SUPPORT |
286 | help |
287 | In most cases it's enough to treat only ASCII non-letters |
288 | (i.e. punctuation, numbers and space) as characters |
289 | with neutral directionality. |
290 | With this option on, more extensive (and bigger) table |
291 | of neutral chars will be used. |
292 | |
293 | config UNICODE_PRESERVE_BROKEN |
294 | bool "Make it possible to enter sequences of chars which are not Unicode" |
295 | default n |
296 | depends on UNICODE_SUPPORT |
297 | help |
298 | With this option on, on line-editing input (such as used by shells) |
299 | invalid UTF-8 bytes are not substituted with the selected |
300 | substitution character. |
301 | For example, this means that entering 'l', 's', ' ', 0xff, [Enter] |
302 | at shell prompt will list file named 0xff (single char name |
303 | with char value 255), not file named '?'. |
304 | |
305 | config FEATURE_NON_POSIX_CP |
306 | bool "Non-POSIX, but safer, copying to special nodes" |
307 | default y |
308 | help |
309 | With this option, "cp file symlink" will delete symlink |
310 | and create a regular file. This does not conform to POSIX, |
311 | but prevents a symlink attack. |
312 | Similarly, "cp file device" will not send file's data |
313 | to the device. (To do that, use "cat file >device") |
314 | |
315 | config FEATURE_VERBOSE_CP_MESSAGE |
316 | bool "Give more precise messages when copy fails (cp, mv etc)" |
317 | default n |
318 | help |
319 | Error messages with this feature enabled: |
320 | $ cp file /does_not_exist/file |
321 | cp: cannot create '/does_not_exist/file': Path does not exist |
322 | $ cp file /vmlinuz/file |
323 | cp: cannot stat '/vmlinuz/file': Path has non-directory component |
324 | If this feature is not enabled, they will be, respectively: |
325 | cp: cannot create '/does_not_exist/file': No such file or directory |
326 | cp: cannot stat '/vmlinuz/file': Not a directory |
327 | This will cost you ~60 bytes. |
328 | |
329 | config FEATURE_USE_SENDFILE |
330 | bool "Use sendfile system call" |
331 | default y |
332 | select PLATFORM_LINUX |
333 | help |
334 | When enabled, busybox will use the kernel sendfile() function |
335 | instead of read/write loops to copy data between file descriptors |
336 | (for example, cp command does this a lot). |
337 | If sendfile() doesn't work, copying code falls back to read/write |
338 | loop. sendfile() was originally implemented for faster I/O |
339 | from files to sockets, but since Linux 2.6.33 it was extended |
340 | to work for many more file types. |
341 | |
342 | config FEATURE_COPYBUF_KB |
343 | int "Copy buffer size, in kilobytes" |
344 | range 1 1024 |
345 | default 4 |
346 | help |
347 | Size of buffer used by cp, mv, install, wget etc. |
348 | Buffers which are 4 kb or less will be allocated on stack. |
349 | Bigger buffers will be allocated with mmap, with fallback to 4 kb |
350 | stack buffer if mmap fails. |
351 | |
352 | config FEATURE_SKIP_ROOTFS |
353 | bool "Skip rootfs in mount table" |
354 | default y |
355 | help |
356 | Ignore rootfs entry in mount table. |
357 | |
358 | In Linux, kernel has a special filesystem, rootfs, which is initially |
359 | mounted on /. It contains initramfs data, if kernel is configured |
360 | to have one. Usually, another file system is mounted over / early |
361 | in boot process, and therefore most tools which manipulate |
362 | mount table, such as df, will skip rootfs entry. |
363 | |
364 | However, some systems do not mount anything on /. |
365 | If you need to configure busybox for one of these systems, |
366 | you may find it useful to turn this option off to make df show |
367 | initramfs statistics. |
368 | |
369 | Otherwise, choose Y. |
370 | |
371 | config MONOTONIC_SYSCALL |
372 | bool "Use clock_gettime(CLOCK_MONOTONIC) syscall" |
373 | default y |
374 | select PLATFORM_LINUX |
375 | help |
376 | Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring |
377 | time intervals (time, ping, traceroute etc need this). |
378 | Probably requires Linux 2.6+. If not selected, gettimeofday |
379 | will be used instead (which gives wrong results if date/time |
380 | is reset). |
381 | |
382 | config IOCTL_HEX2STR_ERROR |
383 | bool "Use ioctl names rather than hex values in error messages" |
384 | default y |
385 | help |
386 | Use ioctl names rather than hex values in error messages |
387 | (e.g. VT_DISALLOCATE rather than 0x5608). If disabled this |
388 | saves about 1400 bytes. |
389 | |
390 | config FEATURE_HWIB |
391 | bool "Support infiniband HW" |
392 | default y |
393 | help |
394 | Support for printing infiniband addresses in |
395 | network applets. |
396 | |
397 | endmenu |
398 |