加入Busybox

From Jollen's Wiki

Jump to: navigation, search

目錄

預備動作

在開始之前:

  1. 本教學中使用 GCC 3.4.1 ARM9 toolchain,請參考 安裝 Toolchain 小節,先做好編譯環境的設定。
  2. 下載 busybox
  3. 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 時, 必須關閉以下選項:

  1. Miscellaneous Utilities | taskset
  2. Networking Utilities | udhcp Server (udhcpd)
  3. Networking Utilities | udhcp Client (udhcpc)

Resources



下一步:加入動態程式庫

Views
個人工具
導航
工具