toybox 和 busybox 的作用

article/2025/10/6 23:36:52

来自知乎:程序员秘书

##前言##

我们在做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


http://chatgpt.dhexx.cn/article/VrkwOuX2.shtml

相关文章

欢乐听:一个简洁的瀑布流模式的音乐分享站

欢乐听 一个简洁的瀑布流模式的音乐分享站。

分享5个高质无损音乐网站,歌曲很丰富,爱听歌的小伙伴有耳福了

生活中很多人都离不开音乐,散步的时候听音乐,等待的时候听着音乐,心情不好的时候听音乐,不管走到哪,有音乐的陪伴一点也不寂寞,不同音乐的旋律给我们带来不同的心情,今天小编就给爱听音乐的小伙…

【音乐】收藏的300多首抖音神曲,MP3音乐分享,近一年的抖音歌曲

今天给大家分享N多(300)首抖音神曲。抖音大家都知道,各种火,各种原因,其中的BGM(背景音乐)更是起到了至关重要(画龙点睛)的作用,不知道是哪个大神搞的,去年我搞视频的时候…

搭建一个点歌QQ机器人,另外还能看美女

目录 前言具体实现1、爆照2、生日书3、获取歌词和分享音乐 完整项目下载地址(配置了python环境)完整项目下载地址(电脑没有python环境) 前言 完整项目,包括框架、代码和详细使用说明可以去社区下载(下载完…

基于java的音乐网站的设计与实现

欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 基于java的音乐网站的设计与实现 摘 要 随着互联网和宽带上网的普及,网络传输以其特有的快速、高效、便捷的传输方式越来越被人们接受。在当今社会的影响下&…

android wifi传输音乐,让你通过WiFi分享手机上的歌曲,音乐共享软件MyStream十一发布Android版...

MyStream原来是 iOS上的音乐共享应用,十一期间,它将跨出iOS平台,首次推出Android版音乐共享服务。 MyStream和主流的Pandora、Spotify、Turntable.fm、Songza这些音乐分享服务并不一样。它将手机上的本地音乐通过WiFi或蓝牙和周围的设备进行音…

竞品分析:网易云音乐和QQ音乐,音乐类app的战场

文章从产品的角度分别分析两款产品的行业市场、功能、业务模式以及运营策略,进一步了解两款产品的差异与不同。 一、产品概况 1. 产品概述及版本 网易云音乐是一款专注于发现与分享的音乐产品,依托专业音乐人、DJ、好友推荐及社交功能,为用…

网易云音乐竞品分析

概述 1.原因 个人平时使用网易云较多,正好想学学竞品分析怎么写。因此,想通过梳理市场最新报告和数据表现,了解在线音乐行业的现状和市场情况;分析网易云音乐目前的市场地位、功能设计、UI设计等方面,与相关竞品进行对…

音乐平台程序源码分享

简介: 这是一个音乐分享平台源码,用户可以自行上传音乐分享,源码自适应手机,使用很方便。 安装说明: 演示环境:宝塔PHP5.5 mysql5.6 Apache 2.4.46,把程序上传到根目录,然后修改数…

分享两个音乐播放地址

下歌吧音乐下载平台 http://music.y444.cn/ 搜索时候如果没有想要的,可以切换线路搜索一下 MYFREEMP3 MYFREEMP3 一个音乐下载以及播放网站 下载后的音乐名称需要直接更改一下,可以下载歌曲的歌词等 http://tools.liumingye.cn/music/?pagesearch…

基于web的音乐分享网站的设计与实现

欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye2 音乐分享网站的设计与实现 摘 要 随着社会的发展时代的前进,IT行业的发展也是日新月异,对人类的生产和生活方式产生了很大影响。网络传播以其特有的快…

把自己录制的mp3音乐分享到朋友圈

参考:https://www.zhihu.com/question/345647212 录了首歌,想上传至微信朋友圈,发现还没那么简单。 mp3音乐文件上传到网易云音乐后,无法使用分享功能,所以无法分享到朋友圈。 可通过以下步骤解决。 一、将mp3文件发…

#pragma comment

原因:突然看到#pragma comment,不知其意思.感觉自己是个渣渣.所以写了一篇博客. #pragma comment 简单来说就是链接了一个文件&#xff0c;它可以是compiler&#xff0c;exestr&#xff0c;lib&#xff0c;linker文件. 例如&#xff1a; #include<WinSock2.h> #pragma…

预处理 #pragma 命令详解

关注、星标公众号&#xff0c;不错过精彩内容 素材来源&#xff1a;网络 编辑整理&#xff1a;strongerHuang 预处理指令 #pragma 相信程序员都知道&#xff0c;但在所有的预处理指令中&#xff0c;#pragma 指令可能是最复杂的了&#xff0c;它的作用是设定编译器的状态或者是指…

#pragma DATA_SECTION与#pragma CODE_SECTION的使用

&#xff08;一&#xff09;#pragma DATA_SECTION 利用CCS进行DSP编程时&#xff0c;如果不指定变量的存储位置&#xff0c;那么编译器会自动给变量分配存储位置&#xff0c;但是&#xff0c;有些时候&#xff0c;需要将某个变量存放到某个特定的位置&#xff0c;这个时候就可…

#pragma用法大全

一、#pragma 1.1 #pragma message message能够在编译信息输出窗口中输出相应的信息&#xff0c;这对于源代码信息的控制是非常重要的。 #pragma message("test message!")1.2 #pragma code_seg 格式如&#xff1a; #pragma code_seg( [ [ { push | pop}, ] [ iden…

C语言#pragma使用

1.#pragma简介 &#xff08;1&#xff09;#pragma用于指示编译器完成一些特定的动作 &#xff08;2&#xff09;#pragma所定义的很多指示字是编译器特有的 &#xff08;3&#xff09;#pragma在不同的编译器间是不可移植的 &#xff08;4&#xff09;预处理器将忽略它不认识的#…

C语言#pragma使用方法

C语言#pragma使用方法 一、总结 1、#pragma用于指示编译器完成一些特定的动作 2、#pragma所定义的很多指示字是编译器特有的(每种编译可能都不一样) &#xff08;1&#xff09; #pragma message 用于自定义编译信息 &#xff08;2&#xff09;#pragma once 用于保证头文件只被…

pragma是什么意思?(词源强迫症患者的无聊问题

------此处的pragma仅指各类编程语言中的预处理指令#pragma------ 作为一位词源强迫症患者&#xff0c;为了我自己&#xff08;以免遗忘&#xff09;和广大病友们&#xff0c;我将找到的一些信息源在此记录如下&#xff1a; ---中文信息 “#Pragma是预处理指令它的作用是设定编…

#pragma的常用方法讲解

概述 我们在写代码时&#xff0c;总会遇到头文件多次包含的情况&#xff0c;刚开始时我们使用宏定义进行控制&#xff0c;之后发现有#pragma once这样简单的东西&#xff0c;当时是很兴奋&#xff0c;以为#pragma就这一种用法。唉~&#xff0c;现在想想当时还是年轻啊&#xf…