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

2023-11-10

http://www.cnblogs.com/xiaowenji/archive/2011/03/12/1982309.html


大家是否有过这样的经历,在命令行里输入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)

?
adbpush ~/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 来解决。



另外,本人做时,是自己编译好的busybox,同时在直接在Android源码编译时修改/system的权限(android-4.0/out/target/product/maguro/root/init.tuna.rc 中 关于权限的语句改成rw,和上面第三步命令类似处),之后push到

/system/xbin  

安装:

busybox --install /system/xbin



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为Android安装BusyBox —— 完整的bash shell 的相关文章

  • c语言中的顺序点

    http bbs csdn net topics 370153775 经常可以在一些讨论组里看到下面的提问 谁知道下面C语句给n赋什么值 m 1 n m m 最近有位不相识的朋友发email给我 问为什么在某个C 系统里 下面表达式打印出两
  • solidworks 之迈迪齿轮设计方法 粗浅解释

    之前对同步带比较了解 从来未涉及到齿轮的设计 对迈迪的工具不是了解 之前从来无法争取生成过齿轮 特此标记方法 必须要有这个标记 根据经验系数 其他的也没有尝试 之前默认选项是用户自定义 之后就可以选择模数 然后齿数 然后到 齿数决定了齿轮的
  • CTF 加解密合集

    0x00 前言 本篇的目的是对工具的收集 以及对一些题目的整理 持续更新 CTF 加解密合集 CTF Web合集 网络安全知识库 文中工具皆可关注 皓月当空w 公众号 发送关键字 工具 获取 0x01 古典加密 1 栅栏加密 CTF加密解密
  • Mac电脑——MySQL数据库root密码忘记了,不要紧,看我操作

    1 先把MySQL服务器停止运行 2 打开MySQL的文件 并修改my cnf文件 mac电脑是my cnf windows电脑是my ini 3 my cnf文件无法打开 我们可以将该文件的后缀名my cnf修改为my txt 修改完后在
  • 归零码和不归零码、单极性码和双极性码

    关于基带数字信号表示 下面有一些常见的细节 对于传输数字信号来说 最常用的方法是用不同的电压电平来表示两个二进制数字 即数字信号由矩形脉冲组成 a 单极性不归零码 无电压表示 0 恒定正电压表示 1 每个码元时间的中间点是采样时间 判决门限
  • python 获取时间间隔,Python:从时间间隔到值的映射

    I m refactoring a function that given a series of endpoints that implicitly define intervals checks if a number is inclu
  • JPA多条件查询之AND和OR混合查询

    JPA多条件查询这种业务场景是很常见的 比如说这种 像这种同一个查询条件可以多选的用OR语句来查询 比如 材质 之间选了 PU 和 橡胶 就用OR 不同查询条件之间则用AND语句查询 比如 品牌 和 材质 之间就用AND拼接 我现在要根据不
  • 相对比较全的webpack5配置

    const path require path const MiniCssExtractPlugin require mini css extract plugin const HtmlWebpackPlugin require html
  • 【论文精读】CVPR2021 - ReDet:一种用于航空目标检测的旋转等变检测器

    论文精读 CVPR2021 ReDet 一种用于航空目标检测的旋转等变检测器 论文原文 R3Det Refined Single Stage Detector with Feature Refinement for Rotating Obj
  • 成为技术传播者(一):写在前面

    这几年一直是在传说中的 高科技行业 里混迹 于是也有幸体验了很多来自高科技的悖论 譬如说 专门开发OA的一家软件公司 自己没有一套像样的OA系统 所有的文档都靠MSN传来传去 或者放在机器上开共享访问 再譬如说 给别人做敏捷方法培训的一个家
  • 使用Python 和matlab 进行AR模型的仿真(自回归模型)

    对钙信号的动力学进行建模 AR模型 import matplotlib pyplot as plt import numpy as np if name main length 500 time range length gamma 0 9
  • 用Linux搭建chrony服务器同步时间

    准备工作 在准备之前需要准备两台虚拟机 一台当做服务器使用 另一台当作虚拟机客户端使用 具体方法 鼠标右键某一个虚拟机 gt 点击管理 gt 点击克隆 提示 克隆好虚拟机后 记得修改主机名和IP地址 不然就和第一台冲突了 修改IP地址 使用
  • Tomcat源码:CoyoteAdapter、Valve#invoke、ApplicationFilterChain

    前文 Tomcat源码 启动类Bootstrap与Catalina的加载 Tomcat源码 容器的生命周期管理与事件监听 Tomcat源码 StandardServer与StandardService Tomcat源码 Container接
  • 通过百度驾车API计算一天的总行程

    前提 我们在校车上安装了GPS定位器 每5秒发送一次GPS信息到服务器后台 表结构是这个样子的 名称 行驶日志表 代码 log bus drive 注释 维护行驶日志记录 名称 代码 数据类型 限定 注释 主键 bus drive id l
  • Linux简答

    1 静态库和动态库 2 gcc编译四个阶段 预处理 编译 汇编和链接 标准I O提供了三种类型的缓冲 分别是 单缓冲 双缓冲 循环缓冲 3 Vim的三种模式 命令模式 插入模式 底行模式 i键 进入编译模式 ctrl v 进入可视模式 ES
  • 并发编程系列之volatile内存语义

    前言 前面介绍顺序一致性模型时 我们提到了程序如果正确的同步就会具备顺序一致性 这里所说的同步泛指广义上的同步 其中包括就包括同步原语volatile 那么volatile声明的变量为什么就能保证同步呢 这又是如何实现的呢 今天就让我们一起
  • js混淆与反混淆

    介绍几种js混淆方式 1 eval混淆 js中的eval 方法 就是一个js语言的执行器 它能把字符串解析成javascript的语法进行执行 简单来说就是把原本的js代码当成eval方法的参数 据说此方法出来的第一天就被破解了 修改一下代
  • 用java实现数组单元素操作

    题目 1 如果字符串中的字符为大写字母 则转换为小写字母 2 如果字符串中的字符为小写字母 则直接输出 3 如果字符串中的字符不是字母 则过滤掉 首先明确如何输入字符数组 import java util Scanner class put
  • Web项目中使用容器对象

    要是使用Maven构建项目 首先需要加入Maven依赖
  • 以太坊的RPC机制

    1 go语言的RPC机制 RPC Remote Procedure Call 远程过程调用 是一种通过网络从远程计算机程序上请求服 务 而不需要了解底层网络细节的应用程序通信协议 RPC协议构建于TCP或UDP 或者是 HTTP 之上 允许

随机推荐

  • linux set o,Linux Set 和 shopt 命令

    用set命令可以设置各种shell选项或者列 出shell变量 单个选项设置常用的特性 在某些选项之后 o参数将特殊特性打开 在某些选项之后使用 o参数将关闭某些特性 不带任何参数的set命 令将显示shell的全部变量 除非遇到非法的选项
  • 报这样的错误 error: #35: #error directive: "Please select first th 解决方法

    右键点击工程名 选择第一个options for target 下面选择C C 在define文本框中输入 USE STDPERIPH DRIVER STM32F10X MD MD根据你选择的机种更换为LD或HD
  • 暴击事件

    在许多场景中 我们可能会遇到需要处理一种快速多次触发某事件 并处于某种阈值时 执行某一指定操作 例如 双击 即快速按鼠标左键两次 或更多击 连按键盘某键 某方法被执行数次等 其中 双击有对应的事件可以注册 然而 更多的情况是没有的类似事件方
  • JS中'true'==true为什么返回false

    相等操作符在转换不同的数据类型时 相等和不相等操作符遵循下列基本规则 如果有一个操作数是布尔值 则在比较相等性之前先将其转换为数值 false转换为0 而true转换为1 如果一个操作数是字符串 另一个操作数是数值 在比较相等性之前先将字符
  • OLED拼接屏连接方法,需要注意哪些事项?

    OLED拼接屏是由多个OLED屏幕拼接而成的大屏幕 可以用于展示大型广告 信息发布 舞台背景等场合 在拼接OLED屏幕时 需要注意接法 以确保整个屏幕的显示效果和稳定性 首先 需要选择合适的OLED屏幕 一般来说 拼接屏幕的每个单元都应该是
  • PHP 23种设计模式

    设计模式的目的 重用性 相同功能的代码 不用多次编写 可读性 编程规范性 便于其他程序员的阅读和理解 可扩展性 当需要增加新的功能时 非常的方便 称为可维护 可靠性 当我们增加新的功能后 对原来的功能没有影响 使程序呈现高内聚 低耦合的特性
  • redis 3.0的集群部署

    文章转载自 http hot66hot iteye com blog 2050676 转载请注明出处 http hot66hot iteye com admin blogs 2050676 最近研究redis cluster 正好搭建了一个
  • 使用ChatGPT的gpt-3.5-turbo模型, PHP接入代码

  • CAN 总线通信 简要概括

    CAN 通信总线协议 简要概括 CAN 介绍 CAN 类型 高速 CAN 低速 CAN CAN 总线系统结构 CAN bus通信帧 CAN 基本数据帧结构 CAN 硬件设计 CAN 介绍 CAN Controller Area Networ
  • 2022年Python面试题汇总【面试官爱问】

    2022年Python面试题汇总 常问 1 请你讲讲python获取输入的方式 以及python如何打开文件 2 Python数据处理的常用函数 3 请你说说python传参传引用 4 请你说说python和java的区别 5 Python
  • IPv6知识概述 - IPv6地址

    IPv6知识概述 IPv6地址 IPv6地址表示 根据RFC4291 IPv6地址有3中格式 首选格式 压缩表示和内嵌IPv4地址的IPv6地址表示 首选格式 IPv6的地址长度是128位 bit 将这128位的地址按每16位划分为一个段
  • wincc怎么做一个弹出画面_Wincc如何利用单个弹出窗口画面的模板,来实现调用多组画面参数?...

    点击上方蓝色字 小叔聊自控 在后台回复关键字 画面脚本 即可获得本次视频中的所有文件及项目包 以下视频中包含本期所有内容 大家好 我是小叔 今天我们来了解一下Wincc如何利用单个弹出窗口的画面模板 来实现调用多组画面参数的方法 怎么来理解
  • Unity版本更新之后IOS审核提示机型适配变少

    之前用2020 3 1提交IOS白包 后来更新版本后使用2020 3 10打包的 提示适配 机器变少了 We identified one or more issues with a recent submission for App St
  • 问题集锦~

    1 Wireshark抓包过程遇到的一点小问题 在使用wireshark进行抓包时 发现目标为本机时 无法抓包 这是由于wireshark并不会抓取本机loop的流量 只会抓取流经网卡的流量 如果需要使用wireshark抓取本机的数据包
  • Q_DECLARE_PRIVATE与Q_DECLARE_PUBLIC

    Q DECLARE PRIVATE与Q DECLARE PUBLIC 这两个宏在Qt的源码中随处可见 重要性不言而喻 在 部落格的 Inside Qt Series 系列文章中 他用了3篇文章来讲这个问题 因为 QObject 本身比较复杂
  • java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener问题

    解决方案 1 spring web的jar包缺失 2 刷新工程 因为工程是部署在服务器下的 可能没被检测到
  • Spring Web MVC框架(六) 异常处理

    Spring Web MVC对异常处理有着完善的支持 我们可以捕获控制器中抛出的任何异常 然后按照异常类型将异常信息映射到某个视图文件 向用户显示对应的信息 ExceptionHandler 最简单的办法就是使用 ExceptionHand
  • PyTorch中nn.Module类中__call__方法介绍

    在PyTorch源码的torch nn modules module py文件中 有一条 call 语句和一条forward语句 如下 call Callable Any call impl forward Callable Any for
  • java 反射lib下的jar_JAVA通过反射调用外部的jar包

    把外包jar的信息写在配置文件中 这样如果外部jar改变了 只需要修改properties相应的配置即可 config properties文件内容如下 jarUrl E MessageSend jar className org line
  • 为Android安装BusyBox —— 完整的bash shell

    http www cnblogs com xiaowenji archive 2011 03 12 1982309 html 大家是否有过这样的经历 在命令行里输入adb shell 然后使用命令操作你的手机或模拟器 但是那些命令都是常见L