Busybox在Qemu中的仿真

對BUSYBOX還不夠了解,目前爲止,我認爲BUSYBOX就是一個編譯好的小工具集合。可以簡單的通過mount的方法將這些小工具
加載到嵌入式linux中。這種方法就省去了逐個安裝的工作量。

這次嘗試在Qemu中加載BUSYBOX的過程。參考的blog來自於http://balau82.wordpress.com/2010/03/27/busybox-for-arm-on-qemu/

1. 下載busybox
wget http://www.busybox.net/downloads/busybox-1.16.1.tar.bz2

2. 解壓縮
tar -xjvf busybox-1.16.1.tar.bz2

3. 設置busybox
cd busybox-1.16.1/
make ARCH=arm CROSS_COMPILE=arm-linux-uclibcgnueabi- defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-uclibcgnueabi- menuconfig
根據blog上的說法,這裏在“Busybox Settings --> Build Options“裏面選擇了靜態編譯(不使用動態鏈接庫)。個人猜測只是爲了方便。

4. 生成install文件夾
make ARCH=arm CROSS_COMPILE=arm-linux-uclibcgnueabi- install

5. 編譯過程的options選擇
錯誤1: 交叉編譯工具需要支持大文件系統,以及寬字符。所以重新編譯了buildroot。
錯誤2: 文件lineedit.c中找不到mstate_t,解決方法是加入頭文件#include "wchar.h"
錯誤3: mtd/mtd-user.h找不到,解決方法  cp /usr/include/mtd/ ./include/ -a
(參考http://www.qiangsoft.com/blog/?cat=11)
錯誤4: error: #error "You need to build uClibc with UCLIBC_HAS_RPC for NFS support"。重新編譯吧。
太好了,終於編譯完成。

6. 生成啓動鏡像
cd _install
find . | cpio -o --format=newc > ../rootfs.img
cd ..
gzip -c rootfs.img > rootfs.img.gz

7. 用Qemu進行測試
qemu ./busybox ls -l
編譯正確的話可以列出文件中所有的目錄

8. 還有一種方法是用Qemu啓動busybox的編譯結果,這個我測試後發覺rootfs.img需要用NFS server的方法導入,過於複雜,沒有繼續了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章