工控網首頁
>

應用設計

>

使用容器編譯Yocto鏡像

使用容器編譯Yocto鏡像

Toradex 發布的 Linux BSP 和 SDK 都是采用 Yocto Project 編譯而來。文章將介紹如何使用 Docker 容器完成編譯任務。采用 Docker 容器可以免于配置 Yocto Project 的依賴環境,同時能夠在不同的編譯主機上方便地復用所下載的文件。

 

首先參考這里安裝 docker。

 

我們使用編譯 TorizonCore 系統的容器 torizon/crops 作為基礎,對其修改從而編譯 Linux BSP。修改好的容器源碼可以從這里下載。

 

Dockerfile 描述里容器是如何被構建。該容器里面我們使用國內的 repo 源,便于在大部分網絡環境里初始化編譯所需的文件。

 

startup-tdx.sh 則是執行編譯過程的腳本。腳本默認采用 dunfell-5.x.y 分支,用于編譯 Linux BSP V5。其中也支持配置HTTP/HTTPS 代理。

 

 Dockerfile  startup-tdx.sh 放在同一個目錄下,執行下面命令生成容器鏡像。

-----------------------------------------

$ docker build -t crops:1 .

-----------------------------------------

 

除了從源碼編譯,也可以從Docker Hub 上下載,或者在 FTP 上面下載容器文件 crops.tar.gz 后在編譯電腦上導入。

-----------------------------------------

$ docker pull benjaminhu/crops:1

$ docker load < crops.tar.gz

-----------------------------------------

 

 

準備好容器后,先建立一個目錄例如 /root/bsp5 ,這里將會保存所有編譯相關的文件,以及生成的 BSP  SDK 等。運行期間  /root/bsp5 會被映射到容器內部的 /workdir 路徑。下面命令運行完成后,即可生成 apalis imx8 模塊上使用的  tdx-reference-minimal-image 以及 SDK,這些文件位于/root/bsp5/yocto/build/deploy 目錄下。

-----------------------------------------

$ mkdir -p /root/bsp5

$ docker run --rm -it --name=crops -v /root/bsp5:/workdir --workdir=/workdir -e MACHINE=apalis-imx8 -e DISTRO=tdx-xwayland -e IMAGE=tdx-reference-minimal-image -e SDK=y benjaminhu/crops:1 startup-tdx.sh

-----------------------------------------

 

首次運行時可能會出現 NXP EULA,按PageDown  EULA 底部,然后按 退出即可。

 

參數說明。

 

說明

可用值

MACHINE

用于指定所編譯 BSP 適用的模塊 必填

apalis-imx6, apalis-imx8, apalis-tk1, colibri-imx6, colibri-imx6ull, colibri-imx6ull-emmc, colibri-imx7, colibri-imx7-emmc, colibri-imx8x, verdin-imx8mm, verdin-imx8mp

DISTRO

發行版本類型

tdx-xwayland, tdx-xwayland-rt, tdx-xwayland-upstream, tdx-xwayland-upstream-rt

IMAGE

Toradex 提高兩種參考 image。 minimal-image 沒有圖形框架,在模塊上可啟動的最小系統。 multimedia-image 包含 Qt,Gstreamer, Wayland 軟件

tdx-reference-minimal-image, tdx-reference-multimedia-image

SDK

用于生成 SDK

SDK=y

 

上面的命令是直接生成 BSP  SDK。如果需要定制化 BSP 或者只是單獨編譯某個軟件,可以采用下面命令進入容器,在修改 local.conf 等文件后,收到執行 bitbake 命令即可。修改文件可以在 /root/bsp5  目錄下進行,無需進入容器。

-----------------------------------------

$ docker run --rm -it --name=crops -v /root/bsp5:/workdir --workdir=/workdir -e MACHINE=apalis-imx8 benjaminhu/crops:1 startup-tdx.sh

# pokyuser@826dbfcc8bf6:/workdir/yocto/build$

-----------------------------------------

 

 

完成編譯任務后,輸入 exit 即可退出容器。

 

yocto-bsp5.tar.xz 包含了編譯 Linux BSP V5 所需的大部分文件,將其解壓到你自己的編譯目錄,例如本文的 /root/bsp5 中。在使用上面的容器編譯時就無需重復下載,縮短編譯時間。

由于文件較大,壓縮為多個 1GB 的文件,下載yocto-bsp5.tar.xz.* 后使用下面命令合并再解壓。

-----------------------------------------

$ cat yocto-bsp5.tar.xz.* > yocto-bsp5.tar.xz

$ tar vxf yocto-bsp5.tar.xz -C /root/bsp5

-----------------------------------------

審核編輯(
王靜
)
投訴建議

提交

查看更多評論
其他資訊

查看更多

基于NXP iMX8測試Secure Boot功能部署

UBI只讀文件系統

通過Ycoto Project定制嵌入式Ycoto Linux鏡像

在嵌入式 Linux 設備上使用 Flutter 開發圖形界面

TorizonQt容器中文顯示