Android安装Busybox

这个只为开发者用,一般人别用。

最新的busybox已经足够强大,强大到不可想像了添加了很多命令,对开发者来说是极为好用的。

如果你是个拿来主义,把这个下载了,在system分区解压就好了。toolbox中特有的命令还是会保留的,相同的命令会替换。我使用的是armv4指令集的交叉工具链编译的,目的就是尽可能的通用。如果你的Android设备不能用,那么就得自己编译了。(编译好的:http://download.csdn.net/detail/kangear/7564291,将压缩包放到Android手机中,进行第7步解压操作就好了!)

编译一个busybox,前提你装好了交叉工具链,以下就是编译脚本。

#!/bin/sh
#@author  : kangear
#@function: build busybox static.# 1.download source
wget http://www.busybox.net/downloads/busybox-1.22.1.tar.bz2 -O busybox.tar.bz2 || exit 1# 2.uncompress and cd
tar xvjf busybox.tar.bz2 && cd busybox-1.22.1 || exit 1# 3.config
make defconfig CROSS_COMPILE=arm-linux- || exit 1# 4.modify busybox.links
make CROSS_COMPILE=arm-linux- LDFLAGS=--static install || exit 1
rm _install -rf || exit 1
#   4.1 delect linuxrc line
sed -i '/linuxrc/d' busybox.links || exit 1
#   4.2 sbin usr/bin usr/sbin => bin
sed -i 's/usr\/sbin/bin/' busybox.links || exit 1
sed -i 's/usr\/bin/bin/' busybox.links || exit 1
sed -i 's/sbin/bin/' busybox.links || exit 1# 5. build & install
make CROSS_COMPILE=arm-linux- LDFLAGS=--static install || exit 1# 6. tar cvzf
# adb push /system/bin & tar xvzf bin.tar.gz
tar cvzf busybox_bin.tar.gz -C _install/ bin || exit 1# 7. install into Android
#   7.1 将/system分区进行remount成可写的
#   7.2 将busybox_bin.tar.gz放置到Android文件系统中任何位置
#   7.3 tar xvzf busybox_bin.tar.gz -C /system/

包含的命令:

root@android:/ # busybox
BusyBox v1.22.1 (2014-06-27 15:14:59 CST) multi-call binary.
BusyBox is copyrighted by many authors between 1998-2012.
Licensed under GPLv2. See source distribution for detailed
copyright notices.Usage: busybox [function [arguments]...]or: busybox --list[-full]or: busybox --install [-s] [DIR]or: function [arguments]...BusyBox is a multi-call binary that combines many common Unixutilities into a single executable.  Most people will create alink to busybox for each function they wish to use and BusyBoxwill act like whatever it was invoked as.Currently defined functions:[, [[, acpid, add-shell, addgroup, adduser, adjtimex, arp, arping, ash,awk, base64, basename, beep, blkid, blockdev, bootchartd, brctl,bunzip2, bzcat, bzip2, cal, cat, catv, chat, chattr, chgrp, chmod,chown, chpasswd, chpst, chroot, chrt, chvt, cksum, clear, cmp, comm,conspy, cp, cpio, crond, crontab, cryptpw, cttyhack, cut, date, dc, dd,deallocvt, delgroup, deluser, depmod, devmem, df, dhcprelay, diff,dirname, dmesg, dnsd, dnsdomainname, dos2unix, du, dumpkmap,dumpleases, echo, ed, egrep, eject, env, envdir, envuidgid, ether-wake,expand, expr, fakeidentd, false, fbset, fbsplash, fdflush, fdformat,fdisk, fgconsole, fgrep, find, findfs, flock, fold, free, freeramdisk,fsck, fsck.minix, fstrim, fsync, ftpd, ftpget, ftpput, fuser, getopt,getty, grep, groups, gunzip, gzip, halt, hd, hdparm, head, hexdump,hostid, hostname, httpd, hush, hwclock, id, ifconfig, ifdown,ifenslave, ifplugd, ifup, inetd, init, insmod, install, ionice, iostat,ip, ipaddr, ipcalc, ipcrm, ipcs, iplink, iproute, iprule, iptunnel,kbd_mode, kill, killall, killall5, klogd, last, less, linux32, linux64,linuxrc, ln, loadfont, loadkmap, logger, login, logname, logread,losetup, lpd, lpq, lpr, ls, lsattr, lsmod, lsof, lspci, lsusb, lzcat,lzma, lzop, lzopcat, makedevs, makemime, man, md5sum, mdev, mesg,microcom, mkdir, mkdosfs, mke2fs, mkfifo, mkfs.ext2, mkfs.minix,mkfs.vfat, mknod, mkpasswd, mkswap, mktemp, modinfo, modprobe, more,mount, mountpoint, mpstat, mt, mv, nameif, nanddump, nandwrite,nbd-client, nc, netstat, nice, nmeter, nohup, nslookup, ntpd, od,openvt, passwd, patch, pgrep, pidof, ping, ping6, pipe_progress,pivot_root, pkill, pmap, popmaildir, poweroff, powertop, printenv,printf, ps, pscan, pstree, pwd, pwdx, raidautorun, rdate, rdev,readahead, readlink, readprofile, realpath, reboot, reformime,remove-shell, renice, reset, resize, rev, rm, rmdir, rmmod, route, rpm,rpm2cpio, rtcwake, run-parts, runlevel, runsv, runsvdir, rx, script,scriptreplay, sed, sendmail, seq, setarch, setconsole, setfont,setkeycodes, setlogcons, setserial, setsid, setuidgid, sh, sha1sum,sha256sum, sha3sum, sha512sum, showkey, slattach, sleep, smemcap,softlimit, sort, split, start-stop-daemon, stat, strings, stty, su,sulogin, sum, sv, svlogd, swapoff, swapon, switch_root, sync, sysctl,syslogd, tac, tail, tar, tcpsvd, tee, telnet, telnetd, test, tftp,tftpd, time, timeout, top, touch, tr, traceroute, traceroute6, true,tty, ttysize, tunctl, ubiattach, ubidetach, ubimkvol, ubirmvol,ubirsvol, ubiupdatevol, udhcpc, udhcpd, udpsvd, umount, uname,unexpand, uniq, unix2dos, unlzma, unlzop, unxz, unzip, uptime, users,usleep, uudecode, uuencode, vconfig, vi, vlock, volname, wall, watch,watchdog, wc, wget, which, who, whoami, whois, xargs, xz, xzcat, yes,zcat, zciproot@android:/ # 

另:关于《busybox无法ping域名的解决办法  》可以尝试如下实现busybox 中的ping:

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define oops(msg) { perror(msg); exit(1);}void fillip(char* buffer, const char* ip);char* name2ip(const char* name);
/***  * head len: 12*   * query: ? + 4*    * total: strlen(query.buffer) + 16*     */
typedef struct{u_short txid;u_short flag;u_short question;u_short answer;u_short authority;u_short additional;char buffer[256];struct {u_short type;u_short cls;}query;
}dns_req;
/** length of resp: 12 */
typedef struct{u_short txid;u_short flag;u_short question;u_short answer;u_short authority;u_short addtional;char buffer[1024];struct{u_short name;u_short type;u_short cls;u_short live_l;u_short live_h;u_short len;struct in_addr addr;}resp;
}dns_res;int main()
{char* p = name2ip("www.baidu.com");printf("ip is:%s\n", p);return 0;
}char* name2ip(const char *node){struct sockaddr_in dns;dns_req req;dns_res res;int sockid, len, index;char* dnsip = "61.139.2.69";//char* dnsip = "202.114.215.73";sockid = socket(PF_INET, SOCK_DGRAM, 0);if(sockid == -1)oops("socket");memset((void*)&dns, 0, sizeof(dns));dns.sin_family = AF_INET;dns.sin_port = htons(53);dns.sin_addr.s_addr = inet_addr(dnsip);memset((void*)&req, 0, sizeof(req));req.txid = htons(0x4419);req.flag = htons(0x0100);req.question = htons(1);fillip(req.buffer,node);req.query.type=htons(1);req.query.cls=htons(1);memcpy(req.buffer+strlen(req.buffer)+1, (void*)(&req.query), sizeof(req.query));sendto(sockid, (void*)&req, strlen(req.buffer)+17, 0,(struct sockaddr*)&dns, sizeof(dns));recvfrom(sockid, (void*)&res, sizeof(res), 0,(struct sockaddr*)&dns, &len);index = strlen(res.buffer)+5;while(1){memcpy((void*)&(res.resp), res.buffer+index, 12);if(ntohs(res.resp.type)==1){memcpy((void*)&(res.resp.addr), res.buffer+index+12, 4);break;}index += ntohs(res.resp.len) + 12;}return inet_ntoa(res.resp.addr);
}void fillip(char* buffer, const char* ip){int i,j=0;for(i = 0; ip[i] != 0; i ++){if(ip[i] != '.'){buffer[i+1] = ip[i];}else{buffer[j] = i - j;j = i + 1;}}buffer[j] = i - j;
}

先获取地区dns或者路由器上的dns或者getprop中的dns,思路先留在这里,以后有时候再完善。

/ # getprop | grep dns
[dhcp.eth0.dns1]: [192.168.100.1]
[dhcp.eth0.dns2]: []
[dhcp.eth0.dns3]: []
[dhcp.eth0.dns4]: []
[dhcp.wlan0.dns1]: [192.168.2.1]
[dhcp.wlan0.dns2]: []
[dhcp.wlan0.dns3]: []
[dhcp.wlan0.dns4]: []
[net.change]: [net.eth0.dns2]
[net.dns1]: [192.168.100.1]
[net.dnschange]: [4]
[net.eth0.dns1]: [49.0.0.0]
[net.eth0.dns2]: []
[net.wlan0.dns1]: [49.0.0.0]
[net.wlan0.dns2]: []

Android安装busybox相关推荐

  1. 为Android安装BusyBox

    大家是否有过这样的经历,在命令行里输入adb shell,然后使用命令操作你的手机或模拟器,但是那些命令都是常见Linux命令的缩水版,用起来很不爽.是否想过在Android上使用较完整的shell呢 ...

  2. Android安装BusyBox(三星N7108)

    近期公司安卓app测试,分配任务为监控APP内存.CPU占用率.因安卓是基于linux开发,故很容易就联想使用Linux监控相关的命令.想法总是美好的,现实总是残酷的,使用三星 Galaxy Note ...

  3. 小米系统MIUI安装busybox

    一.挂载system分区,活动读写权限 adb命令直接挂载 adb remout 挂载在某个目录下 1|whyred:/system # mount -o remount,rw -t yaffs2 / ...

  4. android模拟器bo,在 Android 模拟器中安装 busybox

    在Android模拟器中安装busybox [背景]: Android 模拟器的 shell 真是难用啊,很多命令都不支持,如 find . grep . send 等等,最近正好有时间,想捣鼓捣鼓, ...

  5. busybox linux安装教程,Android模拟器安装BusyBox的一个窍门

    在网上查了很多Android模拟器安装BusyBox的方法.发现都大同小异,都是将busybox安装好,然后要么通过手动的方法: export PATH="/data/busybox:$PA ...

  6. linux怎么编译并安装busybox,linux下安装busybox

    1.获取busybox源码并解压,这里使用天嵌提供的"busybox-1.16.0.tar.bz2" #tar xvf busybox-1.16..tar.bz2 -C / 解压的 ...

  7. 【奇技淫巧】在安卓模拟器中安装busybox

    [摘要] Busybox是一个开源项目,遵循GPL v2协议.大概集成了300+最常用的linux命令,不仅包含最简单的ls , cat ,echo 命令,还包含了一些更加强大,复杂的工具grep , ...

  8. 给 nanopi m2 Android系统安装busybox

    本次参考了http://blog.csdn.net/lxgwm2008/article/details/38925051 但在原有基础上有一定创新 1.首先有一块nanopi2 的开发板,CPU是 4 ...

  9. Android安装ssh服务

    1.安装条件 需要安装ssh服务的手机需要有root权限,我测试使用的手机是工程样机,adb连接上以后默认有root权限: 其他用户需要先root才能进行,可能需要把一些命令放到脚本中,放到手机中运行 ...

最新文章

  1. ajax获取php echo值,ajax 接受 php echo 与 return 区别
  2. java存储整数_关于数组:Java:存储大量整数的最佳数据类型是什么?
  3. 左牵Uber右联大众,黄教主带领320家车企一统自动驾驶江湖
  4. 关于CLSCompliant
  5. [Linux网络编程学习笔记]套接字地址结构
  6. MongoDB 分片的原理、搭建、应用
  7. python输入流和输出流_python读写gbk、utf-8等输入输出流
  8. matlab如何将相近的数据,matlab新手,求帮助!主要是如何将数据和公式导入
  9. cd-rom门锁定什么意思_CD-ROM的完整形式是什么?
  10. C++知识点(六)数组、指针与字符串导学
  11. python表示空类型的关键字_Python 为什么没有 void 关键字?
  12. Oracle存储使用情况,我收藏的oracle中一些分析空间使用情况的存储过程!
  13. oracle ora-01476: 除数为 0,Oracle常见错误:ORA-01403 的根本原因和解决方案
  14. VMware Linux VDI 安装步骤
  15. 【转帖】防止ASP.NET按钮多次提交的办法
  16. 武汉大学计算机学院毕业选题,《计算机毕业论文写作指导》
  17. 第 4 章 容器 - 030 - 实现容器的底层技术
  18. 关于云优CMS系统模板标签调用列表随机显示的代码rand()标签适用
  19. 状态机编程 (一) 状态机相关概念
  20. SD卡驱动(详细介绍,不明白的人可以仔细看看了.有流程图)

热门文章

  1. Mac OSX中设置路由
  2. 阿里云服务器安装tomcat
  3. [墨者学院] 日志文件分析溯源(脱裤的IP地址)
  4. 如何修复win7蓝牙服务器,恢复Windows7系统超便捷蓝牙连接
  5. xfce上安装mysql_新手把mysql装进docker中碰到的各种问题
  6. 【Git版本控制管理】Gitee(码云)和GitHub的使用
  7. 采用AT89C2051的智能时钟
  8. debian源(Debian源代码)
  9. gitlab 安装以及卸载
  10. 问卷星复制内容方法(利用官方功能导出为word格式)