├── Android.mk ├── LICENSE ├── README.md ├── android-install.sh ├── android-remote-install.sh ├── busybox-android ├── busybox-android.config └── busybox-android.patch /Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | include $(CLEAR_VARS) 3 | 4 | # List obtained using 5 | # adb shell busybox --list |sed 's/.$/ \\/' |sed 's/^/\t/' 6 | BUSYBOX_TOOLS := \ 7 | [ \ 8 | [[ \ 9 | acpid \ 10 | add-shell \ 11 | addgroup \ 12 | adduser \ 13 | adjtimex \ 14 | ar \ 15 | arp \ 16 | arping \ 17 | ash \ 18 | awk \ 19 | base64 \ 20 | basename \ 21 | bash \ 22 | beep \ 23 | blkid \ 24 | blockdev \ 25 | bootchartd \ 26 | brctl \ 27 | bunzip2 \ 28 | bzcat \ 29 | bzip2 \ 30 | cal \ 31 | cat \ 32 | catv \ 33 | chat \ 34 | chattr \ 35 | chgrp \ 36 | chmod \ 37 | chown \ 38 | chpasswd \ 39 | chpst \ 40 | chroot \ 41 | chrt \ 42 | chvt \ 43 | cksum \ 44 | clear \ 45 | cmp \ 46 | comm \ 47 | cp \ 48 | cpio \ 49 | crond \ 50 | crontab \ 51 | cryptpw \ 52 | cttyhack \ 53 | cut \ 54 | date \ 55 | dc \ 56 | dd \ 57 | deallocvt \ 58 | delgroup \ 59 | deluser \ 60 | depmod \ 61 | devmem \ 62 | df \ 63 | dhcprelay \ 64 | diff \ 65 | dirname \ 66 | dmesg \ 67 | dnsd \ 68 | dnsdomainname \ 69 | dos2unix \ 70 | du \ 71 | dumpkmap \ 72 | dumpleases \ 73 | echo \ 74 | ed \ 75 | egrep \ 76 | eject \ 77 | env \ 78 | envdir \ 79 | envuidgid \ 80 | ether-wake \ 81 | expand \ 82 | expr \ 83 | fakeidentd \ 84 | false \ 85 | fbset \ 86 | fbsplash \ 87 | fdflush \ 88 | fdformat \ 89 | fdisk \ 90 | fgconsole \ 91 | fgrep \ 92 | find \ 93 | findfs \ 94 | flock \ 95 | fold \ 96 | free \ 97 | freeramdisk \ 98 | fsck \ 99 | fsck.minix \ 100 | fsync \ 101 | ftpd \ 102 | ftpget \ 103 | ftpput \ 104 | fuser \ 105 | getopt \ 106 | getty \ 107 | grep \ 108 | groups \ 109 | gunzip \ 110 | gzip \ 111 | halt \ 112 | hd \ 113 | hdparm \ 114 | head \ 115 | hexdump \ 116 | hostid \ 117 | hostname \ 118 | httpd \ 119 | hwclock \ 120 | id \ 121 | ifconfig \ 122 | ifdown \ 123 | ifenslave \ 124 | ifplugd \ 125 | ifup \ 126 | inetd \ 127 | init \ 128 | insmod \ 129 | install \ 130 | ionice \ 131 | iostat \ 132 | ip \ 133 | ipaddr \ 134 | ipcalc \ 135 | ipcrm \ 136 | ipcs \ 137 | iplink \ 138 | iproute \ 139 | iprule \ 140 | iptunnel \ 141 | kbd_mode \ 142 | kill \ 143 | killall \ 144 | killall5 \ 145 | klogd \ 146 | last \ 147 | less \ 148 | linux32 \ 149 | linux64 \ 150 | linuxrc \ 151 | ln \ 152 | loadfont \ 153 | loadkmap \ 154 | logger \ 155 | login \ 156 | logname \ 157 | logread \ 158 | losetup \ 159 | lpd \ 160 | lpq \ 161 | lpr \ 162 | ls \ 163 | lsattr \ 164 | lsmod \ 165 | lspci \ 166 | lsusb \ 167 | lzcat \ 168 | lzma \ 169 | lzop \ 170 | lzopcat \ 171 | makedevs \ 172 | makemime \ 173 | man \ 174 | md5sum \ 175 | mdev \ 176 | mesg \ 177 | microcom \ 178 | mkdir \ 179 | mkdosfs \ 180 | mke2fs \ 181 | mkfifo \ 182 | mkfs.ext2 \ 183 | mkfs.minix \ 184 | mkfs.vfat \ 185 | mknod \ 186 | mkpasswd \ 187 | mkswap \ 188 | mktemp \ 189 | modinfo \ 190 | modprobe \ 191 | more \ 192 | mount \ 193 | mountpoint \ 194 | mpstat \ 195 | mt \ 196 | mv \ 197 | nameif \ 198 | nbd-client \ 199 | nc \ 200 | netstat \ 201 | nice \ 202 | nmeter \ 203 | nohup \ 204 | nslookup \ 205 | ntpd \ 206 | od \ 207 | openvt \ 208 | passwd \ 209 | patch \ 210 | pgrep \ 211 | pidof \ 212 | ping \ 213 | ping6 \ 214 | pipe_progress \ 215 | pivot_root \ 216 | pkill \ 217 | pmap \ 218 | popmaildir \ 219 | poweroff \ 220 | powertop \ 221 | printenv \ 222 | printf \ 223 | ps \ 224 | pscan \ 225 | pstree \ 226 | pwd \ 227 | pwdx \ 228 | raidautorun \ 229 | rdate \ 230 | rdev \ 231 | readahead \ 232 | readlink \ 233 | readprofile \ 234 | realpath \ 235 | reboot \ 236 | reformime \ 237 | remove-shell \ 238 | renice \ 239 | reset \ 240 | resize \ 241 | rev \ 242 | rm \ 243 | rmdir \ 244 | rmmod \ 245 | route \ 246 | rpm \ 247 | rpm2cpio \ 248 | rtcwake \ 249 | run-parts \ 250 | runlevel \ 251 | runsv \ 252 | runsvdir \ 253 | rx \ 254 | script \ 255 | scriptreplay \ 256 | sed \ 257 | sendmail \ 258 | seq \ 259 | setarch \ 260 | setconsole \ 261 | setfont \ 262 | setkeycodes \ 263 | setlogcons \ 264 | setserial \ 265 | setsid \ 266 | setuidgid \ 267 | sh \ 268 | sha1sum \ 269 | sha256sum \ 270 | sha512sum \ 271 | showkey \ 272 | slattach \ 273 | sleep \ 274 | smemcap \ 275 | softlimit \ 276 | sort \ 277 | split \ 278 | start-stop-daemon \ 279 | stat \ 280 | strings \ 281 | stty \ 282 | sulogin \ 283 | sum \ 284 | sv \ 285 | svlogd \ 286 | swapoff \ 287 | swapon \ 288 | switch_root \ 289 | sync \ 290 | sysctl \ 291 | syslogd \ 292 | tac \ 293 | tail \ 294 | tar \ 295 | tcpsvd \ 296 | tee \ 297 | telnet \ 298 | telnetd \ 299 | test \ 300 | tftp \ 301 | tftpd \ 302 | time \ 303 | timeout \ 304 | top \ 305 | touch \ 306 | tr \ 307 | traceroute \ 308 | traceroute6 \ 309 | true \ 310 | tty \ 311 | ttysize \ 312 | tunctl \ 313 | udhcpc \ 314 | udhcpd \ 315 | udpsvd \ 316 | umount \ 317 | uname \ 318 | uncompress \ 319 | unexpand \ 320 | uniq \ 321 | unix2dos \ 322 | unlzma \ 323 | unlzop \ 324 | unxz \ 325 | unzip \ 326 | uptime \ 327 | users \ 328 | usleep \ 329 | uudecode \ 330 | uuencode \ 331 | vconfig \ 332 | vi \ 333 | vlock \ 334 | volname \ 335 | wall \ 336 | watch \ 337 | watchdog \ 338 | wc \ 339 | wget \ 340 | which \ 341 | who \ 342 | whoami \ 343 | whois \ 344 | xargs \ 345 | xz \ 346 | xzcat \ 347 | yes \ 348 | zcat \ 349 | zcip 350 | 351 | LOCAL_MODULE := busybox 352 | 353 | BUSYBOX_INSTALL_DIR := $(TARGET_OUT)/bin 354 | BUSYBOX_BINARY := $(BUSYBOX_INSTALL_DIR)/busybox 355 | BUSYBOX_LOCAL_BINARY := $(LOCAL_PATH)/busybox-android 356 | # This dependency ensures busybox is installed after all toolbox symlinks 357 | # are done, and overwrites them 358 | $(BUSYBOX_BINARY): toolbox 359 | @cp $(BUSYBOX_LOCAL_BINARY) $(BUSYBOX_BINARY) 360 | @echo "Installing busybox" 361 | @for tool in $(BUSYBOX_TOOLS) ; do \ 362 | rm -rf $(BUSYBOX_INSTALL_DIR)/$$tool ; \ 363 | ln -s busybox $(BUSYBOX_INSTALL_DIR)/$$tool ; \ 364 | done 365 | 366 | ALL_DEFAULT_INSTALLED_MODULES += $(BUSYBOX_BINARY) 367 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | --- A note on GPL versions 2 | 3 | BusyBox is distributed under version 2 of the General Public License (included 4 | in its entirety, below). Version 2 is the only version of this license which 5 | this version of BusyBox (or modified versions derived from this one) may be 6 | distributed under. 7 | 8 | ------------------------------------------------------------------------ 9 | GNU GENERAL PUBLIC LICENSE 10 | Version 2, June 1991 11 | 12 | Copyright (C) 1989, 1991 Free Software Foundation, Inc. 13 | 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 14 | Everyone is permitted to copy and distribute verbatim copies 15 | of this license document, but changing it is not allowed. 16 | 17 | Preamble 18 | 19 | The licenses for most software are designed to take away your 20 | freedom to share and change it. By contrast, the GNU General Public 21 | License is intended to guarantee your freedom to share and change free 22 | software--to make sure the software is free for all its users. This 23 | General Public License applies to most of the Free Software 24 | Foundation's software and to any other program whose authors commit to 25 | using it. (Some other Free Software Foundation software is covered by 26 | the GNU Library General Public License instead.) You can apply it to 27 | your programs, too. 28 | 29 | When we speak of free software, we are referring to freedom, not 30 | price. Our General Public Licenses are designed to make sure that you 31 | have the freedom to distribute copies of free software (and charge for 32 | this service if you wish), that you receive source code or can get it 33 | if you want it, that you can change the software or use pieces of it 34 | in new free programs; and that you know you can do these things. 35 | 36 | To protect your rights, we need to make restrictions that forbid 37 | anyone to deny you these rights or to ask you to surrender the rights. 38 | These restrictions translate to certain responsibilities for you if you 39 | distribute copies of the software, or if you modify it. 40 | 41 | For example, if you distribute copies of such a program, whether 42 | gratis or for a fee, you must give the recipients all the rights that 43 | you have. You must make sure that they, too, receive or can get the 44 | source code. And you must show them these terms so they know their 45 | rights. 46 | 47 | We protect your rights with two steps: (1) copyright the software, and 48 | (2) offer you this license which gives you legal permission to copy, 49 | distribute and/or modify the software. 50 | 51 | Also, for each author's protection and ours, we want to make certain 52 | that everyone understands that there is no warranty for this free 53 | software. If the software is modified by someone else and passed on, we 54 | want its recipients to know that what they have is not the original, so 55 | that any problems introduced by others will not reflect on the original 56 | authors' reputations. 57 | 58 | Finally, any free program is threatened constantly by software 59 | patents. We wish to avoid the danger that redistributors of a free 60 | program will individually obtain patent licenses, in effect making the 61 | program proprietary. To prevent this, we have made it clear that any 62 | patent must be licensed for everyone's free use or not licensed at all. 63 | 64 | The precise terms and conditions for copying, distribution and 65 | modification follow. 66 | 67 | GNU GENERAL PUBLIC LICENSE 68 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 69 | 70 | 0. This License applies to any program or other work which contains 71 | a notice placed by the copyright holder saying it may be distributed 72 | under the terms of this General Public License. The "Program", below, 73 | refers to any such program or work, and a "work based on the Program" 74 | means either the Program or any derivative work under copyright law: 75 | that is to say, a work containing the Program or a portion of it, 76 | either verbatim or with modifications and/or translated into another 77 | language. (Hereinafter, translation is included without limitation in 78 | the term "modification".) Each licensee is addressed as "you". 79 | 80 | Activities other than copying, distribution and modification are not 81 | covered by this License; they are outside its scope. The act of 82 | running the Program is not restricted, and the output from the Program 83 | is covered only if its contents constitute a work based on the 84 | Program (independent of having been made by running the Program). 85 | Whether that is true depends on what the Program does. 86 | 87 | 1. You may copy and distribute verbatim copies of the Program's 88 | source code as you receive it, in any medium, provided that you 89 | conspicuously and appropriately publish on each copy an appropriate 90 | copyright notice and disclaimer of warranty; keep intact all the 91 | notices that refer to this License and to the absence of any warranty; 92 | and give any other recipients of the Program a copy of this License 93 | along with the Program. 94 | 95 | You may charge a fee for the physical act of transferring a copy, and 96 | you may at your option offer warranty protection in exchange for a fee. 97 | 98 | 2. You may modify your copy or copies of the Program or any portion 99 | of it, thus forming a work based on the Program, and copy and 100 | distribute such modifications or work under the terms of Section 1 101 | above, provided that you also meet all of these conditions: 102 | 103 | a) You must cause the modified files to carry prominent notices 104 | stating that you changed the files and the date of any change. 105 | 106 | b) You must cause any work that you distribute or publish, that in 107 | whole or in part contains or is derived from the Program or any 108 | part thereof, to be licensed as a whole at no charge to all third 109 | parties under the terms of this License. 110 | 111 | c) If the modified program normally reads commands interactively 112 | when run, you must cause it, when started running for such 113 | interactive use in the most ordinary way, to print or display an 114 | announcement including an appropriate copyright notice and a 115 | notice that there is no warranty (or else, saying that you provide 116 | a warranty) and that users may redistribute the program under 117 | these conditions, and telling the user how to view a copy of this 118 | License. (Exception: if the Program itself is interactive but 119 | does not normally print such an announcement, your work based on 120 | the Program is not required to print an announcement.) 121 | 122 | These requirements apply to the modified work as a whole. If 123 | identifiable sections of that work are not derived from the Program, 124 | and can be reasonably considered independent and separate works in 125 | themselves, then this License, and its terms, do not apply to those 126 | sections when you distribute them as separate works. But when you 127 | distribute the same sections as part of a whole which is a work based 128 | on the Program, the distribution of the whole must be on the terms of 129 | this License, whose permissions for other licensees extend to the 130 | entire whole, and thus to each and every part regardless of who wrote it. 131 | 132 | Thus, it is not the intent of this section to claim rights or contest 133 | your rights to work written entirely by you; rather, the intent is to 134 | exercise the right to control the distribution of derivative or 135 | collective works based on the Program. 136 | 137 | In addition, mere aggregation of another work not based on the Program 138 | with the Program (or with a work based on the Program) on a volume of 139 | a storage or distribution medium does not bring the other work under 140 | the scope of this License. 141 | 142 | 3. You may copy and distribute the Program (or a work based on it, 143 | under Section 2) in object code or executable form under the terms of 144 | Sections 1 and 2 above provided that you also do one of the following: 145 | 146 | a) Accompany it with the complete corresponding machine-readable 147 | source code, which must be distributed under the terms of Sections 148 | 1 and 2 above on a medium customarily used for software interchange; or, 149 | 150 | b) Accompany it with a written offer, valid for at least three 151 | years, to give any third party, for a charge no more than your 152 | cost of physically performing source distribution, a complete 153 | machine-readable copy of the corresponding source code, to be 154 | distributed under the terms of Sections 1 and 2 above on a medium 155 | customarily used for software interchange; or, 156 | 157 | c) Accompany it with the information you received as to the offer 158 | to distribute corresponding source code. (This alternative is 159 | allowed only for noncommercial distribution and only if you 160 | received the program in object code or executable form with such 161 | an offer, in accord with Subsection b above.) 162 | 163 | The source code for a work means the preferred form of the work for 164 | making modifications to it. For an executable work, complete source 165 | code means all the source code for all modules it contains, plus any 166 | associated interface definition files, plus the scripts used to 167 | control compilation and installation of the executable. However, as a 168 | special exception, the source code distributed need not include 169 | anything that is normally distributed (in either source or binary 170 | form) with the major components (compiler, kernel, and so on) of the 171 | operating system on which the executable runs, unless that component 172 | itself accompanies the executable. 173 | 174 | If distribution of executable or object code is made by offering 175 | access to copy from a designated place, then offering equivalent 176 | access to copy the source code from the same place counts as 177 | distribution of the source code, even though third parties are not 178 | compelled to copy the source along with the object code. 179 | 180 | 4. You may not copy, modify, sublicense, or distribute the Program 181 | except as expressly provided under this License. Any attempt 182 | otherwise to copy, modify, sublicense or distribute the Program is 183 | void, and will automatically terminate your rights under this License. 184 | However, parties who have received copies, or rights, from you under 185 | this License will not have their licenses terminated so long as such 186 | parties remain in full compliance. 187 | 188 | 5. You are not required to accept this License, since you have not 189 | signed it. However, nothing else grants you permission to modify or 190 | distribute the Program or its derivative works. These actions are 191 | prohibited by law if you do not accept this License. Therefore, by 192 | modifying or distributing the Program (or any work based on the 193 | Program), you indicate your acceptance of this License to do so, and 194 | all its terms and conditions for copying, distributing or modifying 195 | the Program or works based on it. 196 | 197 | 6. Each time you redistribute the Program (or any work based on the 198 | Program), the recipient automatically receives a license from the 199 | original licensor to copy, distribute or modify the Program subject to 200 | these terms and conditions. You may not impose any further 201 | restrictions on the recipients' exercise of the rights granted herein. 202 | You are not responsible for enforcing compliance by third parties to 203 | this License. 204 | 205 | 7. If, as a consequence of a court judgment or allegation of patent 206 | infringement or for any other reason (not limited to patent issues), 207 | conditions are imposed on you (whether by court order, agreement or 208 | otherwise) that contradict the conditions of this License, they do not 209 | excuse you from the conditions of this License. If you cannot 210 | distribute so as to satisfy simultaneously your obligations under this 211 | License and any other pertinent obligations, then as a consequence you 212 | may not distribute the Program at all. For example, if a patent 213 | license would not permit royalty-free redistribution of the Program by 214 | all those who receive copies directly or indirectly through you, then 215 | the only way you could satisfy both it and this License would be to 216 | refrain entirely from distribution of the Program. 217 | 218 | If any portion of this section is held invalid or unenforceable under 219 | any particular circumstance, the balance of the section is intended to 220 | apply and the section as a whole is intended to apply in other 221 | circumstances. 222 | 223 | It is not the purpose of this section to induce you to infringe any 224 | patents or other property right claims or to contest validity of any 225 | such claims; this section has the sole purpose of protecting the 226 | integrity of the free software distribution system, which is 227 | implemented by public license practices. Many people have made 228 | generous contributions to the wide range of software distributed 229 | through that system in reliance on consistent application of that 230 | system; it is up to the author/donor to decide if he or she is willing 231 | to distribute software through any other system and a licensee cannot 232 | impose that choice. 233 | 234 | This section is intended to make thoroughly clear what is believed to 235 | be a consequence of the rest of this License. 236 | 237 | 8. If the distribution and/or use of the Program is restricted in 238 | certain countries either by patents or by copyrighted interfaces, the 239 | original copyright holder who places the Program under this License 240 | may add an explicit geographical distribution limitation excluding 241 | those countries, so that distribution is permitted only in or among 242 | countries not thus excluded. In such case, this License incorporates 243 | the limitation as if written in the body of this License. 244 | 245 | 9. The Free Software Foundation may publish revised and/or new versions 246 | of the General Public License from time to time. Such new versions will 247 | be similar in spirit to the present version, but may differ in detail to 248 | address new problems or concerns. 249 | 250 | Each version is given a distinguishing version number. If the Program 251 | specifies a version number of this License which applies to it and "any 252 | later version", you have the option of following the terms and conditions 253 | either of that version or of any later version published by the Free 254 | Software Foundation. If the Program does not specify a version number of 255 | this License, you may choose any version ever published by the Free Software 256 | Foundation. 257 | 258 | 10. If you wish to incorporate parts of the Program into other free 259 | programs whose distribution conditions are different, write to the author 260 | to ask for permission. For software which is copyrighted by the Free 261 | Software Foundation, write to the Free Software Foundation; we sometimes 262 | make exceptions for this. Our decision will be guided by the two goals 263 | of preserving the free status of all derivatives of our free software and 264 | of promoting the sharing and reuse of software generally. 265 | 266 | NO WARRANTY 267 | 268 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 269 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 270 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 271 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 272 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 273 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 274 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 275 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 276 | REPAIR OR CORRECTION. 277 | 278 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 279 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 280 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 281 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 282 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 283 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 284 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 285 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 286 | POSSIBILITY OF SUCH DAMAGES. 287 | 288 | END OF TERMS AND CONDITIONS 289 | 290 | How to Apply These Terms to Your New Programs 291 | 292 | If you develop a new program, and you want it to be of the greatest 293 | possible use to the public, the best way to achieve this is to make it 294 | free software which everyone can redistribute and change under these terms. 295 | 296 | To do so, attach the following notices to the program. It is safest 297 | to attach them to the start of each source file to most effectively 298 | convey the exclusion of warranty; and each file should have at least 299 | the "copyright" line and a pointer to where the full notice is found. 300 | 301 | 302 | Copyright (C) 303 | 304 | This program is free software; you can redistribute it and/or modify 305 | it under the terms of the GNU General Public License as published by 306 | the Free Software Foundation; either version 2 of the License, or 307 | (at your option) any later version. 308 | 309 | This program is distributed in the hope that it will be useful, 310 | but WITHOUT ANY WARRANTY; without even the implied warranty of 311 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 312 | GNU General Public License for more details. 313 | 314 | You should have received a copy of the GNU General Public License 315 | along with this program; if not, write to the Free Software 316 | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 317 | 318 | 319 | Also add information on how to contact you by electronic and paper mail. 320 | 321 | If the program is interactive, make it output a short notice like this 322 | when it starts in an interactive mode: 323 | 324 | Gnomovision version 69, Copyright (C) year name of author 325 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 326 | This is free software, and you are welcome to redistribute it 327 | under certain conditions; type `show c' for details. 328 | 329 | The hypothetical commands `show w' and `show c' should show the appropriate 330 | parts of the General Public License. Of course, the commands you use may 331 | be called something other than `show w' and `show c'; they could even be 332 | mouse-clicks or menu items--whatever suits your program. 333 | 334 | You should also get your employer (if you work as a programmer) or your 335 | school, if any, to sign a "copyright disclaimer" for the program, if 336 | necessary. Here is a sample; alter the names: 337 | 338 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 339 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 340 | 341 | , 1 April 1989 342 | Ty Coon, President of Vice 343 | 344 | This General Public License does not permit incorporating your program into 345 | proprietary programs. If your program is a subroutine library, you may 346 | consider it more useful to permit linking proprietary applications with the 347 | library. If this is what you want to do, use the GNU Library General 348 | Public License instead of this License. 349 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Busybox for Android the Easy Way (just a quick hack) 2 | ==================================================== 3 | 4 | This little package is designed to make your life easier if you are using 5 | the shell under an Android device. It includes a full-fledged Busybox 6 | environment that should make a fair replacement for the poor toolbox that 7 | comes with Android by default. 8 | 9 | You can install it in two ways: if you are compiling Android yourself, then 10 | you can add this package to your repository and Busybox will replace the 11 | default Toolbox whenever possible. If you already have a deployed (and 12 | rooted!) Android device, you can deploy busybox on it. 13 | 14 | Installing in your Android source tree 15 | -------------------------------------- 16 | Simply add a 'local_manifest.xml' file (or edit the existing one) in the .repo 17 | directory located at the root of your Android source tree with the following 18 | lines: 19 | 20 | 21 | 22 | 24 | 28 | 29 | 30 | Then run "repo sync" and build your images normally. 31 | 32 | Installing on an already-deployed Android device 33 | ------------------------------------------------ 34 | Run the 'android-install.sh' script while your device is connected. This will 35 | remount the system partition read-write, copy busybox, and make the appropriate 36 | symlinks on your device. You will need adb in your path for this to work. 37 | 38 | Misc 39 | ---- 40 | The files busybox-android.patch and busybox-android.config are a patch that 41 | allows ash history to work on Android and the configuration used to build 42 | Busybox, respectively. The busybox binary has been built statically against 43 | glibc - unfortunately, it seems impossible to build it against Android NDK. 44 | 45 | Non-executable .sh scripts are not meant to be run directly by the user. 46 | 47 | Compiling yourself 48 | ------------------ 49 | It should be pretty easy to recompile the binary yourself by following these 50 | steps: 51 | 52 | 1. Get and install the latest GNU/Linux toolchain from [here] 53 | (http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite) 54 | (unless you already have a working toolchain installed). Make sure the binaries 55 | directory is in your PATH. 56 | 2. Get and unpack the latest source for Busybox. 57 | 3. Apply `busybox-android.patch` from the git repo to Busybox source if you 58 | want to be able to use the profile and history under Android. 59 | 4. Copy `busybox-android.config` from the git into Busybox's source root and 60 | rename it to `.config`. Edit it and make sure `CONFIG_CROSS_COMPILER_PREFIX` is 61 | correctly set to your compiler's name. 62 | 5. Run `make` and you should obtain the `busybox` binary. 63 | 64 | TODO 65 | ---- 66 | Cleanup, proper configuration options and upstream integration, maybe? 67 | 68 | Feedback & contact 69 | ------------------ 70 | Alexandre Courbot 71 | 72 | -------------------------------------------------------------------------------- /android-install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # ryan: 4 | # I modified the original script as below for use with my rooted Atrix phone. 5 | # I'm using a retail build that still thinks it's a production device. 6 | # The best way to state this is that ro.secure=1 in default.prop, but su 7 | # executes under a shell on the device and yields root permissions 8 | # 9 | # Another oddity that I encountered is that mv can fail giving 10 | # errors citing cross-device linkage: 11 | # It seems that this error is given because mv tries 12 | # to move the hard link to the data, but fails because 13 | # in this case, the src and dest filesystems aren't the same. 14 | # 15 | # Symptoms of this state are that the following adb commands fail (not an ordered list, but executing any atomically): 16 | # adb remount 17 | # adb ls /data/app/ 18 | # adb root 19 | # but executing this works fine: 20 | # adb shell 21 | # $ su 22 | # $ ls /data/app/ 23 | # 24 | # Gnurou: 25 | # Another issue is that some devices come with most basic commands like mount 26 | # removed, which requires us to use BB to remount /system read-write. This is 27 | # why we first upload BB to a temporary, executable location before moving it 28 | # to /system/bin 29 | 30 | LOCAL_DIR=`dirname $0` 31 | BBNAME=busybox-android 32 | LOCALBB=${LOCAL_DIR}/${BBNAME} 33 | SCRIPT='android-remote-install.sh' 34 | # /data is preferred over /sdcard because it will allow us to execute BB 35 | TMP='/data/' 36 | TMPBB=${TMP}busybox 37 | TGT='/system/xbin/' 38 | TGTBB=${TGT}busybox 39 | 40 | function doMain() 41 | { 42 | # try to remount /system r/w 43 | adb remount 44 | adb shell mount |grep "\bsystem\b" |grep "\brw\b" 45 | # this is a remount form that works on "partially rooted devices" 46 | if [ $? -ne 0 ]; then 47 | adb push $LOCALBB $TMPBB 48 | adb shell <hist_file = hp; 61 | --------------------------------------------------------------------------------