本文檔介紹的是使用buildroot搭建最簡單的linux文件系統,Buildroot是Linux平台上一個構建嵌入式Linux系統的框架。整個Buildroot是由Makefile腳本和Kconfig配置文件構成的。你可以和編譯Linux內核一樣,通過buildroot配置,menuconfig修改,編譯出一個完整的可以直接燒寫到機器上運行的Linux系統軟件(包含boot、kernel、rootfs以及rootfs中的各種庫和應用程序)。
下面我們結合iTop4412開發板來講解一下如何使用 buildroot制作最小文件系統。
1 源碼
我們從buildroot 官網 http://buildroot.uclibc.org/download.html獲取 buildroot 源碼包,筆者這里下的最新的是buildroot-2018.02.4.tar.gz!

首先拷貝“buildroot-2018.02.4.tar.gz”到我們的Ubuntu虛擬機上,然后在Ubuntu命令行,使用命令“#tar -xcf buildroot-2018.02.4.tar.gz ”,解壓完成后如下圖。

2 配置
如下圖使用命令“cd buildroot-2018.02.4”進入解壓出來的源碼目錄下。

執行“make menuconfig”命令,進入配置界面,如下圖所示。

進入“Target options”目錄,將 Target Architecture 配置為 ARM(littlt endian),將 Target Architecture Variant 配置為cortex-A9,將Target ABI 配置為 EABI,將ARM instruction set 配置為 ARM,(如果在其他開發板上測試,修改Target Architecture Variant即可,4418,imx6q為cortex-A9,6818為cortex-A53,imx6ul為cortex-A7)如下圖所示。

再退回上一界面后,進入Toolchain 目錄:將 Toolchain type 配置為 External toolchain,然后在 Toolchain 中選擇交叉編譯工具的版本,這里我選 ARM 2014.05,在 Toolchain origin 中選擇 Toolchain to be downloaded and installed,后面編譯時, buildroot 將會自動下載對應的工具鏈並自動安裝。選中 Enable MMU support。如下圖所示。

退回上一界面后,進入System configuration 界面,在 System hostname 一欄中輸入開發板的名稱,如 iTop-4412,在 Init system 中選擇 BusyBox,在/devmanagement中選擇Dynamic using mdev,即使用mdev動態加載設備節點的方式,然后在Path to the permission tables中選擇設備節點的配置表,這里我們一定要選擇system/device_table_dev.txt,否則后面在dev目錄下將不會生成各種設備節點。當然我們也可以手動的配置該文件,添加必要的節點或刪除不需要的節點。Root password為配置進入linux 控制台終端后的密碼,為空則登錄時不需要密碼,默認登錄用戶名為root。如下圖所示。

選中Run a getty(login prompt)after boot,再進入該選項:將TTY port配置為ttySAC2,將 baudrate 配置為115200,對應 iTop4412 開發板的控制台打印串口(其他開發板控制台串口分別是4418-ttyAMA0、6818-ttySAC0、iMX6Q&iMX6UL-ttymxc0)。如下圖所示。

返回上一層,再繼續返回上一界面,進入Filesystem images 目錄,選中tar the rootfilesystem,如下圖所示。

最后保存當前的配置並退出,配置完成。如下圖所示。用戶也可以根據自己的實際需要進行配置。

3編譯
編譯buildroot,在buildroot根目錄下直接執行make就可以完成了。

編譯過程中會有如下報錯。

我們使用命令“export FORCE_UNSAFE_CONFIGURE=1 && make”繼續執行即可,等待編譯完成,第一次編譯的過程中需要自動下載一些工具,所以要保持Ubuntu系統聯網。如下圖。

4生成鏡像
編譯完成后,我們使用命令“cd output”,進入output文件,targer就是我們編譯生成的文件系統,當然buildroot會將其打包成相關鏡像,但是格式種類有限(“menuconfig”中的“Filesystem images”目錄下配置),鏡像就放在image目錄下,我們還是回到“output”目錄下,使用命令“make_ext4fs -s -l 314572800 -a root -L Linux target.img target/”生成文件系統鏡像,如下圖所示。

如果使用的其他開發板,參照開發板手冊“制作最小文件系統鏡像”相關章節,對“terger”目錄下文件進行打包即可。
我們通過fastboot工具將鏡像燒寫進iTop4412開發板,只替換qt系統鏡像中的system.img文件即可,如下圖所示。

等待開發板啟動,輸入“root”即可進入。如下圖所示。
