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