#眾所周知,在Linux環境下,一切皆文件,文件可以表示一切。而檔案系統則是這些普通元件的集合。在嵌入式領域中,常常使用基於busybox建構的rootfs來建構檔案系統。
busybox誕生至今已有近20年的歷史,如今已成為嵌入式產業中主流的rootfs建構工具。
busybox的程式碼是完全開源的。你可以進入官方網站,點擊”Get BusyBox”下面的”Download Source”進入原始碼下載介面。
「
#官方網站連結:
https://busybox.net/」
#下載原始碼之後將原始碼拷貝到編譯環境中,在編譯前需要對busybox進行配置,主要涉及三方面的內容:
\1. 編譯工具鏈設定
\2. 編譯模式設定
\3. 檔案系統支援的功能
前兩項為必須完成的,而第三點則根據使用者自己的需求自行製定。
執行make menuconfig進入設定介面。
編譯工具鏈設定
設定的交叉編譯工具鏈要同kernel編譯時使用的工具鏈一樣,例如將交叉編譯工具鏈設定為arm-linux-gnueabi-,則進入到build options中進行設定。
當然,也可以進入根目錄下的Makefile檔案中修改對應的交叉編譯工具鏈以及平台資訊等。
編譯模式設定
#設定編譯出的鏡像檔是靜態還是動態的,若是動態編譯,需要手動將交叉編譯工具鏈下的lib庫拷貝到最終的_install資料夾下面,反之則不需要。靜態編譯的配置如下,可以看到括號內的提示是不包含共用函式庫。該項不使能則編譯方式為動態的。
**設定rootfs支援的功能
**
busybox可以支援上百種命令列及其他功能,根據自己的需求可進行增減,例如增加devmem命令行,則勾選上對應的啟用方塊。
編譯
執行make、make install後,在編譯路徑下會產生_install資料夾,裡麵包含bin、sbin、usr等檔案。查看剛加入的devmem指令,發現已經編譯出來了。
此時將busybox下編譯出來的_install拷貝出來,作為rootfs的基本框架,然後再增添其他必須的元件即可。
#將_install下的所有檔案拷貝出並建立lib、etc資料夾,然後將交叉編譯工具鏈arm-linux-gnueabi下的lib庫拷貝到建立的lib資料夾下。
然後再依序建立home、opt、run、sys、var、boot、dev 、media、proc、tmp、usr
設定etc目錄
在建立rcS檔案前需要在etc目錄下手動建立init.d資料夾,並在init.d資料夾下建立rcS。
至此,執行下面的指令,就可以打包產生一個最輕量級的rootfs了。
tar -jcvf rootfs.tar.bz2 *
使用mfgtools將壓縮好的rootfs.tar.bz2下載到mmc中,再次啟動系統,可以看到製作的根檔案系統已經可以正常運作,我們先前新增的devmem指令也可以正常執行。
以上是手把手教你建造linux rootfs的詳細內容。更多資訊請關注PHP中文網其他相關文章!