Armadilloフォーラム

ATDE9(VirtualBox)でのc言語クロスコンパイル

k.sato

2025年1月24日 13時18分

佐藤と申します。
お世話になっております。

VirtualBox Oracle VM VirtualBox 7.0.22
ATDE9 atde9-amd64-20240925.ova
Alpine Linuxルートファイルシステムビルドツール build-rootfs-v3.18-at.10
上記の環境で作業しています。

●ライブラリが見つからないエラー
https://armadillo.atmark-techno.com/forum/armadillo/14009#comment-12363
上記を参考に下記を行ったのですが

$ tar xf build-rootfs-v3.16-at.7.tar.gz
$ cd build-rootfs-v3.16-at.7/submodules/containers
$ sudo ./build.sh
...
atmark@atde9:~/build-rootfs-v3.18-at.10/submodules/containers$ sudo ./build.sh 
[sudo] atmark のパスワード:
Sending build context to Docker daemon   5.12kB
Step 1/9 : ARG arch=amd64
Step 2/9 : ARG version=3.15
Step 3/9 : FROM docker.io/${arch}/alpine:${version}
 ---> 221b68f97ccb
Step 4/9 : RUN apk update && apk upgrade && apk add alpine-sdk && rm -f /var/cache/apk/*
 ---> Using cache
 ---> d22ba0dc55a3
Step 5/9 : RUN adduser -D builder && adduser builder abuild
 ---> Using cache
 ---> a30338176c0b
Step 6/9 : ARG at_version
 ---> Using cache
 ---> cb90464092a2
Step 7/9 : RUN sed -i -e "1i@atmark http://download.atmark-techno.com/alpine/v${at_version}/atmark" 	   -e "1ihttp://download.atmark-techno.com/alpine/v${at_version}/atmark" /etc/apk/repositories
 ---> Using cache
 ---> 7bbf3c813eca
Step 8/9 : COPY atmark-601a0e69.rsa.pub /etc/apk/keys/
 ---> Using cache
 ---> b635430d594b
Step 9/9 : COPY atmark-62b116af.rsa.pub /etc/apk/keys/
 ---> Using cache
 ---> 3e18364e0436
Successfully built 3e18364e0436
Successfully tagged alpine-3.18-x86_64:latest
Sending build context to Docker daemon   5.12kB
Step 1/9 : ARG arch=amd64
Step 2/9 : ARG version=3.15
Step 3/9 : FROM docker.io/${arch}/alpine:${version}
3.18: Pulling from arm32v7/alpine
no matching manifest for linux/amd64 in the manifest list entries
Sending build context to Docker daemon   5.12kB
Step 1/9 : ARG arch=amd64
Step 2/9 : ARG version=3.15
Step 3/9 : FROM docker.io/${arch}/alpine:${version}
3.18: Pulling from arm64v8/alpine
no matching manifest for linux/amd64 in the manifest list entries
atmark@atde9:~/build-rootfs-v3.18-at.10/submodules/containers$ sudo docker image ls
REPOSITORY           TAG       IMAGE ID       CREATED       SIZE
alpine-3.18-x86_64   latest    3e18364e0436   2 hours ago   263MB
amd64/alpine         3.18      221b68f97ccb   2 weeks ago   7.36MB

上記のように「alpine-3.18-armv7」のイメージが表示されません。

何がおかしいのでしょうか?

以上、よろしくお願い致します。

コメント

at_reika.yamazaki

2025年1月24日 17時46分

お世話になっております。山崎です。

arch の指定方法に変更があったため、こちらの対応が必要です。
お手数をおかけして申し訳ありませんが、現在の最新版である build-rootfs-v3.20-at.7.tar.gz をご使用いただくか、
もしくは build.sh をご使用のディレクトリに入れ替えて実行していただけますでしょうか?
入れ替えて実行する場合の手順は以下になります。

wget https://armadillo.atmark-techno.com/files/downloads/armadillo-640/tool/build-rootfs-v3.20-at.7.tar.gz
tar xf build-rootfs-v3.20-at.7.tar.gz
cp build-rootfs-v3.20-at.7/submodules/containers/build.sh <ご使用の build-rootfs ディレクトリのパス>/submodules/containers/build.sh
cd <ご使用の build-rootfs ディレクトリのパス>/submodules/containers/
./build.sh

そのあと "podman images" を実行すると "localhost/alpine-3.20-armv7" が現れると思います。
上記確認できた場合は "docker" コマンドは "podman" コマンドに置き換えてご使用いただくのが良いと思います。
以上、どうぞよろしくお願いいたします。

山崎様

佐藤です。
返信が遅くなり申し訳ございません。

> arch の指定方法に変更があったため、こちらの対応が必要です。
> お手数をおかけして申し訳ありませんが、現在の最新版である build-rootfs-v3.20-at.7.tar.gz をご使用いただくか、
> もしくは build.sh をご使用のディレクトリに入れ替えて実行していただけますでしょうか?
> 入れ替えて実行する場合の手順は以下になります。

> wget https://armadillo.atmark-techno.com/files/downloads/armadillo-640/tool/build-rootfs-v3.20-at.7.tar.gz
> tar xf build-rootfs-v3.20-at.7.tar.gz
> cp build-rootfs-v3.20-at.7/submodules/containers/build.sh <ご使用の build-rootfs ディレクトリのパス>/submodules/containers/build.sh
> cd <ご使用の build-rootfs ディレクトリのパス>/submodules/containers/
> ./build.sh

> そのあと "podman images" を実行すると "localhost/alpine-3.20-armv7" が現れると思います。
> 上記確認できた場合は "docker" コマンドは "podman" コマンドに置き換えてご使用いただくのが良いと思います。

/build-rootfs-v3.18-at.10/submodules/containersのbuild.shをbuild-rootfs-v3.20-at.7のbuild.shに差し替え

 ./build.sh

を実行しました。

atmark@atde9:~/build-rootfs-v3.18-at.10/submodules/containers$ sudo podman image ls
REPOSITORY                     TAG     IMAGE ID      CREATED      SIZE
localhost/alpine-3.20-aarch64  latest  0e6f8e3f880a  3 days ago   236 MB
localhost/alpine-3.20-armv7    latest  4cb183c9e97c  3 days ago   162 MB
localhost/alpine-3.20-x86_64   latest  d46c952356d0  3 days ago   246 MB
docker.io/amd64/alpine         3.20    e29df9b510ff  2 weeks ago  8.09 MB
docker.io/arm32v7/alpine       3.20    f92558a1b22b  2 weeks ago  5.4 MB
docker.io/arm64v8/alpine       3.20    f4194d9e8c10  2 weeks ago  9.12 MB

このようにalpine-3.20-armv7が表示されるのですが、v3.18-at.10のディレクトリへコピーしてもこうなるのが正しいのでしょうか?

また、VSCodeで作成するpythonプロジェクトのDockerfileでFROM docker.io/${ARCH}/alpine:3.18を指定していたのですが、
上記のようにalpine-3.20-armv7の環境となってしまうとDockerfileのバージョンも合わせなければならないものなのでしょうか?

以上、よろしくお願い致します。

at_dominique.m…

2025年1月28日 9時31分

横からすみません、マルティネです。

> このようにalpine-3.20-armv7が表示されるのですが、v3.18-at.10のディレクトリへコピーしてもこうなるのが正しいのでしょうか?

containersディレクトリの build.sh を実行すると build-rootfs からコピーしたプロジェクトのバージョンがビルドされますが、build_rootfs.sh から実行すると必要な 3.18 バージョンもビルドされるはずですので 3.20 のイメージを無視(あるいは削除)してもいいです。

> また、VSCodeで作成するpythonプロジェクトのDockerfileでFROM docker.io/${ARCH}/alpine:3.18を指定していたのですが、
> 上記のようにalpine-3.20-armv7の環境となってしまうとDockerfileのバージョンも合わせなければならないものなのでしょうか?

alpine 3.18 はもう今年の5月でメインテナンスが切れますので理想と言えば更新していただくことを推奨しますが(rootfsの方も)、VSCode プロジェクトで使うコンテナと build-rootfs で使うコンテナと関係ありませんので、アップデートのタイミングは別でも問題ありません。

ただし、vscode プロジェクトでコンテナをビルドする際に今回の「no matching manifest for linux/amd64 in the manifest list entries」エラーも発生する可能性があります(dockerhub のイメージの変更によるエラーですので)。
エラーが発生する場合は同じく vscode project のスクリプトの更新が必要になると思いますので、その際にまた問い合わせください。

よろしくお願いします