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」のイメージが表示されません。
何がおかしいのでしょうか?
以上、よろしくお願い致します。
コメント
k.sato
山崎様
佐藤です。
返信が遅くなり申し訳ございません。
> 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…
横からすみません、マルティネです。
> このように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 のスクリプトの更新が必要になると思いますので、その際にまた問い合わせください。
よろしくお願いします
k.sato
マルティネ様
佐藤です。
回答が遅くなって申し訳ございません。
> > また、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 のスクリプトの更新が必要になると思いますので、その際にまた問い合わせください。
エラーが発生したら、再度問い合わせます。
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
が生成されましたので
●ライブラリが見つからないエラー
https://armadillo.atmark-techno.com/forum/armadillo/14009#comment-12363
$ sudo docker run -it --name a6edev --platform "linux/armhf" --mount type=bind,src="$PWD",target=/home/builder/atmark alpine-3.16-armv7 /bin/sh
これを今回のalpine-3.20-armv7
で行いたいです。
$ sudo docker run -it --name a640dev --platform "linux/armhf" --mount type=bind,src="$PWD",target=/home/builder/atmark alpine-3.20-armv7 /bin/sh
上記を試してみましたがコンテナを作成して移動しません。
localhost/alpine-3.20-armv7
やdocker
をpodman
に変更してみましたがダメでした。
どういうコマンドを打てばよいでしょうか?
以上、よろしくお願い致します。
at_dominique.m…
マルティネです。
> localhost/alpine-3.20-armv7
やdocker
をpodman
に変更してみましたがダメでした。
podman/docker が混ざってしまって分かりにくい状態になってすみません。
詳細から説明すると
* podman でビルドしたイメージは docker で利用できません。さらに、podman は sudo podman と podman の環境もちがいますので、コマンド実行時にどの環境を利用するかを把握する必要があります。
* そこで、ATDE9 でインストール可能な podman のバージョンは docker と違う --platform 引数の処理を行ってるので、今回はコマンドを簡単に差し替えできません。
--platform引数を削除すれば alpine-3.20-armv7 のイメージを使えると思いますが、build rootfs の都合でビルドしたコンテナにこだわる必要ありません。(docker に sudo が必要なため、podman もインストールされてる場合は build-rootfs 内で podman を利用するようにしましたが、同じコンテナを使う必要はありません)
状況は分かってませんので、お手数ですがまずは目的から改めて教えていただけますでしょうか。
C言語で開発を行いたいのであれば、VSCode プロジェクトで「C project」の作成は可能ですが、こちらでは目的を果たせないでしょうか?
C project の Dockerfile では debian をデフォルトで使ってますが、container/Dockerfile を変更すれば alpine も利用可能です(FROM の行の更新と apt-get の RUN 命令を「apk add ${PACKAGES}
に変更すれば)
バイナリを直接に Armadillo Base OS ホスト側にコピーすることを推奨しませんが、こちらの alpine コンテナでビルドした物は Armadillo Base OS でも実行可能です。
よろしくお願いします
k.sato
マルティネ様
佐藤です。
> 状況は分かってませんので、お手数ですがまずは目的から改めて教えていただけますでしょうか。
VSCode プロジェクトでは「python project」を作成しています。
snmpのGET、SETを行うため、net-snmpをクロスコンパイルして
実行ファイルだけ「python project」の「my_project/container/resources」内に配置したいです。
旧環境ではこの方法で一緒に.swuに固めインストールし
snmpのSET、GETの動作確認まで出来ていました。
以上、よろしくお願い致します。
at_dominique.m…
マルティネです
> > 状況は分かってませんので、お手数ですがまずは目的から改めて教えていただけますでしょうか。
> VSCode プロジェクトでは「python project」を作成しています。
> snmpのGET、SETを行うため、net-snmpをクロスコンパイルして
> 実行ファイルだけ「python project」の「my_project/container/resources」内に配置したいです。
>
> 旧環境ではこの方法で一緒に.swuに固めインストールし
> snmpのSET、GETの動作確認まで出来ていました。
なるほど、ABOS側ではなく別のコンテナの resources としてコピーしたかったですね。
snmpget/snmpset の標準コマンドのままでしたら、python app project の package リストに「net-snmp-tools」を追加したら snmpget/set コマンドがインストールされますが、標準のコマンドではなく自分の snmpget/set (何か手を加えた物)をインストールしたいでよろしいでしょうか?
python project では「ビルドコンテナ」の概念がないので、確かに厄介ですね。
バイナリをコピーするままでよろしければ、ABOS用の alpine-3.20-armv7 ではなく、python project のコンテナでコードを実行してください
イメージとしては以下のとおり
# python project はおそらく sudo 無しの podman 環境にあるので、その確認 atde$ podman image list localhost/python-app-project-1.2.2 latest 3384a10f6805 10 months ago 417 MB # それを起動します atde$ podman run -it --name a640dev --replace -v "$PWD":/work localhost/python-app-project-1.2.2:latest /bin/sh # コンテナの中で必要なパッケージをインストールして /work に成果物をコピーする / # apk add ... /# cp ... /work/
いかがでしょうか。
よろしくお願いします。
k.sato
佐藤です。
> snmpget/snmpset の標準コマンドのままでしたら、python app project の package リストに「net-snmp-tools」を追加したら snmpget/set コマンドがインストールされますが、標準のコマンドではなく自分の snmpget/set (何か手を加えた物)をインストールしたいでよろしいでしょうか?
その通りです。
今までは下記の手順でnet-snmpのクロスコンパイルを行っていました。
※ コンテナインスタンスの作成 sudo docker run -it --name a640dev --platform "linux/armhf" --mount type=bind,src="$PWD",target=/home/builder/atmark alpine-3.18-armv7 /bin/sh ※ 次回からコンテナを起動し移動 sudo docker start a640dev && sudo docker exec -it a640dev /bin/sh ※ クロスコンパイルしたいソースが置いてあるディレクトリへ移動 / # cd /home/builder/atmark/cross_compile/net-snmp-5.8/ ※ net-snmpのビルド /home/builder/atmark/armadillo_alpine/net-snmp-5.8 # make
net-snmpのソースをvscodeで修正してもコピーする手間がかからないので。
現環境でも同じようなことはできますか?
> # python project はおそらく sudo 無しの podman 環境にあるので、その確認 > atde$ podman image list > localhost/python-app-project-1.2.2 latest 3384a10f6805 10 months ago 417 MB > # それを起動します > atde$ podman run -it --name a640dev --replace -v "$PWD":/work localhost/python-app-project-1.2.2:latest /bin/sh > # コンテナの中で必要なパッケージをインストールして /work に成果物をコピーする > / # apk add ... > /# cp ... /work/
上記を試してみましたが、/home/builder/
までしか見られません。
target=/home/builder/atmark
などがpodmanのオプションでも使用できれば同じことが出来そうな気がしますが...
以上、よろしくお願い致します。
at_dominique.m…
マルティネです。
> 現環境でも同じようなことはできますか?
できますが、手間なだけではなく、パッケージを使わないとセキュリティの修正等も適用しづらくなりますので、net-snmp のソースに手を加えたならともかく、標準のままでしたらパッケージを利用できますのでそちらを推奨します。
( https://osv.dev/list?q=net-snmp&ecosystem=Alpine に公開されてる去年の脆弱性は snmpd の方が対象らしいなので snmpget/set を使うだけでしたらすぐには困らないと思いますが、脆弱性は出てますしちゃんと維持されているソフトウェアなので更新しやすい体制がいいかと)
> target=/home/builder/atmark
などがpodmanのオプションでも使用できれば同じことが出来そうな気がしますが...
前のコマンドの「--mount type=bind,src="$PWD",target=/home/builder/atmark
」と新しいコマンドの「-v "$PWD":/work
」はマウント先が違いますので、-v (--volume) オプションを調整するか /work ディレクトリで作業してください。
よろしくお願いします
k.sato
佐藤です。
> 前のコマンドの「--mount type=bind,src="$PWD",target=/home/builder/atmark
」と新しいコマンドの「-v "$PWD":/work
」はマウント先が違いますので、-v (--volume) オプションを調整するか /work ディレクトリで作業してください。
ありがとうございます。
podman run -it --name a640dev --replace -v "$PWD":/home/builder/atmark localhost/alpine-3.20-armv7 /bin/sh cd /home/builder/atmark/cross_compile/net-snmp-5.8/
上記とすることで/home/builder/atmark/
に移動し自身で修正したnet-snmp-5.8をビルドすることができました。
at_reika.yamazaki
2025年1月24日 17時46分
お世話になっております。山崎です。
arch の指定方法に変更があったため、こちらの対応が必要です。
お手数をおかけして申し訳ありませんが、現在の最新版である build-rootfs-v3.20-at.7.tar.gz をご使用いただくか、
もしくは build.sh をご使用のディレクトリに入れ替えて実行していただけますでしょうか?
入れ替えて実行する場合の手順は以下になります。
そのあと "podman images" を実行すると "localhost/alpine-3.20-armv7" が現れると思います。
上記確認できた場合は "docker" コマンドは "podman" コマンドに置き換えてご使用いただくのが良いと思います。
以上、どうぞよろしくお願いいたします。