首页 / 操作系统 / Linux / Android自带的toolbox分析及扩展
被Android那点儿少得可怜的shell命令折磨的死去活来,终于下定了革命的决心。看一下怎么把渺小的toolbox替换成伟大的busybox吧。先大致描述一下Android系统中的shell程序部分。shell实现分为两部分:一、shell解释器和内置命令源码位于system/core/sh目录下,主要完成shell命令的解释查找,对于builtins.c中包含的内置命令,直接执行,对于toolbox的扩展命令,间接调用toolbox程序完成。二、toolbox扩展命令主要完成扩展命令的执行,每一个扩展命令对应一个name_main函数,如ls命令,对应ls_main函数。同时,每一个扩展命令都由一个system/core/toolbox/目录下面的.c文件实现。toolbox.c会根据这个目录下面的.c文件生成tools.h头文件,并在system/core/toolbox/Android.mk文件中为每个命令生成指向toolbox的连接。toolbox的实现结构使它扩展一个命令很容易。假设现在我们自己想手工添加一个shell命令mycommand,只要在system/core/toolbox/目录下面新建一个mycommand.c文件,并在里面实现一个mycommand_main函数,然后在system/core/toolbox/Android.mk中添加mycommand.c即可。Android.mk会自动把它编译进toolbox程序,并在编译生成的Android系统/system/bin目录下为这个命令生成一个指向toolbox的连接。接下来翻译一下网上的一篇文章,借助它,可以把Android自带的toolbox替换成busybox。Installing Busybox command line tools在Android系统中安装busybox命令行工具本文简单地介绍了怎么把busybox安装到Android的文件系统中去。如果你想直接安装,可以从下面的地址下载我已经预编译好并在Android2.1系统上试验成功的busybox,然后直接跳过下面的安装步骤。下载在Linux公社的1号FTP服务器里,下载地址:FTP地址:ftp://www.linuxidc.com用户名:www.linuxidc.com密码:www.muu.cc在 2011年LinuxIDC.com3月Android自带的toolbox分析及扩展下载方法见 http://www.linuxidc.net/thread-1187-1-1.html一、编译busybox1、下载busybox的最新版本,本文写作时最新版本是1.13.3。下载地址:http://www.busybox.net/2、解压源码:tar jxf busybox-1.13.3.tar.bz23、运行menuconfig对busybox进行配置cd busybox-1.13.3/make menuconfig4、在menuconfig中设置以下选项Busybox Settings --> Build Options --> Build Busybox as a static binary (no shared libs) - Enable this option by pressing "Y"Busybox Settings --> Build Options --> Cross compiler prefix - Set this option equal to "arm-none-linux-gnueabi-"Busybox Settings --> Installation Options --> Don"t use /usr - Enable this option by pressing "Y"5、把交叉编译器的地址导入到环境变量:export PATH=/opt/arm/arm-2007q3/bin:$PATH6、编译busyboxmake