[Android] 为Android安装BusyBox —— 完整的bash shell

[Android] 为Android安装BusyBox —— 完整的bash shell

大家是否有过这样的经历,在命令行里输入adb shell,然后使用命令操作你的手机或模拟器,但是那些命令都是常见Linux命令的阉割缩水版,用起来很不爽。是否想过在Android上使用较完整的shell呢?用BusyBox吧。不论使用adb连接设备使用命令行还是在手机上直接用terminal emulator都可以。

一、什么是BusyBox ?

BusyBox 是标准 Linux 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀.简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令。(摘自百度百科)

二、在Android上安装BusyBox

准备:

0. 先要把手机给Root了,具体教程这里就不提供了,网上有很多。

1. 下载BusyBox的binary,打开这个地址 http://www.busybox.net/downloads/binaries ,选择最新版本,然后下载对应你的设备架构的版本,这里我下载了busybox-armv6l,下面将以这个文件名为示例。

2. 需要有一个命令行的环境,在电脑上使用adb或在手机上使用terminal emulator。

3. 连接手机和电脑,手机的USB Mode设置成None(仅充电),并且开启USB调试模式。

安装:

1. 将busybox-armv6l重命名为busybox

2. 将busybox传入手机的SD卡,可以使用下面的命令或自己想其他办法。

打开terminal(Linux,Mac)或cmd(Windows)

adb push ~/Desktop/busybox /mnt/sdcard

其中的~/Desktop请根据自己的情况替换成正确的路径

3. 输入以下命令,为了在/system目录写入文件

adb shell
su
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 / system

使用 ls 检查一下 /system 里是否有 xbin 目录,没有的话输入 mkdir xbin 创建,因为本示例是要把busybox安装到 /system/xbin 。

4. 复制 busybox 文件到 /system/xbin,并为其分配“可执行”的权限

cp /mnt/sdcard/busybox / system /xbin
chmod 755 busybox

5. 这时就可以使用 busybox 的命令了,例如以前没有清屏的clear命令,现在只需输入 busybox clear 就可以实现清屏功能,使用完整版的 ls 只需输入 busybox ls 。

但是每次前面都加上个busybox太麻烦了,所以我们还要继续完成安装。

在 /system/xbin 下输入

busybox --install .

如果想安装到别的目录,则把点替换成别的路径。

至此就安装完成了,比较一下原来的 ls 命令和 busybox 里的 ls 命令。

常见错误:

1. 如果安装时出现这样的错误,

busybox: /bin/zcat: No such file or directory

busybox: /sbin/zcip: Invalid cross-device link

说明没有输入安装路径,正确的示例 busybox --install /system/xbin

2. 如果出现这样的错误,

cp: /system/xbin/busybox: Read-only file system

说明没有正确输入上面第三步的mount命令。

小技巧:

1. busybox 里有 ash 和 hush 还有 sh 这几种 shell,在命令行输入 ash 或 hush,可以像在 bash 里那样,通过按上下键选择刚才输入的命令。

2. android系统本身就有ls命令,busybox里也有ls,输入ls时调用的是android的ls,那么想用busybox的ls就要每次都在前面加个busybox吗?不用,使用alias命令可以搞定。

alias ls= 'busybox ls'

同样的,cp、mv等二者都有的命令都可以这样搞定。也可以通过修改 /init.rc 来解决。

分类: Android
10
0
(请您对文章做出评价)
«上一篇: [Android] 为ImageButton添加按下的动画效果 变亮或变暗
»下一篇: [Hackintosh] Mac无法保存输入法的解决方案
posted @ 2011-03-12 16:05 木乃猫 阅读( 103070) 评论( 11) 编辑 收藏

  
#1楼 2011-03-15 21:02 | 非暴力土豆  
杯具得没有ROOT
  
#2楼 2011-10-22 05:31 | wangxp  
大哥, 没有busybox 能使用cp命令的???
  
#3楼 2012-05-29 09:06 | gleepss  
--- #2楼 2011-10-22 05:31 | wangxp
--- 大哥, 没有busybox 能使用cp命令的???

cp需要busybox, 可以利用已經push進去的busybox來執行.

照以下方式: (~/Desktop 替換成正確的路徑)
adb push ~/Desktop/busybox-armv6l /data/local/busybox
adb shell "mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system"
adb shell "chmod 755 /data/local/busybox"
adb shell "/data/local/busybox mv /data/local/busybox /system/xbin/."
adb shell "/system/xbin/busybox --install /system/xbin"
  
#4楼 2013-02-08 21:27 | 淅沥枫  
how to modify init.rc to use ls in busybox ?
  
#5楼 2014-02-19 10:38 | 雷猪头  
2|shell@android:/dev/block $ su
1|shell@android:/dev/block $ mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
mount: Operation not permitted
255|shell@android:/dev/block $

是没有root权限?
  
#6楼 2014-11-02 18:09 | 激流勇进  
非常不错,三星Note3成功安装busybox,谢谢!Thanks!,现在就有一个完整的移动bash shell了,太兴奋了!支持
  
#7楼 2015-04-17 00:11 | QGB  
写得不错,详实可靠
  
#8楼 2015-04-19 01:22 | QGB  
请问 sh: cp: not found应该怎么解决
  
#9楼 2015-04-19 01:28 | QGB  
@gleepss

D:\Program Files\android\sdk\platform-tools>adb push bs /data/local/bs
failed to copy 'bs' to '/data/local/bs': Permission denied
怎么办?busybox通过adb传入sdcard后不能执行。别的目录又没有写入权限。cp命令又没有
  
#10楼 2015-04-19 01:38 | QGB  
root后直接用re管理器拷到/system/xbin

busybox 改名无法运行 提示 bs:: applet not found
把名字改成busybox好了
  
#11楼 2015-06-10 14:13 | kop1892  
哈喽,大神。
按照文中说的 busybox --install 之后,输入 ls 后得到的显示结果跟busybox ls 不一样,是我的操作有问题吗
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值