1. busybox如何使用
BusyBox其实就是Linux的命令大全,可以方便手机系统备份之类的操作,下面小编要带来的就是关于BusyBox是什么?BusyBox怎么用的教程!
BusyBox使用教程:
1、首先把手机root。
2、下载安装RE文件管理器。下载并解压busybox
。
3、用数据线将手机连接电脑,把解压出来的busybox拷到储存卡的根目录。
4.
使用root
explorer浏览到/sdcard,找到busybox,长按,在弹出来的菜单里选择“复制”。
5.浏览到/system/bin/目录点击“挂载读写”,变成“挂载只读”点击粘贴。
6.拷贝好后,长按/system/bin/的busybox,选择“权限”,按如图所示设置权限,你的busybox便设置成功。
7.现在就能用钛备份了,钛备份可以删除系统带的一些应用程序。
2. BusyBox中将/etc/config/startdate.sh加入/etc/rc.local中后重启后开机时系统时间会变成上次脚本运行时间
echo"当前系统时间:`date+"%Y-%m-%d%H:%M:%S`"
这里有写的有问题,引号不配对。
3. 安卓手机安装完busybox.apk,出来个busybox installer图标,点击还是让安装,并提示安装成功,怎么运行命令
为Android加入busybox工具我们可以通过两种方式进入Android的console:
1. 直接执行命令emulator -shell;
2. 在启动emulator后,通过命令adb shell进入。
之后我们就可以使用一些linux下常用的命令了,如ls,cat等。然而Android自带的toolbox(位于/system/bin中)也太简略了点,有些命令如find,Android并不支持或者支持得不好。下面将介绍如何为Android加入busybox工具,通过编译得到一个可以在Android里面运行的busybox工具,我们就可以使用众多常见的linux命令了,如find,touch等。
步骤如下:
1. 首先去busybox主页 下载最新版本的busybox源代码.
2. 下载交叉编译工具: GNU Toolchain for ARM Processors
下载地址:http://www.codesourcery.com/gnu_toolchains/arm/download.html
其中第一项选择ARM EABI或ARM GNU/Linux,第二项选择IA32 GNU/Linux TAR即可。
最后得到一个arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2文件
将压缩包解压到linux下某个目录, 并设置好环境变量, 使之能找到前缀为"arm-none-linux-gnueabi-"的交叉编译工具.
3. 进入busybox源码目录.
先执行make menuconfig命令对编译过程进行配置. 过程如下:
Busybox Settings -> Build Options ->
[*] Build BusyBox as a static binary (no shared libs) 这个要选上,因上这样子编译出来的busyBox才是可以独立运行的。
(/home/jo/tool/arm-2008q3/bin/arm-none-linux-gnueabi-) Cross Compiler prefex 这是交叉编译器的"路径+前缀",要根据具体的情况来设置。
Busybox Settings -> Installation Options->
[*] Don’t use /usr 这样子编译出来的busybox才不会安装到你主机的/usr目录下。一定要选上。
4 执行make编译源码. 如果编译过程中产生无法找到头文件的错误, 可指定交叉编译器用到的头文件所在路径. 如
$make -I./home/jo/tool/arm-2008q3/arm-none-linux-gnueabi/libc/usr/include/
5 编译成功后将得到一个名为busybox的可执行文件.
6 在Android的console下建立目录/data/busybox, 并使用下面的命令将文件busybox复制该目录中:
adb push busybox /data/busybox
7 从Android的console进入/data/busybox目录, 为可执行文件busybox加上可执行属性: chmod +x busybox
8 这时我们就可以使用busybox工具了, 如果希望在任何目录下都可以直接使用bosybox,则需要将路径/data/busybox export到path环境变量中:
export PATH=$PATH:/data/busybox
9 设置环境变量之后, 在命令行输入busybox, 即可看到其用法, 如:
在当前目录及其子目录中查找名为init.rc的文件可使用以下命令:
$busybox find . -name init.rc
10 安装busybox。
通过执行./busybox --install -s 我们会看到出现一些错误, 原因是因为Android系统的根目录和/sbin目录是只读的. 因此我们无法把一些常用命令安装到/bin目录下, 也不能修改/init.rc文件来设置PATH环境变量.
对于如何执行命令busybox --install -s 的默认安装路径, 这里我还不太清楚, 或许跟Makefile和编译busybox的相关设置有关.
尽管我们不可以在Android里面通过执行busybox --install -s 命令来安装常用命令, 我们却可以通过另外一个方法来把常用命令安装到Android里面.
方法很简单, 可以先在外面的linux系统中执行make install命令把相关的命令提取出来. 然后再通过命令adb push ./_install/bin /data/busybox/bin 把这些常用命令复制进Android系统中. 注意: make install安装命令的所在路径可通过执行make menuconfig进行设置, 默认为./_install目录下面.
这样,我们就不用每次使用busybox提供的一个命令时, 都要在前面加上busybox了.
11 修改/init.rc文件设置环境变量.
请参考帖子: 对Android启动过程的进一步研究
要提醒的是, 修改PATH环境变量的时候, 应该把busybox常用命令的路径"/data/busybox/bin"放在Android的常用命令路径"/system/bin"的前面, 否则, 先查找得到的将不是busybox的命令, 可以这样设置:
export PATH /data/busybox/bin:/sbin:/system/sbin:/system/bin:/system/xbin
希望可以帮到你!
4. 求助,安装Ubuntu出现busybox
你好,
我从网上帮你找了下你的问题的解决方案,希望能帮到你。
方法如下:
进入安装界面后按F2选中文,然后按F6,在命令行的最后加上下面这一句后回车,后面的安装都顺利通过。
all_generic_idefloppy=off irqpoll
(off后面有空格)
希望能帮到你,望采纳~
5. 如何在Android模拟器下添加busybox
【具体步骤】:
1) 下载 busybox 源代码,并解包
$ wget -c http://www点busybox点net/downloads/busybox-1.7.0.tar.bz2
$ tar jxvf busybox-1.7.0.tar.bz2
2) 下载交叉编译工具,并安装
我下载的是: arm-2009q1-161-arm-none-eabi.bin
说明:要正确设置好 PATH 变量。
例如将 “ 你的目录 ”/CodeSourcery/Sourcery_G++_Lite/bin 加到 PATH 路径中。
3 )进入到 busybox 解压后的源文件目录中,修改 Makefile
将第 176 行改为:
CROSS_COMPILE ?=arm-none-linux-gnueabi-
4 )进行编译选项配置
a 、
$ make menuconfig
Busybox Settings --->
Build Options --->
[*] Build BusyBox as a static binary(no shared libs)
说明:这个选项一定要选,这样才能把 busybox 编译成静态链接的可执行文件,运行时可以独立于其他库。
b 、
Installation Options --->
[*] Don't use /usr
说明:这个也一定要选,否则 make install 后, busybox 将安装在原来系统的 /usr 下,将你原有的命令都覆盖了!
5 )配置好后可以编译了,执行如下命令:
$ make
发现没过多久,就报错了,晕,错误内容如下:
applets/applets.c:20:2: warning: #warning Static linking against glibc proces buggy executables
applets/applets.c:21:2: warning: #warning (glibc does not cope well with ld --gc-sections).
applets/applets.c:22:2: warning: #warning See sources.redhat.com/bugzilla/show_bug.cgi?id=3400
applets/applets.c:23:2: warning: #warning Note that glibc is unsuitable for static linking anyway.
applets/applets.c:24:2: warning: #warning If you still want to do it, remove -Wl,--gc-sections
applets/applets.c:25:2: warning: #warning from top-level Makefile and remove this warning.
applets/applets.c:26:2: error: #error Aborting compilation.
make[1]: *** [applets/applets.o] 错误 1
make: *** [applets] 错误 2
看到它给出了提示,说 glibc 库不适和用来静态编译,最后给出解决方案就是将 applets/applets.c 中这部分内容给去掉,也就是 19-27 行。
然后再 make 进行编译。
不多久又报错了,看看具体错误:
.../compal/CodeSourcery/Sourcery_G++_Lite/bin/../arm-none-linux-gnueabi/libc/usr/include/linux/netfilter.h:56:17: error: field 'in' has incomplete type
.../CodeSourcery/Sourcery_G++_Lite/bin/../arm-none-linux-gnueabi/libc/usr/include/linux/netfilter.h:57:18: error: field 'in6' has incomplete type
ipsvd/tcpudp.c: In function 'tcpudpsvd_main':
ipsvd/tcpudp.c:314:10: warning: ignoring return value of 'write', declared with attribute warn_unused_result
make[1]: *** [ipsvd/tcpudp.o] 错误 1
make: *** [ipsvd] 错误 2
看到说在我们下载的交叉编译库中有个头文件中的 in 及 in6 类型不对,解决的办法就是:
在 .../arm-none-linux-gnueabi/libc/usr/include/linux/netfilter.h 的开头
添加缺少的头文件:
#include <netinet/in.h>
然后再进行编译。(这次可以安全到最后了,呵呵)
结束后会在当前目录下看到 busybox 这个可执行文件。
6 )编译步骤已完成,下面就将 busybox 这个可执行文件放到 Android 模拟器下去
$ adb push busybox /system/xbin
说明:若是出现什么 read-only file system 等等之类,执行如下命令即可:
$ adb remount
要是老是不行,那就重新启动 adb
$ adb kill-server
$ adb start-server
要是碰到什么内存不足等等,那原因就是你的那个 Android 模拟器是用 Eclipse 打开的。解决办法就是,手动启动你的 Android emulator 模拟器,具体如下:
$ android list avd # 注释:列出你所有的模拟器
$ emulator -avd your_emulator_name -partition-size 256
注意:最好放在 /system/xbin 下面,这样当你在模拟器里使用 busybox 时不需要指定绝对路径了,否则的话谁都会疯掉嘛,呵呵。
7 )输入 adb shell 进入终端,执行看看
# busybox --help
BusyBox v1.7.0 (2011-04-22 20:53:21 CST) multi-call binary
Copyright (C) 1998-2006 Erik Andersen, Rob Landley, and others.
Licensed under GPLv2. See source distribution for full notice.
…
说明:表明我们的 busybox 已经可以执行了。但同时又有一个问题,每次输入一个命令都要加上 busybox ,那么人又要疯掉了, -_-! 。解决办法就是,我想到可以使用 alias 命令嘛,给我们所有输入的东西都自动加上 busybox ,具体如下:
【方法 1 】:
将你所感兴趣的命令集中在一个脚本中打包,例如建立内容如下的脚本:
#!/bin/sh
# set_alias1.sh (当然你名字可以随便改,越短越好,但不要和命令重名)
alias ls='busybox ls'
alias find='busybox find'
…
保存好后,将其 push 到模拟器中的 /system/xbin 下面,然后用 adb shell 进入到模拟器终端后执行如下命令:
# . set_alias1.sh # 注释:在当前进行中执行该脚本(一定要有 " 点 " )
【方法 2 】:
以上方法虽然能解决问题,但总觉得添加这么多东西也怪烦人的,写个智能点的脚本:
xxx:~/code/shellcode$ cat set_alias.sh
#!/bin/bash
# set_alias.sh
pre_handle_result=$(busybox echo -n $(busybox --help) | busybox grep -v '^/t')
pre_cmds=${pre_handle_result##*[[, }
sec_cmds=$(busybox echo -n $pre_cmds | busybox sed 's/,//g')
for cmd in $sec_cmds
do
# alias cmds
alias $cmd="busybox $cmd"
done
然后将其 push 到模拟器中的 /system/xbin 下,执行过程如上。
6. busybox 1.00 配置好以后 执行 make TARGET_ARCH=arm 出现以下错误
chmod 755 /usr/local/arm/3.4.1/bin
7. busybox 文件系统怎样执行自己的程序
运行自己的程序,需要在/lib目录下准备ld.so, ld-linux.so, libc.so
8. 安卓busybox怎么使用busybox可以干什么
BusyBox 将许多具有共性的小版本的UNIX工具结合到一个单一的可执行文件。这样的集合可以替代大部分常用工具比如的GNU fileutils , shellutils等工具,BusyBox提供了一个比较完善的环境,可以适用于任何小的嵌入式系统。
2、发源
BusyBox 最初是由 Bruce Perens 在 1996 年为Debian GNU/Linux安装盘编写的。其目标是在一张软盘上创建一个可引导的 GNU/Linux 系统,这可以用作安装盘和急救盘。
3、编译安装
#make
#make install
编译好后在busybox目录下生成子目录_install,里面的内容:
drwxr-xr-x 2 root root 4096 11月 24 15:28 bin
rwxrwxrwx 1 root root 11 11月 24 15:28linuxrc -> bin/busybox
drwxr-xr-x 2 root root 4096 11月 24 15:28 sbin
其中可执行文件busybox在需要制作文件系统映像烧入板子的情况下,busybox应放在根文件系统目录下的bin中,其他的都是指向他的符号链接。
4、、配置
busybox的配置程序和linux内核菜单配置方式简直一模一样。熟悉用make menuconfig方式配置linux内核的朋友很容易上手。
#cp busybox-1.00.tar.gz /babylinux
#cd /babylinux
#tar xvfz busybox-1.00.tar.gz
#cd busybox-1.00
#make menuconfig
下面是需要编译进busybox的功能选项。
General Configuration应该选的选项
Show verbose applet usage messages
Runtime SUID/SGID configuration via /etc/busybox.conf
Build Options
Build BusyBox as a static binary (no shared libs)
这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库。否则必需要其他库文件才能运行,在单一个linux内核不能使它正常工作。
Installation Options
Don't use /usr
这个选项也一定要选,否则make install 后busybox将安装在原系统的/usr下,这将覆盖掉系统原有的命令。选择这个选项后,make install后会在busybox目录下生成一个叫_install的目录,里面有busybox和指向它的链接。