1mainmenu "Toybox Configuration" 2 3 4source generated/Config.probed 5source generated/Config.in 6 7comment "" 8 9menu "Toybox global settings" 10 11# This entry controls the multiplexer, disabled for single command builds 12config TOYBOX 13 bool 14 default y 15 help 16 usage: toybox [--long | --help | --version | [command] [arguments...]] 17 18 With no arguments, shows available commands. First argument is 19 name of a command to run, followed by any arguments to that command. 20 21 --long Show path to each command 22 23 To install command symlinks with paths, try: 24 for i in $(/bin/toybox --long); do ln -s /bin/toybox $i; done 25 or all in one directory: 26 for i in $(./toybox); do ln -s toybox $i; done; PATH=$PWD:$PATH 27 28 Most toybox commands also understand the following arguments: 29 30 --help Show command help (only) 31 --version Show toybox version (only) 32 33 The filename "-" means stdin/stdout, and "--" stops argument parsing. 34 35 Numerical arguments accept a single letter suffix for 36 kilo, mega, giga, tera, peta, and exabytes, plus an additional 37 "d" to indicate decimal 1000's instead of 1024. 38 39 Durations can be decimal fractions and accept minute ("m"), hour ("h"), 40 or day ("d") suffixes (so 0.1m = 6s). 41 42config TOYBOX_SUID 43 bool "SUID support" 44 default y 45 help 46 Support for the Set User ID bit, to install toybox suid root and drop 47 permissions for commands which do not require root access. To use 48 this change ownership of the file to the root user and set the suid 49 bit in the file permissions: 50 51 chown root:root toybox; chmod +s toybox 52 53choice 54 prompt "Security Blanket" 55 default TOYBOX_LSM_NONE 56 help 57 Select a Linux Security Module to complicate your system 58 until you can't find holes in it. 59 60config TOYBOX_LSM_NONE 61 bool "None" 62 help 63 Don't try to achieve "watertight" by plugging the holes in a 64 collander, instead use conventional unix security (and possibly 65 Linux Containers) for a simple straightforward system. 66 67config TOYBOX_SELINUX 68 bool "SELinux support" 69 help 70 Include SELinux options in commands such as ls, and add 71 SELinux-specific commands such as chcon to the Android menu. 72 73config TOYBOX_SMACK 74 bool "SMACK support" 75 help 76 Include SMACK options in commands like ls for systems like Tizen. 77 78endchoice 79 80config TOYBOX_LIBCRYPTO 81 bool "Use libcrypto (OpenSSL/BoringSSL)" 82 default n 83 help 84 Use faster hash functions out of external -lcrypto library. 85 86config TOYBOX_LIBZ 87 bool "Use libz (zlib)" 88 default n 89 help 90 Use libz for gz support. 91 92config TOYBOX_FLOAT 93 bool "Floating point support" 94 default y 95 help 96 Include floating point support infrastructure and commands that 97 require it. 98 99config TOYBOX_HELP 100 bool "Help messages" 101 default y 102 help 103 Include help text for each command. 104 105config TOYBOX_HELP_DASHDASH 106 bool "--help and --version" 107 default y 108 depends on TOYBOX_HELP 109 help 110 Support --help argument in all commands, even ones with a NULL 111 optstring. (Use TOYFLAG_NOHELP to disable.) Produces the same output 112 as "help command". --version shows toybox version. 113 114config TOYBOX_I18N 115 bool "Internationalization support" 116 default y 117 help 118 Support for UTF-8 character sets, and some locale support. 119 120config TOYBOX_FREE 121 bool "Free memory unnecessarily" 122 default n 123 help 124 When a program exits, the operating system will clean up after it 125 (free memory, close files, etc). To save size, toybox usually relies 126 on this behavior. If you're running toybox under a debugger or 127 without a real OS (ala newlib+libgloss), enable this to make toybox 128 clean up after itself. 129 130config TOYBOX_NORECURSE 131 bool "Disable recursive execution" 132 default n 133 help 134 When one toybox command calls another, usually it just calls the new 135 command's main() function rather than searching the $PATH and calling 136 exec on another file (which is much slower). 137 138 This disables that optimization, so toybox will run external commands 139 even when it has a built-in version of that command. This requires 140 toybox symlinks to be installed in the $PATH, or re-invoking the 141 "toybox" multiplexer command by name. 142 143config TOYBOX_DEBUG 144 bool "Debugging tests" 145 default n 146 help 147 Enable extra checks for debugging purposes. All of them catch 148 things that can only go wrong at development time, not runtime. 149 150config TOYBOX_PEDANTIC_ARGS 151 bool "Pedantic argument checking" 152 default n 153 help 154 Check arguments for commands that have no arguments. 155 156config TOYBOX_UID_SYS 157 int "First system UID" 158 default 100 159 help 160 When commands like useradd/groupadd allocate system IDs, start here. 161 162config TOYBOX_UID_USR 163 int "First user UID" 164 default 500 165 help 166 When commands like useradd/groupadd allocate user IDs, start here. 167 168config TOYBOX_FORCE_NOMMU 169 bool "Enable nommu support when the build can't detect it." 170 default n 171 help 172 When using musl-libc on a nommu system, you'll need to say "y" here 173 unless you used the patch in the mcm-buildall.sh script. You can also 174 say "y" here to test the nommu codepaths on an mmu system. 175 176 A nommu system can't use fork(), it can only vfork() which suspends 177 the parent until the child calls exec() or exits. When a program 178 needs a second instance of itself to run specific code at the same 179 time as the parent, it must use a more complicated approach (such as 180 exec("/proc/self/exe") then pass data to the new child through a pipe) 181 which is larger and slower, especially for things like toysh subshells 182 that need to duplicate a lot of internal state in the child process 183 fork() gives you for free. 184 185 Libraries like uclibc omit fork() on nommu systems, allowing 186 compile-time probes to select which codepath to use. But musl 187 intentionally includes a broken version of fork() that always returns 188 -ENOSYS on nommu systems, and goes out of its way to prevent any 189 cross-compile compatible compile-time probes for a nommu system. 190 (It doesn't even #define __MUSL__ in features.h.) Musl does this 191 despite the fact that a nommu system can't even run standard ELF 192 binaries (requiring specially packaged executables) because it wants 193 to force every program to either include all nommu code in every 194 instance ever built, or drop nommu support altogether. 195 196 Building a toolchain scripts/mcm-buildall.sh patches musl to fix this. 197 198endmenu 199