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和指向它的鏈接。