x86 上のアーム用のコンテナー ビルド
チャレンジ
より迅速な開発のために、x86 ハードウェアで AXCF2152 または AXCF1152 用の ARM ベースのコンテナーを作成したいと考えています。この目的のために、通常の PC で実行される Debian または Ubuntu ベースの仮想マシンが使用されます。
エミュレータが必要です
x86 システムで ARM バイナリ コードを実行するには、これを可能にするエミュレータが必要です。
Qemu は、ARM バイナリ コードをエミュレートして x86 用にコンパイルできる数少ないハイパーバイザーの 1 つです。あとは、ホスト システムに 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 ...
コンテナ ビルドの場合、コンテナ内にバイナリが存在する必要があります。これには 2 つの方法があります。
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
の後の 2 番目のコマンドとして直接指定する必要があります .全体がすべてのビルド ツールで動作します。
1 つのコンテナですべて
Qemu 拡張機能を AXCF3152 にインストールすると、両方のシステム (x86 と ARM) に同じコンテナーを使用できます。パフォーマンスに関しては、これを広範囲にテストする必要があります。
産業技術