1.概念
BusyBox 是一个集成了300多个常用 Linux 命令(例如:clear、mount、telnet、grep等)和工具的单一可执行文件,常用于嵌入式 Linux 系统,如 Android。
它虽然很小,但提供了许多命令行的功能,被称作Linux工具里的瑞士军刀。
BusyBox内置了ash、hush、sh等多套不同的shell环境。
BusyBox与ToyBox(轻量级的Linux命令行工具集合)类似。
2.在 Android 上使用 BusyBox 的步骤
1)获取 BusyBox
你可以根据Android系统的CPU架构(例如armeabi-v7a或arm64-v8a等)从 BusyBox 的官方网站(例如:https://busybox.net/downloads/binaries/)或源代码仓库下载源代码。
编译 BusyBox 以适应你的 Android 系统。这通常涉及到配置编译选项,以确保生成的 BusyBox 可执行文件与你的 Android 系统的CPU架构(如 ARM、x86、x64 等)相匹配。
配置编译选项的方法:
执行`make defconfig`生成一个默认的配置文件`.config`,然后执行`make menuconfig`打开图形配置界面,这里需要选择“Build BusyBox as a static binary (no shared libs)”选项,以编译成一个静态链接的可执行文件,避免运行时依赖其他库。
2)将 BusyBox 安装到 Android 设备
将编译好的 BusyBox 可执行文件复制到你的 Android 设备上。这可以通过 ADB(Android Debug Bridge)或直接将文件复制到设备的文件系统来完成。
你可能需要将 BusyBox 文件复制到设备的某个特定位置,例如 /system/bin 或 /system/xbin,以便可以在命令行中直接调用。但是,这通常需要 root 权限。若不需root权限,可以复制到/vendor/bin目录或其他不需root的目录下。
如果设备未root,可以将BusyBox命令安装到可以读、写、执行的普通目录下,如/data/tool/busybox,并添加到系统环境变量里。命令如下:
adb shell
cd /data/tool/busybox
#给所有用户增加读、写、执行权限
chmod a+rwx busybox
./busybox --install ./
export PATH=/data/tool/busybox:$PATH
如需环境变量永久生效,可以将上一句代码写入/etc/profile文件,并使用source /etc/profile命令让配置文件生效。
若需验证是否安装成功BusyBox,可以执行命令adb shell busybox查看返回结果。
安装后,Android系统里就拥有了2套命令行程序,一个是Android原生的,一个是BusyBox的。
3)为 BusyBox 创建软链接
由于 BusyBox 本身只是一个单一的可执行文件,但它提供了许多不同的命令,因此你需要为每个命令创建一个指向 BusyBox 的软链接。这可以通过为Android系统自带命令创建符号链接来完成。
例如,要为 ls 命令创建软链接,你可以执行 ln -s /data/tool/busybox/busybox ls。
4)使用 BusyBox
若要调用wget命令,可以执行:
busybox wget
或
wget
3.注意事项
修改 Android 系统的 /system 分区通常需要 root 权限,可以使用adb root即adb remount命令来获取访问权限。
如果你没有 root 权限,你可能无法使用 BusyBox 替换系统默认的命令。
微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。
欢迎关注。助您在编程路上越走越好!