1、部署容器编译环境制作脚本工程:
本文档使用/home/share/作为容器编译环境制作脚本工程(eciot-ova)的上一层目录,该目录在后续制作过程中作为Ubuntu系统与容器编译环境的共享目录。
a.将容器编译环境制作脚本工程文件reciot-ova.tar.gz复制到Ubuntu系统中
b.假定已复制到/home/share目录下
c.解压:root@huawei:/home# tar zxf eciot-ova.tar.gz -C /home/share/eciot-ova/
d.tree命令查看脚本工程文件结构 root@test:/home/share/eciot-ova# tree
2、制作编译环境基础镜像
a.在/home/share/eciot-ova/build/目录下执行如下命令:
sed -i s#http://ftp.cn.debian.org/#http://mirrors.tuna.tsinghua.edu.cn/#g ../system/sdk/Dockerfile_base
b.root@huawei:/home/share/eciot-ova/build# ./build_sdk_base.sh
c.运行完成后,会在当前环境中生成最终的编译环境,并且在/home/share/eciot-ova/release/sdk/目录下生成一个.tar的镜像文件以供其他环境导入使用。
3、编译第三方开源组件
a.假设当前路径为容器编译环境脚本制作工程路径,则开源软件源码对应路径如下:
b.通过docker run命令可以从基础镜像中运行基础编译环境,在基础编译环境中进行第三方开源组件的编译。
c.在任意目录中执行以下命令进入编译基础环境,以根目录下执行为例:
d.root@huawei:~# docker run -v /home/share:/data -it --rm --hostname base huawei-ec-iot/sdk:base /bin/bash
e.编译32位容器中的开源组件,使用如下命令:root@base:/data/eciot-ova/build# ./build_opensrc.sh armel
f.编译64位容器中的开源组件,使用如下命令:root@base:/data/eciot-ova/build# ./build_opensrc.sh arm64
g.root@base:/data/eciot-ova/custom_deb# tree
h.编译完成后使用以下命令退出基础编译环境,回到进入基础编译环境前的路径。
i.root@base:/# exit
4、制作最终编译镜像
a.我们需要将生成的开源软件deb包载入基础镜像,生成最终编译镜像以供后续编译时使用 b.root@huawei:/home/share/eciot-ova/build# ./build_sdk.sh
c.root@huawei:/home/share/eciot-ova/release/sdk# ls -al
d.root@huawei:/home/share/eciot-ova/release/sdk# docker images
5、加载最终编译镜像
如果需要在其他Ubuntu系统中加载最终编译镜像,可以将制作最终编译镜像中描述的huawei-ec-iot_sdk-buster.tar拷贝到目标Ubuntu系统中并加载。
a.将最终编译镜像huawei-ec-iot_sdk-buster.tar复制到Ubuntu系统中,假定已复制到/home/share目录下。
b.root@huawei:/home/share# ls -l huawei-ec-iot_sdk-buster.tar
c.加载最终编译镜像root@huawei:~# docker load -i /home/share/huawei-ec-iot_sdk-buster.tar
d.查看最终编译镜像root@huawei:~# docker images