来自知乎:程序员秘书

##前言##

我们在做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 remountlrwxr-xr-x 1 root shell       6 2009-01-01 08:00 sync -> toyboxlrwxr-xr-x 1 root shell       6 2009-01-01 08:00 sysctl -> toyboxlrwxr-xr-x 1 root shell       6 2009-01-01 08:00 tac -> toyboxlrwxr-xr-x 1 root shell       6 2009-01-01 08:00 tail -> toyboxlrwxr-xr-x 1 root shell       6 2009-01-01 08:00 tar -> toyboxlrwxr-xr-x 1 root shell       6 2009-01-01 08:00 vmstat -> toyboxlrwxr-xr-x 1 root shell       6 2009-01-01 08:00 watch -> toyboxlrwxr-xr-x 1 root shell       6 2009-01-01 08:00 wc -> toyboxlrwxr-xr-x 1 root shell       6 2009-01-01 08:00 which -> toyboxlrwxr-xr-x 1 root shell       6 2009-01-01 08:00 whoami -> toybox......root:/system/bin # toyboxacpi 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 viroot:/ # busybox vi

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

busybox

toybox

toybox 和 busybox 的作用相关推荐

  1. busybox的作用和功能

    第一篇: 1,busybox简介 busybox是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小 ...

  2. recovery模式下支持ADB连接和串口操作

    前言 Android平台下我们有时候会进入recovery下做一些操作,不管是通过ADB连接还是通过串口操作,都需要你的平台支持,不支持的话可以按照我们这篇文章进行修改. 正文 ADB连接 进入rec ...

  3. (三)linux之根文件系统的制作

    (一)准备工作 Ubuntu 16.04系统 linux-3.5内核:linux-3.5-20190929 交叉编译工具arm-linux-gcc-4.5.1-v6-vfp-20120301.rar ...

  4. android_adb调试链接方案/链接失败的若干问题/android11+无线调试(wireless debugging)/android玩机工具箱/进程管理scene5

    文章目录 refs 设备驱动 android开发者可能遇到的问题 故事缘由 问题小结 案例:小米助手连接失败 小米刷机助手官方的FAQ 体验链接成功后的adb链接(scene5)玩机工具 无线adb调 ...

  5. 使用Ubuntu+qemu模拟器搭建arm运行环境

    我的环境: VMware Ubantu8.2-19ubuntu1 Linux内核 3.13.0-32-generic 1.下载Linux内核 wget https://www.kernel.org/p ...

  6. 变废为宝--Android手机变服务器

    前言 如果你家有很多的闲置 Android 手机,你可以选择转二手卖了,也可以选择像小编一样,尝试着变"废"为宝–一分钱不花的变成一台 Linux 服务器~ 先说下实际测试结果:可 ...

  7. 如何将手机变成一个(Linux)服务器

    文章目录 前言 一.业务描述 二.手机上用到的app 1.Linux Deploy 2.Busybox 3.ADB工具安装器 4.JuiceSSH 三.Linux Deploy安装 总结 前言 总所周 ...

  8. Toybox、toolbox、busybox 软件协议

    之前项目需要, 做过shell命令得移植工作, 当时移植得是buxybox, 觉得buxyboxy得源码简单易懂, 但是移到一半时,注意到软件得许可协议,因为项目得软件是商业得闭源软件, 因为busy ...

  9. 初识Docker:BusyBox容器后台运行失败

    1.问题描述:我在进行Docker网络实验时,使用docker  run  -d  busybox命令时,busybox无法保持后台长期运行. ============================ ...

最新文章

  1. R语言可视化包ggplot2绘制饼图(pie chart)实战
  2. openssl实现CA自签证书和颁发数字证书
  3. pyhton中的魔术方法
  4. 精选CSDN的ACM-ICPC五星博客
  5. CentOS 6.5 安装与配置LAMP
  6. python简单开发接口
  7. CodeForces 444C 节点更新求变化值的和
  8. 阿里云迁云方式大汇总 1
  9. 【Java】Kryo运行报错:Exception in thread “main“ java.lang.IllegalArgumentException:Class is not registered
  10. openlayers 3读取加载geojson格式数据
  11. System学习笔记004---Windows系统中hosts文件的作用_Zookeeper在SpringBoot中报错需要配置一下这个文件
  12. 在5G时代,微信还能活多久?
  13. 部署Docker前必须问自己的四个问题
  14. JQuery Form AjaxSubmit(options)在Asp.net中的应用注意事项
  15. mysql CMD命令
  16. 全网首发:明明已安装也存在,报错找不到lualib.h
  17. vim实现CTRL+S为保存快捷键
  18. 要将OFD文件的base64编码转换为可下载的OFD文件
  19. 天池大赛--ICPR Text Detection总结
  20. MAC 启动jar失败 显示 Unable to access jarfile xxx.jar

热门文章

  1. 采购管理系统解决方案:助力企业采购平台数字化转型
  2. 数学建模-模拟退火算法-函数寻优(优化模型)
  3. webpack的了解及其各种使用
  4. asp php微信支付,Asp微信支付接口代码 微信中生成订单后可以直接调出微信钱包直接付款_随便下源码网...
  5. 一文详解中文实体识别模型 Lattice LSTM
  6. 2022年全球市场心跳异常检测设备总体规模、主要生产商、主要地区、产品和应用细分研究报告
  7. Action recognition in video
  8. ffmpeg 视频 转 gif
  9. 利用Abaqus的UMAT子程序仿真木材蠕变现象
  10. 简易二极管收音机制作方法