Configure
buildboot的資料夾『buildroot/board/』裡面有許多內建的組態,如下:
可以看到我們需要的組態是『raspberrypi3』,根據官方的release note上,這個config是2016年5月所release的:
如果想要知道目前這個版本到底支援多少的default config的話,可以用以下指令來觀察:
make list-defconfigs | less
在文件『buildroot/board/raspberrypi3/readme.txt』上面有明確的定義要怎麼去使用這個組態。
vim board/raspberrypi3/readme.txt
官方線上文件:
https://git.busybox.net/buildroot/tree/board/raspberrypi/readme.txt
這些預設的組態都是最小限度的安裝,假設現在我們要使用『raspberryPi3』的default config的話,就必須使用底下語法:
make raspberrypi3_defconfig
然後系統就會將預設的『.config』檔給覆蓋過去,所以如果你想要自行修改組態的話,可以使用:
make menuconfig
make nconfig
make xconfig
make gconfig
下圖是menuconfig的介面示意圖:
當然上列的每個config功能都需要安裝相對應的套件才能運作:
config | 相對應套件 |
---|---|
menuconfig | ncurses |
nconfig | ncurses |
xconfig | QT |
gconfig | Gtk |
Create your own config
上面我們講解過要如何使用buildroot所提供的預設組態,那假設我想要建制自己客製化的組態,那要怎麼弄?
首先,假設現在你的『.config』檔案已經是你修改過後的結果了,接下來修改『.config』,將選項『BR2_DEFCONFIG』修改一下,最後面那個檔名改成你要的,假設將:
BR2_DEFCONFIG="/workspace/buildroot/configs/raspberrypi3_defconfig"
改成
BR2_DEFCONFIG="/workspace/buildroot/configs/test_defconfig"
然後下指令:make savedefconfig
你就會發現你的設定被存在configs裡面了:
接下來要用它的話,只要直接用:make test_defconfig
就好了,這樣看起來好像只是直接將『.config』複製到『buildroot/configs/』裡面,但是其時他還是有它的相依性,所以最好還是用『savedefconfig』比較好。
Configuration hierarchy
在buildroot裡面的組態是用kconfig的格式,所以所有選項都會有像樹枝狀的結構:
(來源 : free-electrons )
就像上圖一樣,舉個『Target options』來說,這個選項主要的組態是『buildroot/arch/Config.in』,是用kconfig語言寫的,用來描述target board上面的ABI,所以底下又會有許多的子結構,像是『Config.in.arm』和『Config.in.MIPS』等等。