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