MYS-6ULX-IOT 開發板測評——使用 Yocto 新增軟體包
我們除了對 Yocto Project 中現有的軟體系統進行修改定製外,還可以將更多的軟體包新增到我們的 Yocto Project 環境中,這樣可以直接將這些軟體包打包進目標平臺的系統映象中,而不需要後續安裝。
示例:新增 curl
下面我以新增 curl 為例進行操作:
(1)首先,我們先看看 MYiR 有沒有提供 curl 軟體包。檢視 downloads 目錄,發現其中已經包含 curl-7.47.1.tar.bz2。
(2)但是 core-image-base 的配方中並沒有包含 curl,所以我們要新增進去。開啟 sources/meta-myir-imx6ulx/recipes-core/images/core-image-base.bbappendIMAGE_INSTALL += "curl"
。
(3)重新構建系統映象,執行 bitbake core-image-base
。
(4)更新系統,檢查是否包含 curl。
# curl --version
curl 7.47.1 (arm-poky-linux-gnueabi) libcurl/7.47.1 GnuTLS/3.4.9 zlib/1.2.8
Protocols: file ftp ftps http https
Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets
查詢更多軟體包
那麼,問題來了!如果我們不是使用 MYS-6ULX-IOT 開發板,我們怎麼知道 Yocto Project 包含哪些第三方軟體包呢?修改配方檔案時又應該使用什麼名字呢?
其實,我們可以通過 http://packages.yoctoproject.org 來查詢相應的軟體包,比如我們在搜尋欄輸入“curl”。
如果覺得上述列表中的軟體包還不夠豐富,我們也可以採用由 Open Embedded 專案所提供的額外的軟體包。為了使用這個系列的軟體包,首先需要我們下載它對應的 Yocto Layer 到當前目錄。
$ cd sources
$ git clone https://github.com/openembedded/meta-openembedded.git
$ cd meta-openembedded
$ git checkout daisy
上述操作會在 sources 目錄創建出 meta-openembedded 目錄,其中包含了對額外軟體包的描述。不過此時 Yocto Project 系統並不能自動識別出這些軟體包的存在,為此,我們需要修改 build-myir/conf/bblayers.conf 配置檔案,通知 Yocto Project 有新的軟體包集合加入。
將 OpenEmbedded 提供的軟體包加入到當前 Yocto Project 環境中:
BBLAYERS += "${BSPDIR}/sources/meta-openembedded/meta-oe"
其實 MYiR 已經幫我們新增好了 Open Embedded 專案,所以如果使用 MYS-6ULX-IOT 平臺的話,我們並不需要再配置。
在 OpenEmbedded 中包含了大量的軟體包,比如 OpenCV 庫。如果我們希望編譯產生的 MYS-6ULX-IOT 系統中就已經集成了 OpenCV,只需要按照前面加入 curl 軟體包的做法那樣,修改 core-image-base.bbappend 檔案,對應地增加 OpenCV 即可。
視覺化配置工具
上述直接修改配置檔案的方式對於初學者來說可能難以接受,因此 Yocto Project 為我們提供了圖形化配置工具。
原來的圖形化配置工具是 Hob,但是現在 hob 已經不再支援了。取而代之的是 Toaster,toaster 是一個基於 web 架構的視覺化配置工具,如果你對如何使用 toaster 來配置、構建 Linux 系統映象,那麼你應該還好看看《Toaster User Manual》。