1. 程式人生 > >Buildroot製作根檔案系統過程(基於MYD-AM335X開發板)

Buildroot製作根檔案系統過程(基於MYD-AM335X開發板)

buildroot的功能很強大,可以利用它製作交叉編譯工具鏈、根檔案系統,甚至可以構建多種嵌入式平臺的bootloader、linux。下面以米爾科技的MYD-AM335X平臺為例展示如何利用buildroot製作自己所需的根檔案系統。

一、到官網下載原始碼:http://buildroot.uclibc.org/downloads/ 我這裡選用的是buildroot-2014.05.tar.bz2。

二、解壓:
$ tar xjf buildroot-2014.05.tar.bz2
$ cd buildroot-2014.05/


三、配置:
$ make menuconfig

1、進入Target options  --->選項,設定目標架構。AM335x的CPU基於ARM的cortex-A8,為了使檔案系統充分利用其硬體浮點特性,Target ABI選項中選上EABIhf,當然這還要取決於所使用的交叉編譯工具是否支援該EABIhf,比較舊的交叉編譯工具可能不支援。


Target options  --->
        Target Architecture (ARM (little endian))  --->          Target Architecture Variant (cortex-A8)  ---> 
        Target ABI (EABIhf)  --->  
        Floating point strategy (VFPv3-D16)  --->  
        ARM instruction set (ARM)  ---> 

2、設定編譯檔案系統所用的交叉編譯工具。可以採用已存在的或著buildroot在編譯過程中自己製作的交叉編譯工具,為了縮短編譯時間,這裡採用已存在的交叉編譯工具。

進入Toolchain選項:
Toolchain  --->
        Toolchain type (External toolchain)  --->     (設定採用自己定義的交叉編譯工具)
        Toolchain (Custom toolchain)  --->
        Toolchain origin (Pre-installed toolchain)  --->
        (/opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux) Toolchain path         (設定自定義交叉編譯工具的路徑)

        (arm-linux-gnueabihf) Toolchain prefix        (設定toolchain的字首)
        External toolchain kernel headers series (3.2.x)  --->    (最好選用與平臺所用的linux版本一致的headers,具體還要看交叉編譯工具是否支援)
        External toolchain C library (glibc/eglibc)  --->       (選擇自定義交叉編譯工具所用的C庫)
Toolchain has C++ support? 


3、系統配置,特別要注意的是要根據特定平臺選用正確的TTY port。
System configuration  --->       
         Run a getty (login prompt) after boot        
                getty options  --->
                            (ttyO0) TTY port                  (設定成debug串列埠的裝置節點)
                                          Baudrate (115200)  --->
                            (vt100) TERM environment variable
4、Target packages  ---> :     按自己需求增加或裁剪Target packages,裡面包含了很多常用的庫和工具,包括常用的busybox的選用、音訊、網路等。由於選項很多,這裡不一一列出,可以參考附件中.config檔案的配置,總之一切都是按自己需求來配置。


5、設定目標檔案系統的型別、壓縮包格式等。
Filesystem images  --->
         tar the root filesystem
                      Compression method (bzip2)  --->

說明:這裡沒設定目標檔案系統型別(比如板子上用的是ubi檔案系統)是因為我只想要生成的壓縮包,後續再用ubi工具製作成ubi檔案系統映象,當然也是完全可以在[ ] ubifs root filesystem選項中配置的,效果是一樣的。


6、配置busybox。
前提是Target packages  --->選項中已經選用了busybox,預設是選上的。若裡面沒有自己想要的版本,也可自己去下載原始碼編譯。
配置busybox的命令是:
$ make busybox-menuconfig
這個也是按自己需求增加與裁剪。

7、關於Kernel  --->和Bootloaders  --->選項,如果不用buildroot構建bootloader和linux核心可不必設定。

8、儲存配置退出後,執行make編譯。編譯過程中要聯網,因為可能需要下載一些packages。


9、編譯完成後會在output/images/目錄中生成目標檔案系統壓縮包rootfs.tar.bz2,後續可根據所需的檔案系統型別用相關的工具進一步製作成可燒錄到開發板的映象,這一部分可參考MYD-AM335X使用者手冊。如果在Filesystem images 選項中配置好目標檔案系統型別則直接生產可燒錄的映象。

網址:http://www.myir-tech.com/bbs/thread-7134-1-1.html