第4階段——制作根文件系統之編譯配置安裝busybox(3)


在上一節分析出制作一個最小的根文件系統至少需要:

(1)/dev/console(終端控制台, 提供標准輸入、標准輸出以及標准錯誤)

/dev/null  (為空的話就是/dev/null, 所有寫到這個文件中的數據都會被丟棄掉。)

(2)init進程的程序(也就是busybox,因為init程序位於busybox中)

(3)/etc/inittab(用於init進程讀取配置, 然后執行inittab里的指定應用程序)

(4)應用程序(被inittab配置文件調用的應用程序)

(5)C庫(glibc,被應用程序調用的C庫函數,比如:printf,strcmp,fopen等)

本節目的:

編譯配置busybox (因為制作最小的根文件系統需要init進程,以及運行各種命令等)

1 編譯配置busybox

1.1 首先將busybox源碼(位於資料光盤/system)放在linux中/work/system下

cd /work/system            

tar -xjf busybox-1.7.0.tar.bz2

解壓后,cd busybox-1.7.0 進入busybox-1.7.0目錄

2 查看busybox-1.7.0/INSTALL文件,讓我們知道如何編譯配置它,如下圖:

 

得出:

make menuconfig             //通過配置菜單配置.config文件

make                        //編譯busybox可執行文件

make install                  //直接安裝,該命令會安裝到PC機中,將破壞系統

make CONFIG_PREFIX=/path/from/root  install  //安裝到指定目錄/path/from/root下

3 所以首先make menuconfig 配置.config,如下圖:

 

 

3.1 在Library Tuning(庫調整)子菜單中設置按tab鍵補齊,如下圖:

 

 

3.2 取消靜態連接,如下圖:

 

因為使用庫函數glibc時,如果靜態編譯busybox,會出現很多警告信息:

 

庫函數glibc需要放在/lib目錄下

3.3 選擇tar命令:

 

 

3.4選擇insmod/rmod/lsmod命令,支持2.6.x內核:

 

3.5 支持mdev(並支持medv.conf和熱拔插),選擇mount/umount命令(並支持NFS文件系統)

 

 

3.6 選擇ifconfig命令

 

4 通過make直接編譯

make編譯后發現有錯:

 

 

原因是 busybox-1.7.0頂層目錄下Makefile沒有使用交叉編譯”arm-linux-”

在Makefile中添加”arm-linux-”:

 

 

然后重新make編譯即可

5 安裝到指定目錄

mkdir -p /work/nfs_root/mini_fs     //先創建指定目錄

make CONFIG_PREFIX=/work/nfs_root/mini_fs  install    //安裝到指定目錄

cd /work/nfs_root/mini_fs 進入安裝的目錄:

從上圖看出共有3個目錄和1個linuxrc文件,其中

bin包含用戶工具,包括了大部分命令,該子目錄下所有文件指向busybox

sbin目錄包含操作系統工具,同樣也指向busybox。

linuxrc是一個鏈接文件,指向busybox。

 

busybox做好后,下一節就開始構建根文件系統


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM