❶ 安卓 busybox 的作用是什麼
busybox
pro是一個集成了一百多個最常用linux命令和工具的軟體,集成了一個http伺服器和一個telnet伺服器,android系
統中自帶的toolbox工具(/system/bin)比較簡單,對於一些命令如find等支持的不好,可以Android系統中加入busybox,
就可以使用常見的Linux命令,同時通過busybox可以定製Android的根文件系統。
❷ 如何在Android模擬器下添加busybox
為Android加入busybox工具我們可以通過兩種方式進入Android的console: 1. 直接執行命令emulator -shell; 2. 在啟動emulator後,通過命令adb shell進入。 之後我們就可以使用一些linux下常用的命令了,如ls,cat等。
❸ 如何獲取busybox軟體
Android是基於Linux系統的,在學習和使用Android系統時,不可避免的要和Terminal打交道。但是Android自帶的Terminal emulator實在是簡陋,連一些基本的命令都不具備。有沒有什麼解決方法呢?有的,這便是被稱為「嵌入式Linux中的瑞士軍刀」的Busybox。
一、BusyBox
BusyBox 是標准 Linux 工具的一個單個可執行實現。BusyBox 包含了一些簡單的工具,例如 cat 和 echo,還包含了一些更大、更復雜的工具,例如 grep、find、mount 以及 telnet。有些人將 BusyBox 稱為 Linux 工具里的瑞士軍刀。簡單的說BusyBox就好像是個大工具箱,它集成壓縮了 Linux 的許多工具和命令。
二、安裝
取得設備的Root許可權(網上查找)。
下載Busybox(下載 )編譯安裝,也可以直接下載binary文件(下載 )。
將Busybox binary文件拷貝到Android系統的/system/xbin目錄下。
三、使用
1. 在安裝完後便可以使用了。使用方法:busybox command,例如,busybox ls
看顏色是不是變了。
2. 因為系統裡面也有ls命令,如果直接調用ls將會調用系統的ls,這樣要想使用busybox的命令就必須加上busybox字元。這樣很不方便,有沒有辦法可以省去這樣麻煩呢?
方法一: 使用命令 alies,例如:
# alias ls=』busybox ls』
這個方法的缺點是重啟終端,又會恢復原樣。
方法二: 刪除或者重命名 /system/bin/toolbox
參考文獻:
為Android安裝BusyBox —— 完整的bash shell[OL].http://www.cnblogs.com/xiaowenji/archive/2011/03/12/1982309.html
Android自帶的toolbox分析及擴展[OL].http://blog.csdn.net/a345017062/article/details/6250619
❹ 我的安卓app安裝完有一個leak圖標 什麼鬼
為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 下載地址:/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 希望可以幫到你!
❺ 安卓系統(android)怎樣才能成功編譯安裝『make』命令
tar.gz(bz或bz2等) 一、安裝1、打開一個SHELL,即終端2、用cd 命令進入源代碼壓縮包所在的目錄3、根據壓縮包類型解壓縮文件(*代表壓縮包名稱) tar -zxvf ****.tar.gztar -jxvf ****.tar.bz(或bz2)4、用CD命令進入解壓縮後的目錄5、輸入編譯文件命令:./configure(有的壓縮包已經 編譯過,這一步可以省去) 6、然後是命令:make 7、再是安裝文件命令:make install8、安裝完畢如果安裝了busybox命令就要這樣用: busybox+空格+命令
❻ 安卓系統apk圖標在修改後無法正常安裝了
為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
下載地址:
其中第一項選擇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
希望可以幫到你!
❼ 安卓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和指向它的鏈接.
❽ 如何在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.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
希望可以幫到你!
❿ 如何使用busybox編譯和生成最簡lin
在ubuntu系統下創建一個rootfs目錄,用於存放busybox生成的根文件系統,也可設置為nfs的掛載目錄,直接通過網路文件系統進行掛載,便於開發。我自己就將該目錄創建在/opt/FriendlyARM/mini2440/rootfs處。並在該目錄下創建一些必備的子目錄:
leon@Ubuntu:/opt/FriendlyARM/mini2440/rootfs$ mkdir bin dev etc proc sbin sys tmp usr leon@Ubuntu:/opt/FriendlyARM/mini2440/rootfs$ ls bin dev etc proc sbin sys tmp usr
1、修改Makefile配置
進入busybox目錄,修改Makefile文件,在文件頭處加入內容如下:
ARCH ?= arm CROSS_COMPILE ?= arm-linux-
2、修改配置文件
make menuconfig
選擇Busybox Settings—>
1、Build Options—>,選擇[*] Build Busybox as a static binary(no shared libs); 2、Installtion Options,在busybox instantlltionprefix一欄中,輸入你想要創建rootfs的目錄。比如我的是/opt/FriendlyARM/mini2440/rootfs。
保存,退出。
3、編譯源碼
輸入make,進行編譯;這其中估計會遇到一些錯誤,可參見我的另外一篇博客(linux(ubuntu)編譯busybox遇到的問題處理辦法)。編譯成功後,會給出以下提示:
LINK busybox_unstripped Static linking against glibc, can't use --gc-sections Trying libraries: crypt m Library crypt is not needed, excluding it Library m is needed, can't exclude it (yet) Final link with: m DOC busybox.pod DOC BusyBox.txt DOC busybox.1 DOC BusyBox.html
編譯通過之後,輸入make install命令進行安裝,busybox會自動將rootfs根文件系統安裝到之前設置的目錄下。