热度 6
2022-9-1 17:41
1178 次阅读|
0 个评论
B y Toradex 胡珊逢 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/deplo y 目录下。 ----------------------------------------- $ 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 底部,然后按 q 退出即可。 参数说明。 说明 可用值 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.* 后使用下面命令合并再解压。 ----------------------------------------- yocto-bsp5.tar.xz $ tar vxf yocto-bsp5.tar.xz -C /root/bsp5 -----------------------------------------