takamura.eiji
2025年7月31日 10時00分
==========
製品型番:AG9130-C03D0
Debian/ABOSバージョン:v3.21.3-at.14
==========
マニュアル「6.12.6.16. Rest API : ユーザー設定とユーザーデータの管理」に従い、Rest APIからユーザーデータ一括削除を試してみたところ、
ホスト OS 上で実行するとマニュアル例のように実行されて再起動されますが、コンテナ上で実行すると以下のようになります。
■コンテナOS上で実行した場合
armadillo:/# AUTH="Authorization: Bearer xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
armadillo:/# alias curl_rest='curl -k -H "$AUTH" -w "\nhttp code: %{http_code}\n" '
armadillo:/# curl_rest -X POST "https://127.0.0.1:58080/api/reset_default"
ssse-flw: EmbSe_Init(): Entry
App :INFO :Using PortName='/dev/i2c-6:0x48' (ENV: EX_SSS_BOOT_SSS_PORT=/dev/i2c-6:0x48)
sss :INFO :atr (Len=35)
00 A0 00 00 03 96 04 03 E8 00 FE 02 0B 03 E8 08
01 00 00 00 00 64 00 00 0A 4A 43 4F 50 34 20 41
54 50 4F
sss :WARN :Communication channel is Plain.
sss :WARN :!!!Not recommended for production use.!!!
ssse-flw: Version: 1.0.5
ssse-flw: EmbSe_Init(): Exit
ssse-flw: Control Command EMBSE_LOG_LEVEL; requested log level = 4
{"stdout":"rm -f /etc/NetworkManager/system-connections/*\n"}
{"stdout":"persist_file -r /etc/NetworkManager/system-connections\n"}
{"stdout":"persist_file -r /etc/dnsmasq.d\n"}
{"stdout":"rc-service dnsmasq restart\n"}
{"stdout":"/etc/init.d/iptables save\n"}
{"stdout":"sed -i -e '/NETAVARK/d' /etc/iptables/rules-save\n"}
{"stdout":"persist_file /etc/iptables/rules-save\n"}
{"stdout":"podman stop -a\n"}
{"stdout":"reformatting /var/log\n"}
{"stdout":"deleting /var/app/volumes/*\n"}
armadillo:~#
/var/app/volumes の削除の段階?でコンテナ OS が終了したようでホスト OS に戻されます。
コンテナ OS では中途半端?に終わっているのか再起動もされません。
下記について、ご見解をお願いいたします。
・手順は正しいでしょうか?
・本動作は想定通りの動作でしょうか?
・内部的には abos-ctrl reset-default -f が実行されている認識でよろしいでしょうか?
・自動的に再起動までされるようにするにはどうすればいいのでしょうか?
コメント
takamura.eiji
at_dominique.m…
takamura.eijiさん
> 是非試したいので、apkをご用意頂けないでしょうか?
お待たせしました。
添付した tar アーカイブに動作確認用の apk でご確認ください。
armadillo:~# tar xvf abos-web.tar abos-web/ abos-web/abos-web-1.10.0-r5.apk abos-web/abos-web-openrc-1.10.0-r5.apk armadillo:~# persist_file -a add ./abos-web/abos-web-*apk (1/2) Upgrading abos-web (1.9.0-r0 -> 1.10.0-r5) (2/2) Upgrading abos-web-openrc (1.9.0-r0 -> 1.10.0-r5) Executing busybox-1.37.0-r12.trigger OK: 214 MiB in 197 packages Install succeeded, but might not work in the running system Please reboot if installed program does not work armadillo:~# reboot / # curl $AUTH -X POST https://host.containers.internal:58080/api/reset_default {"stdout":"rm -f /etc/NetworkManager/system-connections/*\n"} [...] {"stdout":"deleting /var/app/volumes/*\n"} armadillo:~#
/var/app/volumes 削除でコンテナが今まで通り停止されますが、コマンドが最後まで実行されて再起動します。
また、ABOS 3.21.3-at.14 にある reset-default コマンドは何らかのエラーの場合に途中で失敗して再起動しない可能性はありますが、
ABOS 3.22.1-at.1 に更新していただければコンテナ起動後のエラー処理を改善して、
コンテナが停止した後に再起動せずに自ら止まる事がなくなったはずですので、更新も推奨します。
(abos-ctrl update コマンド等で)
よろしくお願いします。
ファイル | ファイルの説明 |
---|---|
abos-web.tar | A9E用のaarch64パッケージです。 |
takamura.eiji
> takamura.eijiさん
>
> > 是非試したいので、apkをご用意頂けないでしょうか?
>
> お待たせしました。
> 添付した tar アーカイブに動作確認用の apk でご確認ください。
添付の apk で ABOSWEB を更新した後に一括削除API(/api/reset_default)を再度試しました。
一括削除後に再起動されることを確認しました。
ただ他の API で問題を見つけましたので、ご指摘させて頂きます。
マニュアル「6.12.6.5. Rest API : SWU」の "SWU をファイルアップロードでインストール" が正しく動作していません。
以下コンテナ上より REST API で試したコンソールログになります。
armadillo:/vol_app/build# curl_rest -F swu=@"/vol_app/build/release.swu" https://127.0.0.1:58080/api/swu/install/upload
ssse-flw: EmbSe_Init(): Entry
App :INFO :Using PortName='/dev/i2c-6:0x48' (ENV: EX_SSS_BOOT_SSS_PORT=/dev/i2c-6:0x48)
sss :INFO :atr (Len=35)
00 A0 00 00 03 96 04 03 E8 00 FE 02 0B 03 E8 08
01 00 00 00 00 64 00 00 0A 4A 43 4F 50 34 20 41
54 50 4F
sss :WARN :Communication channel is Plain.
sss :WARN :!!!Not recommended for production use.!!!
ssse-flw: Version: 1.0.5
ssse-flw: EmbSe_Init(): Exit
ssse-flw: Control Command EMBSE_LOG_LEVEL; requested log level = 4
{"stdout":"SWUpdate v2024.12.0-git20250421-r0\n"}
{"stdout":"\n"}
{"stdout":"Licensed under GPLv2. See source distribution for detailed copyright notices.\n"}
{"stdout":"\n"}
{"stdout":"[INFO ] : SWUPDATE running : [print_registered_handlers] : \tno handler registered.\n"}
{"stdout":"[INFO ] : SWUPDATE running : [main] : Running on iot-a9e Revision at1\n"}
{"stdout":"[INFO ] : SWUPDATE started : Software Update started !\n"}
{"stdout":"[INFO ] : SWUPDATE running : [install_single_image] : Installing pre_script\n"}
{"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : No base os update: copying current os over\n"}
{"stdout":"[WARN ] : SWUPDATE running : [read_lines_notify] : ----------------------------------------------\n"}
{"stdout":"[WARN ] : SWUPDATE running : [read_lines_notify] : WARNING: Persistent storage is used for podman, stopping all containers before updating\n"}
{"stdout":"[WARN ] : SWUPDATE running : [read_lines_notify] : ----------------------------------------------\n"}
armadillo:~#
処理中の段階?でコンテナ OS が終了したようでホスト OS に戻されます。
app.desc で swdesc_option POST_ACTION=reboot を指定しているにも関わらず、再起動されません。
システムを手動で再起動して確認してもコンテナの更新はされていませんでした。
なおホスト OS 側で実施したら正しく動作しました。
本 API も修正頂きたいです。
at_dominique.m…
マルティネです。
> 添付の apk で ABOSWEB を更新した後に一括削除API(/api/reset_default)を再度試しました。
> 一括削除後に再起動されることを確認しました。
ご確認ありがとうございます。
> ただ他の API で問題を見つけましたので、ご指摘させて頂きます。
> マニュアル「6.12.6.5. Rest API : SWU」の "SWU をファイルアップロードでインストール" が正しく動作していません。
> 以下コンテナ上より REST API で試したコンソールログになります。
こちらはまた別の問題で、仕様通りの動きです。
reset-default と違っては http クライエントが停止されても最後まで実行するように設定されていますが、SWU ファイルを一時保存してインストールしているのではなくストリーミングの形でインストールしていますので、SWU ファイルの転送が完了されてない状態にコンテナを途中で停止してインストールが失敗します( ABOS 側の /var/log/messages の swupdate ログを確認していただければ納得できると思います。また、reset-default と違って「綺麗」に失敗しますので、コンテナが再起動されてるはずです)
コンテナを停止しているのは、「WARNING: Persistent storage is used for podman, stopping all containers before updating」の警告に書いてますが、推奨の abos-ctrl podman-storage --tmpfs モードに戻っていただければコンテナを停止しませんので、最後までインストールできるようになるはずです。
また、今回のように SWU イメージファイルをファイルとして保存していると、ABOS 側からもアクセスできますので、その場合は file:// の url でもインストールできます:
curl_rest -d url="file:///var/app/volumes/mycontainer/build/release.swu https://127.0.0.1:58080/api/swu/install/url
こちらでしたらコンテナを停止しても最後までインストールされますので、使いやすいと思います。
(storage=disk に他の問題がありますので、url の方法でインストールを行ってもストレージを直すように推奨しています)
よろしくお願いします。
takamura.eiji
takamura.eiji
at_dominique.m…
マルティネです。
> ABOSを7月末リリースの「ABOS 3.22.1-at.1 」へ更新して検証したところ、本フォーラムで相談しておりました
> 一括削除API(/api/reset_default)で旧来の動作をしていました。
> こちらの正式な適用は8月末のリリースでしょうか?
はい、来週の予定です。
> またご相談ですが、本フォーラムで提供して頂いた「abos-web.tar」(1.10.0-r5)は適用するとエラーになるのですが、
> 「ABOS 3.22.1-at.1 」用にご用意頂くことは可能でしょうか?
手元では ABOS 3.22.1-at.1 でも問題なくインストールできています。
実行したコマンドとエラーの内容をこちらにコピーしていただけますか?
よろしくお願いします
takamura.eiji
> > ABOSを7月末リリースの「ABOS 3.22.1-at.1 」へ更新して検証したところ、本フォーラムで相談しておりました
> > 一括削除API(/api/reset_default)で旧来の動作をしていました。
> > こちらの正式な適用は8月末のリリースでしょうか?
>
> はい、来週の予定です。
ありがとうございます。承知致しました。
> > またご相談ですが、本フォーラムで提供して頂いた「abos-web.tar」(1.10.0-r5)は適用するとエラーになるのですが、
> > 「ABOS 3.22.1-at.1 」用にご用意頂くことは可能でしょうか?
>
> 手元では ABOS 3.22.1-at.1 でも問題なくインストールできています。
> 実行したコマンドとエラーの内容をこちらにコピーしていただけますか?
3.22.1-at.1 にて実行しました。
# ls -l total 1892 -rw-r--r-- 1 root root 1935360 Aug 18 16:23 abos-web.tar armadillo:/vol_app/build/tmp_files# tar xvf abos-web.tar # persist_file -a add ./abos-web/abos-web-*apk fetch https://download.atmark-techno.com/alpine/v3.22/atmark/aarch64/APKINDEX.tar.gz WARNING: updating and opening https://download.atmark-techno.com/alpine/v3.22/atmark: temporary error (try again later) fetch https://dl-cdn.alpinelinux.org/alpine/v3.22/main/aarch64/APKINDEX.tar.gz WARNING: updating and opening https://dl-cdn.alpinelinux.org/alpine/v3.22/main: temporary error (try again later) fetch https://dl-cdn.alpinelinux.org/alpine/v3.22/community/aarch64/APKINDEX.tar.gz WARNING: updating https://dl-cdn.alpinelinux.org/alpine/v3.22/community: temporary error (try again later) WARNING: The repository tag for world dependency 'abos-base@atmark' does not exist WARNING: The repository tag for world dependency 'abos-base-catatonit@atmark' does not exist WARNING: The repository tag for world dependency 'armadillo-twin-agent@atmark' does not exist WARNING: The repository tag for world dependency 'atmark-power-utils@atmark' does not exist WARNING: The repository tag for world dependency 'atmark-wwan-utils@atmark' does not exist WARNING: The repository tag for world dependency 'buttond@atmark' does not exist WARNING: The repository tag for world dependency 'emmc-sref@atmark' does not exist WARNING: The repository tag for world dependency 'libubootenv@atmark' does not exist WARNING: The repository tag for world dependency 'linux-at-x2@atmark' does not exist WARNING: The repository tag for world dependency 'modemmanager@atmark' does not exist WARNING: The repository tag for world dependency 'podman-at@atmark' does not exist WARNING: The repository tag for world dependency 'power-alertd@atmark' does not exist WARNING: The repository tag for world dependency 'se05x-tools@atmark' does not exist WARNING: The repository tag for world dependency 'swupdate@atmark' does not exist ERROR: Not committing changes due to missing repository tags. Use --force-broken-world to override. Install succeeded, but might not work in the running system Please reboot if installed program does not work
再起動してもバージョンが変わらないです。
# apk info abos-web WARNING: opening from cache https://download.atmark-techno.com/alpine/v3.22/atmark: No such file or directory WARNING: opening from cache https://dl-cdn.alpinelinux.org/alpine/v3.22/main: No such file or directory abos-web-1.10.0-r0 description: ABOS web interface abos-web-1.10.0-r0 webpage: https://armadillo.atmark-techno.com/ abos-web-1.10.0-r0 installed size: 3828 KiB
前回と違い abos-ctrl podman-storage --disk 環境ではありませんが、何か関係ありますでしょうか?
at_dominique.m…
マルティネです
> # persist_file -a add ./abos-web/abos-web-*apk > fetch https://download.atmark-techno.com/alpine/v3.22/atmark/aarch64/APKINDEX.tar.gz > WARNING: updating and opening https://download.atmark-techno.com/alpine/v3.22/atmark: temporary error (try again later)
こちらのエラーで依存を解決できず、インストールを拒否しますね。
ネットワークに接続すれば解決されますが、
今回は依存が変わってないので、エラーメッセージの通りに --force-broken-world を使っても問題ありません。
(以下のコマンドで --no-network で接続しても再現できるようにしましたが、そちらはあってもなくても同じです)
# persist_file -a add --no-network --force-broken-world ./abos-web/abos-web-* WARNING: opening from cache https://download.atmark-techno.com/alpine/v3.22/atmark: No such file or directory WARNING: opening from cache https://dl-cdn.alpinelinux.org/alpine/v3.22/main: No such file or directory WARNING: opening from cache https://dl-cdn.alpinelinux.org/alpine/v3.22/community: No such file or directory (1/2) Upgrading abos-web (1.10.0-r0 -> 1.10.0-r5) (2/2) Upgrading abos-web-openrc (1.10.0-r0 -> 1.10.0-r5) Executing busybox-1.37.0-r18.trigger OK: 218 MiB in 197 packages Install succeeded, but might not work in the running system Please reboot if installed program does not work
> 前回と違い abos-ctrl podman-storage --disk 環境ではありませんが、何か関係ありますでしょうか?
関係ありません。
よろしくお願いします
takamura.eiji
at_dominique.m…
2025年7月31日 11時42分
takamura.eijiさん
お世話になっています、
マルティネです。
> /var/app/volumes の削除の段階?でコンテナ OS が終了したようでホスト OS に戻されます。
> コンテナ OS では中途半端?に終わっているのか再起動もされません。
申し訳ございせん、abos-web 側の実装の問題です。
おっしゃる通りに、reset-default コマンドで /var/app/volumes のデータを削除する前にコンテナを停止していますが、
abos-web で http client が切断した際にコマンドを停止させるか、コマンドを実行しさせるかのオプションがあって、
reset-default で最後まで実行させるようにしてませんでした。
修正はもうできてませうので、8月末のアップデートで正常に動作するようになります。
参考までに以下のパッチです
他のコマンドでコンテナがいきなりなくなる問題はない(かすでに対応している)と思いますが、
ついでに一回り確認します。報告ありがとうございました。
大変お手数ですが、試したい場合の abos-web のビルド手順は用意してませんので、もし急ぎじゃなければ来月のアップデートを待っていただければ幸いです。
その前に試したい場合はテスト用の apk を準備しますので言ってください。
よろしくお願いします