在 x86 上为 arm 构建容器
挑战
为了加快开发速度,我们希望在 x86 硬件上为 AXCF2152 或 AXCF1152 创建基于 ARM 的容器。为此,我们使用了基于 Debian 或 Ubuntu 的虚拟机,在我们的普通 PC 上运行。
我们需要一个模拟器
要在 x86 系统上运行 ARM 二进制代码,我们需要一个允许我们执行此操作的模拟器。
Qemu 是少数可以模拟 ARM 二进制代码并将其编译为 x86 的虚拟机管理程序之一。我们需要做的就是在我们的主机系统上安装 Qemu 并激活模拟器。为 Ubuntu 或 Debian 安装 Qemu:
apt-get update && apt-get install -y --no-install-recommends qemu-user-static binfmt-support
update-binfmts --enable qemu-arm
update-binfmts --display qemu-arm
使用示例
现在要使用 Qemu,我们需要在容器中添加一个扩展,即二进制 /usr/bin/qemu-arm-static
.在容器中有几种使用方式。
如果扩展只是暂时需要并且如果它存在于本地,则可以简单地将其传递给容器。为此,需要将必要的二进制文件安装在容器中。
docker run -it --restart always \
-v /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static \
arm32v7/debian /bin/sh
这将启动容器并跳转到容器中的外壳。现在可以进行所有必要的更改。之后可以通过提交将更改转移到图像。
docker commit ...
对于容器构建,二进制文件必须存在于容器中,有两种方法可以做到这一点。
1. 二进制文件已经可用,Dockerhub 上有为此目的的预制镜像。 https://hub.docker.com/u/multiarch/
2.将二进制文件添加到容器镜像中。示例dockerfile:
From debian:armhf
COPY qemu-arm-static /usr/bin/qemu-arm-static
RUN .....
COPY
行 必须直接作为第二个命令出现在 FROM
之后 .整个过程适用于所有构建工具。
一个容器供所有人使用
如果您在 AXCF3152 上安装 Qemu 扩展,您可以为两个系统(x86 和 ARM)使用相同的容器。关于性能,这应该进行广泛的测试。
工业技术