1/* vi: set sw=4 ts=4: */ 2// This file defines the feature set to be compiled into busybox. 3// When you turn things off here, they won't be compiled in at all. 4// 5//// This file is parsed by sed. You MUST use single line comments. 6// i.e., //#define BB_BLAH 7// 8// 9// BusyBox Applications 10#define BB_ADJTIMEX 11#define BB_AR 12#define BB_ASH 13#define BB_BASENAME 14#define BB_CAT 15#define BB_CHGRP 16#define BB_CHMOD 17#define BB_CHOWN 18#define BB_CHROOT 19#define BB_CHVT 20#define BB_CLEAR 21#define BB_CMP 22#define BB_CP 23#define BB_CPIO 24#define BB_CUT 25#define BB_DATE 26#define BB_DC 27#define BB_DD 28#define BB_DEALLOCVT 29#define BB_DF 30#define BB_DIRNAME 31#define BB_DMESG 32#define BB_DOS2UNIX 33#define BB_DPKG 34#define BB_DPKG_DEB 35#define BB_DUTMP 36#define BB_DU 37#define BB_DUMPKMAP 38#define BB_ECHO 39#define BB_ENV 40#define BB_EXPR 41#define BB_FBSET 42#define BB_FDFLUSH 43#define BB_FIND 44#define BB_FREE 45#define BB_FREERAMDISK 46#define BB_FSCK_MINIX 47#define BB_GETOPT 48#define BB_GREP 49#define BB_GUNZIP 50#define BB_GZIP 51#define BB_HALT 52#define BB_HEAD 53#define BB_HOSTID 54#define BB_HOSTNAME 55#define BB_HUSH 56#define BB_ID 57#define BB_IFCONFIG 58#define BB_INIT 59#define BB_INSMOD 60#define BB_KILL 61#define BB_KILLALL 62#define BB_KLOGD 63#define BB_KTAB 64#define BB_LASH 65#define BB_LENGTH 66#define BB_LN 67#define BB_LOADACM 68#define BB_LOADFONT 69#define BB_LOADKMAP 70#define BB_LOGGER 71#define BB_LOGNAME 72#define BB_LS 73#define BB_LSMOD 74#define BB_MAKEDEVS 75#define BB_MD5SUM 76#define BB_MKDIR 77#define BB_MKFIFO 78#define BB_MKFS_MINIX 79#define BB_MKNOD 80#define BB_MKSWAP 81#define BB_MKTEMP 82#define BB_MODPROBE 83#define BB_MORE 84#define BB_MOUNT 85#define BB_MSH 86#define BB_MT 87#define BB_MV 88#define BB_NC 89#define BB_NSLOOKUP 90#define BB_PIDOF 91#define BB_PING 92#define BB_PIVOT_ROOT 93#define BB_POWEROFF 94#define BB_PRINTF 95#define BB_PS 96#define BB_PWD 97#define BB_RDATE 98#define BB_READLINK 99#define BB_REBOOT 100#define BB_RENICE 101#define BB_RESET 102#define BB_RM 103#define BB_RMDIR 104#define BB_RMMOD 105#define BB_ROUTE 106#define BB_RPM2CPIO 107#define BB_SED 108#define BB_SETKEYCODES 109#define BB_SLEEP 110#define BB_SORT 111#define BB_STTY 112#define BB_SWAPONOFF 113#define BB_SYNC 114#define BB_SYSLOGD 115#define BB_TAIL 116#define BB_TAR 117#define BB_TEE 118#define BB_TEST 119#define BB_TELNET 120#define BB_TFTP 121#define BB_TOUCH 122#define BB_TR 123#define BB_TRACEROUTE 124#define BB_TRUE_FALSE 125#define BB_TTY 126#define BB_UNIX2DOS 127#define BB_UUENCODE 128#define BB_UUDECODE 129#define BB_UMOUNT 130#define BB_UNIQ 131#define BB_UNAME 132#define BB_UPDATE 133#define BB_UPTIME 134#define BB_USLEEP 135#define BB_VI 136#define BB_WATCHDOG 137#define BB_WC 138#define BB_WGET 139#define BB_WHICH 140#define BB_WHOAMI 141#define BB_XARGS 142#define BB_YES 143// End of Applications List 144// 145// 146// 147// --------------------------------------------------------- 148// This is where feature definitions go. Generally speaking, 149// turning this stuff off makes things a bit smaller (and less 150// pretty/useful). 151// 152// 153// If you enabled one or more of the shells, you may select which one 154// should be run when sh is invoked: 155#define BB_FEATURE_SH_IS_ASH 156//#define BB_FEATURE_SH_IS_HUSH 157//#define BB_FEATURE_SH_IS_LASH 158//#define BB_FEATURE_SH_IS_MSH 159// 160// BusyBox will, by default, malloc space for its buffers. This costs code 161// size for the call to xmalloc. You can use the following feature to have 162// them put on the stack. For some very small machines with limited stack 163// space, this can be deadly. For most folks, this works just fine... 164#define BB_FEATURE_BUFFERS_GO_ON_STACK 165// The third alternative for buffer allocation is to use BSS. This works 166// beautifully for computers with a real MMU (and OS support), but wastes 167// runtime RAM for uCLinux. This behavior was the only one available for 168// BusyBox versions 0.48 and earlier. 169//#define BB_FEATURE_BUFFERS_GO_IN_BSS 170// 171// Turn this on to use Erik's very cool devps, and devmtab kernel drivers, 172// thereby eliminating the need for the /proc filesystem and thereby saving 173// lots and lots memory for more important things. NOTE: If you enable this 174// feature, you _must_ have patched the kernel to include the devps patch that 175// is included in the busybox/kernel-patches directory. You will also need to 176// create some device special files in /dev on your embedded system: 177// mknod /dev/mtab c 10 22 178// mknod /dev/ps c 10 21 179// I emailed Linus and this patch will not be going into the stock kernel. 180//#define BB_FEATURE_USE_DEVPS_PATCH 181// 182// show verbose usage messages 183#define BB_FEATURE_VERBOSE_USAGE 184// 185// Use termios to manipulate the screen ('more' is prettier with this on) 186#define BB_FEATURE_USE_TERMIOS 187// 188// calculate terminal & column widths (for more and ls) 189#define BB_FEATURE_AUTOWIDTH 190// 191// show username/groupnames for ls 192#define BB_FEATURE_LS_USERNAME 193// 194// show file timestamps in ls 195#define BB_FEATURE_LS_TIMESTAMPS 196// 197// enable ls -p and -F 198#define BB_FEATURE_LS_FILETYPES 199// 200// sort the file names 201#define BB_FEATURE_LS_SORTFILES 202// 203// enable ls -R 204#define BB_FEATURE_LS_RECURSIVE 205// 206// enable ls -L 207#define BB_FEATURE_LS_FOLLOWLINKS 208// 209// Disable for a smaller (but less functional) ping 210#define BB_FEATURE_FANCY_PING 211// 212// Make init use a simplified /etc/inittab file (recommended). 213#define BB_FEATURE_USE_INITTAB 214// 215//Enable init being called as /linuxrc 216#define BB_FEATURE_LINUXRC 217// 218//Have init enable core dumping for child processes (for debugging only) 219//#define BB_FEATURE_INIT_COREDUMPS 220// 221//Make sure nothing is printed to the console on boot 222//#define BB_FEATURE_EXTRA_QUIET 223// 224// enable syslogd -R remotehost 225#define BB_FEATURE_REMOTE_LOG 226// 227// enable syslogd -C 228#define BB_FEATURE_IPC_SYSLOG 229// 230//Disable for a simple tail implementation (2.34k vs 3k for the full one). 231//Both provide 'tail -f', but this cuts out -c, -q, -s, and -v. 232#define BB_FEATURE_FANCY_TAIL 233// 234// Enable support for loop devices in mount 235#define BB_FEATURE_MOUNT_LOOP 236// 237// Enable support for a real /etc/mtab file instead of /proc/mounts 238#define BB_FEATURE_MTAB_SUPPORT 239// 240// Enable support for mounting remote NFS volumes. 241// You may need to mount with "-o nolock" if you are 242// not running a local portmapper daemon... 243//#define BB_FEATURE_NFSMOUNT 244// 245// Enable support forced filesystem unmounting 246// (i.e., in case of an unreachable NFS system). 247#define BB_FEATURE_MOUNT_FORCE 248// 249// Enable support for creation of tar files. 250#define BB_FEATURE_TAR_CREATE 251// 252// Enable support for "--exclude" and "-X" for excluding files 253#define BB_FEATURE_TAR_EXCLUDE 254// 255// Enable support for tar -z option (currently only works for inflating) 256#define BB_FEATURE_TAR_GZIP 257// 258// Enable reverse sort 259#define BB_FEATURE_SORT_REVERSE 260// 261// Enable uniqe sort 262#define BB_FEATURE_SORT_UNIQUE 263// 264// Enable command line editing in the shell. 265// Only relevant if a shell is enabled. On by default. 266#define BB_FEATURE_COMMAND_EDITING 267// 268// Enable tab completion in the shell. This is now working quite nicely. 269// This feature adds a bit over 4k. Only relevant if a shell is enabled. 270#define BB_FEATURE_COMMAND_TAB_COMPLETION 271// 272// Attempts to match usernames in a ~-prefixed path 273//#define BB_FEATURE_COMMAND_USERNAME_COMPLETION 274// 275//Allow the shell to invoke all the compiled in BusyBox applets as if they 276//were shell builtins. Nice for staticly linking an emergency rescue shell, 277//among other things. Off by default. 278// Only relevant if a shell is enabled. 279//#define BB_FEATURE_SH_STANDALONE_SHELL 280// 281//When this is enabled, busybox shell applets can be called using full path 282//names. This causes applets (i.e., most busybox commands) to override 283//real commands on the filesystem. For example, if you run run /bin/cat, it 284//will use BusyBox cat even if /bin/cat exists on the filesystem and is _not_ 285//busybox. Some systems want this, others do not. Choose wisely. :-) This 286//only has meaning when BB_FEATURE_SH_STANDALONE_SHELL is enabled. 287// Only relevant if a shell is enabled. Off by default. 288//#define BB_FEATURE_SH_APPLETS_ALWAYS_WIN 289// 290// Uncomment this option for a fancy shell prompt that includes the 291// current username and hostname. On systems that don't have usernames 292// or hostnames, this can look hideous. 293// Only relevant if a shell is enabled. 294//#define BB_FEATURE_SH_FANCY_PROMPT 295// 296//Turn on extra fbset options 297#define BB_FEATURE_FBSET_FANCY 298// 299//Turn on fbset readmode support 300#define BB_FEATURE_FBSET_READMODE 301// 302// Support insmod/lsmod/rmmod for post 2.1 kernels 303#define BB_FEATURE_NEW_MODULE_INTERFACE 304// 305// Support insmod/lsmod/rmmod for pre 2.1 kernels 306//#define BB_FEATURE_OLD_MODULE_INTERFACE 307// 308// Support module version checking 309#define BB_FEATURE_INSMOD_VERSION_CHECKING 310// 311// Support for uClinux memory usage optimization, which will load the image 312// directly into the kernel memory. This divides memory requrements by three. 313// If you are not running uClinux (i.e., your CPU has an MMU) leave this 314// disabled... 315//#define BB_FEATURE_INSMOD_LOADINKMEM 316// 317// Support for Minix filesystem, version 2 318#define BB_FEATURE_MINIX2 319// 320// Enable ifconfig status reporting output -- this feature adds 12k. 321#define BB_FEATURE_IFCONFIG_STATUS 322// 323// Enable ifconfig slip-specific options "keepalive" and "outfill" 324#define BB_FEATURE_IFCONFIG_SLIP 325// 326// Enable ifconfig options "mem_start", "io_addr", and "irq". 327#define BB_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ 328// 329// Enable ifconfig option "hw". Currently works for only with "ether". 330#define BB_FEATURE_IFCONFIG_HW 331// 332// Enable busybox --install [-s] 333// to create links (or symlinks) for all the commands that are 334// compiled into the binary. (needs /proc filesystem) 335#define BB_FEATURE_INSTALLER 336// 337// Enable a nifty progress meter in wget (adds just under 2k) 338#define BB_FEATURE_WGET_STATUSBAR 339// 340// Enable HTTP authentication in wget 341#define BB_FEATURE_WGET_AUTHENTICATION 342// 343// Clean up all memory before exiting -- usually not needed 344// as the OS can clean up... Don't enable this unless you 345// have a really good reason for cleaning things up manually. 346//#define BB_FEATURE_CLEAN_UP 347// 348// Support for human readable output by ls, du, etc.(example 13k, 23M, 235G) 349#define BB_FEATURE_HUMAN_READABLE 350// 351// Support for the find -type option. 352#define BB_FEATURE_FIND_TYPE 353// 354// Support for the find -perm option. 355#define BB_FEATURE_FIND_PERM 356// 357// Support for the find -mtine option. 358#define BB_FEATURE_FIND_MTIME 359// 360// Support for the -A -B and -C context flags in grep 361#define BB_FEATURE_GREP_CONTEXT 362// 363// Support for the EGREP applet (alias to the grep applet) 364#define BB_FEATURE_GREP_EGREP_ALIAS 365// 366// Tell tftp what commands that should be supported. 367#define BB_FEATURE_TFTP_PUT 368#define BB_FEATURE_TFTP_GET 369// 370// features for vi 371#define BB_FEATURE_VI_COLON // ":" colon commands, no "ex" mode 372#define BB_FEATURE_VI_YANKMARK // Yank/Put commands and Mark cmds 373#define BB_FEATURE_VI_SEARCH // search and replace cmds 374#define BB_FEATURE_VI_USE_SIGNALS // catch signals 375#define BB_FEATURE_VI_DOT_CMD // remember previous cmd and "." cmd 376#define BB_FEATURE_VI_READONLY // vi -R and "view" mode 377#define BB_FEATURE_VI_SETOPTS // set-able options, ai ic showmatch 378#define BB_FEATURE_VI_SET // :set 379#define BB_FEATURE_VI_WIN_RESIZE // handle window resize 380// 381// Enable a if you system have setuped locale 382//#define BB_LOCALE_SUPPORT 383// 384// Support for TELNET to pass TERM type to remote host. Adds 384 bytes. 385#define BB_FEATURE_TELNET_TTYPE 386// 387// Support for devfs. 388#define BB_FEATURE_DEVFS 389// 390// End of Features List 391// 392// 393// 394// 395// 396// 397//--------------------------------------------------- 398// Nothing beyond this point should ever be touched by 399// mere mortals so leave this stuff alone. 400// 401#include <features.h> 402#if defined __UCLIBC__ && ! defined __UCLIBC_HAS_MMU__ 403 #undef BB_RPM2CPIO /* Uses gz_open(), which uses fork() */ 404 #undef BB_DPKG_DEB /* Uses gz_open(), which uses fork() */ 405 #undef BB_ASH /* Uses fork() */ 406 #undef BB_HUSH /* Uses fork() */ 407 #undef BB_LASH /* Uses fork() */ 408 #undef BB_INIT /* Uses fork() */ 409 #undef BB_FEATURE_TAR_GZIP /* Uses fork() */ 410 #undef BB_SYSLOGD /* Uses daemon() */ 411 #undef BB_KLOGD /* Uses daemon() */ 412 #undef BB_UPDATE /* Uses daemon() */ 413#endif 414#if defined BB_ASH || defined BB_HUSH || defined BB_LASH || defined BB_MSH 415 #if defined BB_FEATURE_COMMAND_EDITING 416 #define BB_CMDEDIT 417 #else 418 #undef BB_FEATURE_COMMAND_EDITING 419 #undef BB_FEATURE_COMMAND_TAB_COMPLETION 420 #undef BB_FEATURE_COMMAND_USERNAME_COMPLETION 421 #undef BB_FEATURE_SH_FANCY_PROMPT 422 #endif 423#else 424 #undef BB_FEATURE_SH_APPLETS_ALWAYS_WIN 425 #undef BB_FEATURE_SH_STANDALONE_SHELL 426 #undef BB_FEATURE_SH_FANCY_PROMPT 427#endif 428// 429#ifdef BB_KILLALL 430 #ifndef BB_KILL 431 #define BB_KILL 432 #endif 433#endif 434// 435#ifndef BB_INIT 436 #undef BB_FEATURE_LINUXRC 437#endif 438// 439#if defined BB_MOUNT && defined BB_FEATURE_NFSMOUNT 440 #define BB_NFSMOUNT 441#endif 442// 443#if defined BB_FEATURE_AUTOWIDTH 444 #ifndef BB_FEATURE_USE_TERMIOS 445 #define BB_FEATURE_USE_TERMIOS 446 #endif 447#endif 448// 449#if defined BB_INSMOD || defined BB_LSMOD 450 #if ! defined BB_FEATURE_NEW_MODULE_INTERFACE && ! defined BB_FEATURE_OLD_MODULE_INTERFACE 451 #define BB_FEATURE_NEW_MODULE_INTERFACE 452 #endif 453#endif 454// 455#ifdef BB_UNIX2DOS 456 #define BB_DOS2UNIX 457#endif 458// 459#ifdef BB_SYSLOGD 460 #if defined BB_FEATURE_IPC_SYSLOG 461 #define BB_LOGREAD 462 #endif 463#endif 464// 465#if defined BB_ASH && defined BB_FEATURE_SH_IS_ASH 466# define BB_SH 467# define shell_main ash_main 468#elif defined BB_HUSH && defined BB_FEATURE_SH_IS_HUSH 469# define BB_SH 470# define shell_main hush_main 471#elif defined BB_LASH && defined BB_FEATURE_SH_IS_LASH 472# define BB_SH 473# define shell_main lash_main 474#elif defined BB_MSH && defined BB_FEATURE_SH_IS_MSH 475# define BB_SH 476# define shell_main msh_main 477#endif 478