2017年6月24日 星期六

RaspberryPi - Buildroot建立

以前買了Raspberry pi以後除了安裝openmediavault充當NAS以後就沒啥作用。

趁著今年目標希望自己可以在Raspberry pi建構專屬的作業系統環境(包含學習一下linux kernel),因此要些來學習如何透過Buildroot來編譯自己的系統並客製化了。

Raspberry pi Logo

Buildroot Logo - Making Embedded Linux Easy



Buildroot是目前蠻熱門的嵌入式系統編譯平台,主要是把所有嵌入式系統該需要的套件工具都整合在一起,開發者只需要根據這套環境就可以簡單去進行開發系統與編譯相應套件。

因為是Open source項目,同樣有很多人幫忙去整合這個平台,Raspberry pi也有在Buildroot的支持項目內,所以我們只需建立Buildroot平台去編譯Raspberry pi用的系統即可。

我們可以透過Buildroot官網(https://buildroot.uclibc.org/)去下載source code,同樣也可以透過git直接下載。


git clone git://git.buildroot.net/buildroot

另外Buildroot平台建立也需要事前安裝相關的套件與工具才能編譯,這部分可以參考手冊(https://buildroot.org/downloads/manual/manual.html)的2.1. Mandatory packages中了解。

下載Buildroot以後並安裝相應套件以後,只需要在編譯時使用raspberry pi的設定就可以開始進行系統編譯,以在HOST為ubuntu的環境下用buildroot編譯pi2為例如下:

cd buildroot/
make raspberrypi2_defconfig
make clean; make 

然後就可以做別的事情了。

完成以後,就可以看到output資料夾,裡面是raspberry pi2專用的編譯工具與系統,同時在output/images內的sdcard.img就是燒至raspberry pi2的image。



後續的就可以按照raspberry pi燒錄流程進行系統安裝了。

如果是非pi2 model的,也可以參考buildroot/configs資料夾下是否有支援相應開發版的設定,


目前來說raspberry pi所有型號都有支援(pi0即pi zero)就是。

至於系統成功建置完成後,接下來就是學習如何透過Buildroot去編譯raspberry pi可使用的套件與應用程式了。


P.S
由於是使用預設config去編譯系統,通常燒進去開機後是沒有方式連進raspberry pi的,個人是建議購買TTL to USB的工具透過Serial方式進行操作。

或著就是執行make以前先透過make menuconfig -> Target packages內選擇ssh套件,這樣系統建置出來時就會同時包含ssh套件了,要支援wifi功能也是如此設定。

不過如果是特殊一點的驅動就需要自己porting了,這也是學習如何透過Buildroot去編譯相應的kernel driver好機會。

沒有留言:

張貼留言