toybox 和 busybox 的作用

来自知乎:程序员秘书

##前言##

我们在做android开发时,经常会有在板子系统里要修改文件内容对比验证问题,或者要操作特殊的shell命令操作看些信息,等等一些需求。但是往往会因为刷到板子的系统里默认没有/不支持相关的命令,令人比较苦恼。

比如,虽然我已经remount文件系统为rw权限,但因为系统里面没有命令支持,无法直接修改文件内容或者配置,就导致必须先将系统里面的文件或配置 pull 出来,然后本地修改完后,再 push 回去才行。试想,如果可以直接在系统里面就能完成编辑和修改,是不会高效很多。

针对困境,目前我知道两种实现方式,做个笔记。希望文章对你也有用。

##正文##

两种命令工具 即:toybox 和 busybox

一、toybox

Android版本中,许多Linux命令以及Android自带的命令,有一部分命令已经是二进制实体直接放在/system/bin/目录下了,比较新的android版本,还有一部分命令是集成在toybox这个二进制文件中了,然后是通过软连接到toybox来执行对应命令的,如:

 root:/ # cd system/bin/
 root:/system/bin # ls -l
 -rwxr-xr-x 1 root shell  489352 2009-01-01 08:00 toybox
 -rwxr-xr-x 1 root shell   11688 2009-01-01 08:00 reboot
 -rwxr-xr-x 1 root shell  164928 2009-01-01 08:00 remount
 lrwxr-xr-x 1 root shell       6 2009-01-01 08:00 sync -> toybox
 lrwxr-xr-x 1 root shell       6 2009-01-01 08:00 sysctl -> toybox
 lrwxr-xr-x 1 root shell       6 2009-01-01 08:00 tac -> toybox
 lrwxr-xr-x 1 root shell       6 2009-01-01 08:00 tail -> toybox
 lrwxr-xr-x 1 root shell       6 2009-01-01 08:00 tar -> toybox
 lrwxr-xr-x 1 root shell       6 2009-01-01 08:00 vmstat -> toybox
 lrwxr-xr-x 1 root shell       6 2009-01-01 08:00 watch -> toybox
 lrwxr-xr-x 1 root shell       6 2009-01-01 08:00 wc -> toybox
 lrwxr-xr-x 1 root shell       6 2009-01-01 08:00 which -> toybox
 lrwxr-xr-x 1 root shell       6 2009-01-01 08:00 whoami -> toybox
 ......
 root:/system/bin # toybox
 acpi base64 basename blkid blockdev cal cat chattr chcon chgrp chmod chown chroot chrt cksum clear cmp comm cp cpio cut date dd devmem df diff dirname dmesg dos2unix du echo egrep env expand expr fallocate false fgrep file find flock fmt free freeramdisk fsfreeze fsync getconf getenforce getfattr getopt grep groups gunzip gzip head help hostname hwclock i2cdetect i2cdump i2cget i2cset iconv id ifconfig inotifyd insmod install ionice iorenice iotop kill killall ln load_policy log logname losetup ls lsattr lsmod lsof lspci lsusb makedevs md5sum microcom mkdir mkfifo mknod mkswap mktemp modinfo modprobe more mount mountpoint mv nbd-client nc netcat netstat nice nl nohup nproc nsenter od partprobe paste patch pgrep pidof ping ping6 pivot_root pkill pmap printenv printf prlimit ps pwd pwdx readelf readlink realpath renice restorecon rev rfkill rm rmdir rmmod runcon sed sendevent seq setenforce setfattr setsid sha1sum sha224sum sha256sum sha384sum sha512sum sleep sort split stat strings stty swapoff swapon sync sysctl tac tail tar taskset tee test time timeout top touch tr traceroute traceroute6 true truncate tty tunctl ulimit umount uname uniq unix2dos unlink unshare uptime usleep uudecode uuencode uuidgen vconfig vi vmstat watch wc which whoami xargs xxd yes zcat

通过以上操作可以看到toybox包含的详细命令,以及软连接情况,基本上我们平时常用到命令都包含了,确实方便了很多。

假如你使用的android版本没有自带toybox,可以按照如下步骤自行下载,然后push进去使用:

1、下载地址:

官网: http://landley.net/toybox/index.html
下载: http://landley.net/toybox/bin/

2、push路径:

adb push toybox /system/bin/

3、使用举例,如 vi命令修改:

toybox vi config.xml

4、修改完,可通过重启机器或者重启相关服务,验证修改是否生效。

二、busybox

除了android自带或者自行下载toybox外,还可以通过下载 busybox,可以实现同样的需求。

busybox,俗称 “瑞士军刀”,集成压缩了 Linux 的许多工具和命令,也包含了 Android 系统的自带的shell。

可按照如下步骤自行下载,然后push进去使用:

1、下载地址:

官网: https://busybox.net/
下载: https://busybox.net/downloads/
下载: http://www.busybox.net/downloads/binaries/

2、push:

adb push busybox /system/bin/

3、使用举例,如 vi命令修改:

busybox vi config.xml

4、修改完,可通过重启机器或者重启相关服务,验证修改是否生效。

三、需要注意:

1、操作之前,确保自己本地版本系统里面已经 remount 文件系统,是可正常读写,修改文件的,否则会操作不成功;

2、具体命令之前记得带上 busybox 或 toybox 指定工具集,否则系统可能找不到对应命令,会提示如:

 root:/ # vi
 /system/bin/sh: vi: inaccessible or not found

前面带上busybox 或 toybox 指定工具集,则ok:

 root:/ # toybox vi
 root:/ # busybox vi

3、下载 busybox 和 toybox 时注意,注意下载自己对应体系架构的version,如:

busybox

toybox

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值