加入Busybox
From Jollen's Wiki
目錄 |
預備動作
在開始之前:
- 本教學中使用 GCC 3.4.1 ARM9 toolchain,請參考 安裝 Toolchain 小節,先做好編譯環境的設定。
- 下載 busybox
- Kernel 相關套件:
apt-get install kernel-header-`uname -r` apt-get install kernel-sources-`uname -r` apt-get install libncurses5-dev cd /usr/src tar -jxvf linux-source*
uname -r 會輪出目前的 kernel 版本,若是 apt-get 找不到對應的 kernel source, 請先 apt-cache search linux-source,再找跟 uname -r 輪出的版本最相近的來安裝。
- 本教學文件使用 Busybox 1.3.1
- Ubuntu 使用 Busybox 1.5.1
Ubuntu 因為預設的 shell 是 bash, 因此必須下載 Busybox 1.5.1 以上版本
設定 Cross Tool
編譯並安裝 Busybox(動態程式庫方式)。將取得的Busybox原始碼解壓縮至 project 目錄裡的 src/ 子目錄下.
Busybox 1.3.0 開始,使用 Linux Kernel 的 Makefile(因為開始支援 CONFIG_DESKTOP)。Cross compile 時,需要修改 Makefile 如下:
ARCH ?= arm CROSS_COMPILE ?= /opt/crosstool/gcc-3.4.1-glibc-2.3.3/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-
CROSS_COMPILE 的設定是 cross toolchain 的「PREFIX」,需視您使用的不同版本 toolchain 做對應的修改。
Busybox 整合了常用的指令與工具,我們可以設定 Busybox,以勾選我們需要的功能選項。進入 Busybox 的設定選單:
# make menuconfig
請注意,init 與 shell 是必選的項目,請檢查是否有勾選這二個功能。同時,也別忘了設定 Busybox 的安裝路徑,將安裝路徑指到我們 root filesystem 目錄下。
接著直接進行編譯(cross compile):
# make
編譯完成後,將 Busybox 安裝至我們的 root filesystem 目錄(即 Step 2 的 install/ 目錄):
# make install
此時,您應該可以在 root filesystem 目錄下看到 Busybox 所安裝的檔案。
make clean
若先前編譯過不同平臺的 object file, 最好先 'make clean' 再重新編譯, 以避免執行檔格式錯誤.
Busybox 1.10
使用 gcc 3.4.x 編譯 busybox 時, 必須關閉以下選項:
- Miscellaneous Utilities | taskset
- Networking Utilities | udhcp Server (udhcpd)
- Networking Utilities | udhcp Client (udhcpc)
Resources
下一步:加入動態程式庫


