takeshita_kyouhei
2025年3月7日 11時01分
Armadillo-IoT G4で不要になったコンテナの削除を「container_clear」のインストールで実施しました
(プロジェクト名が変更となったため、コンテナ名も変更となり古いコンテナは削除したかった)
その後、既存の開発版SWUイメージの再インストールを行ったのですがエラーが発生してインストールできませんでした
development.swu をインストールします。
SWU アップロード中に接続が切断されました。
SWUpdate v2024.05.2_git20240718-r0
Licensed under GPLv2. See source distribution for detailed copyright notices.
[INFO ] : SWUPDATE running : [print_registered_handlers] : no handler registered.
[INFO ] : SWUPDATE running : [main] : Running on AGX4500 Revision at1
[INFO ] : SWUPDATE started : Software Update started !
[INFO ] : SWUPDATE running : [install_single_image] : Installing pre_script
[INFO ] : SWUPDATE running : [read_lines_notify] : Skipping install of component extra_os.uploader 2 (has 2)
[INFO ] : SWUPDATE running : [read_lines_notify] : Skipping install of component uploader 2 (has 2)
[ERROR] : SWUPDATE failed [0] ERROR : ----------------------------------------------
[ERROR] : SWUPDATE failed [0] ERROR : /!\ Nothing to do -- failing on purpose to save bandwidth
[ERROR] : SWUPDATE failed [0] ERROR : ----------------------------------------------
[ERROR] : SWUPDATE failed [0] ERROR : Command failed: sh $1 /var/tmp/swupdate-abosweb-upload.GNjIpN/scripts_pre.sh
[ERROR] : SWUPDATE failed [0] ERROR : Error streaming zst.scripts_pre.sh
[ERROR] : SWUPDATE failed [1] Image invalid or corrupted. Not installing ...
swupdate_image_write failed: Broken pipe
[ERROR] : SWUPDATE failed [0] ERROR : SWUpdate *failed* !
swupdate exited
上記のようなエラーが出ているのですが原因は何なのでしょうか?
通信断が発生している?
コメント
takeshita_kyouhei
>
> [INFO ] : SWUPDATE running : [read_lines_notify] : Skipping install of component extra_os.uploader 2 (has 2) > [INFO ] : SWUPDATE running : [read_lines_notify] : Skipping install of component uploader 2 (has 2) >
> 既に Armadillo にインストールされているバージョンの SWU イメージをインストールしているからだと思われます。
> ABOSDE でもう一度 [Generate development swu]を実行して作成し直した development.swu をインストールしてみるとどうなりますでしょうか?
返信有り難うございます
再度、開発版SWUを作成することでインストールできました
ちなみに、container_clearでコンテナを削除した場合でも、バージョン番号はArmadillo内に残るのでしょうか?
また、以下のようなエラーが発生してABOSDEで「アプリをArmadilloを実行」が失敗します
これは、コンテナが起動してソフトが実行されているという認識でいいのでしょうか?
なにかの設定が入っていて自動実行されている?
uploader.conf 100% 1116 325.5KB/s 00:00 Starting 'uploader' time="2025-03-07T15:06:39+09:00" level=warning msg="The input device is not a TTY. The --tty and --interactive flags might not work properly" a1c1e596445ab0d81dbf9b92775274f068403a453dcdc15286c5041cd84d1b60 Error: you can only attach to running containers
at_satoshi.ohta
太田です。
> ちなみに、container_clearでコンテナを削除した場合でも、バージョン番号はArmadillo内に残るのでしょうか?
はい。versionが残った状態でコンテナのみを削除するので、必要であれば、Armadillo 上で
armadillo:~# vi /etc/sw-versions
を実行して、対応する SWU イメージのコンポーネントとバージョンの行を消していただければと思います。
> また、以下のようなエラーが発生してABOSDEで「アプリをArmadilloを実行」が失敗します
> これは、コンテナが起動してソフトが実行されているという認識でいいのでしょうか?
[アプリを Armadillo で実行]を押すと、最終的には Armadillo 上で
podman_start を実行して、コンテナを起動したあと、podman attach を実行してコンテナに接続します。
podman_start で実行したが、コンテナの起動に失敗したため、存在しないコンテナに対して podman attach を実行したので「Error: you can only attach to running containers」のエラー文が実行されている可能性があります。
Armadillo 上のターミナルに入り、
armadillo:~# podman_start <コンテナ名> && podman attach <コンテナ名>
で同じエラー文が出力されると思います。
armadillo:~# podman ps
を実行して何もなければコンテナが起動できていません。
armadillo:~# podman ps -a
を実行すると失敗したコンテナも表示されるはずですが、どのような出力になっていますでしょうか?
どうぞよろしくお願いいたします。
takeshita_kyouhei
> > ちなみに、container_clearでコンテナを削除した場合でも、バージョン番号はArmadillo内に残るのでしょうか?
>
> はい。versionが残った状態でコンテナのみを削除するので、必要であれば、Armadillo 上で
>
> armadillo:~# vi /etc/sw-versions >
> を実行して、対応する SWU イメージのコンポーネントとバージョンの行を消していただければと思います。
情報ありがとうございます
不要なバージョン情報を削除することができました
> Armadillo 上のターミナルに入り、
>
> armadillo:~# podman_start <コンテナ名> && podman attach <コンテナ名> >
> で同じエラー文が出力されると思います。
>
> armadillo:~# podman ps >
> を実行して何もなければコンテナが起動できていません。
>
> armadillo:~# podman ps -a >
> を実行すると失敗したコンテナも表示されるはずですが、どのような出力になっていますでしょうか?
上記コマンドを実行したところ、以下のような結果となりました
armadillo:~# podman_start uploader && podman attach uploader Starting 'uploader' 692b0b574cfbd243151df7c76a4003402340772dd5b934f34d06a4579e8d32b8 Error: you can only attach to running containers armadillo:~# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 692b0b574cfb localhost/uploader:latest python_launch 12 seconds ago Up Less than a second uploader armadillo:~# podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1349934bf2df localhost/modbus_collector:latest /vol_app/src/laun... 14 minutes ago Exited (143) 14 minutes ago 0.0.0.0:8086->8086/tcp modbus_collector 0707b16e62ea localhost/modbus_writer:latest /vol_app/src/laun... 14 minutes ago Exited (143) 14 minutes ago modbus_writer 0f218f281e8e localhost/subscriber:latest python_launch 11 minutes ago Exited (137) 8 minutes ago subscriber 692b0b574cfb localhost/uploader:latest python_launch 35 seconds ago Up Less than a second uploader
takeshita_kyouhei
at_dominique.m…
takeshita_kyouheiさん
太田さんが本日不在のため代わりに回答させていただきます
マルティネです
> また、以下のようなエラーが発生してABOSDEで「アプリをArmadilloを実行」が失敗します
> これは、コンテナが起動してソフトが実行されているという認識でいいのでしょうか?
> なにかの設定が入っていて自動実行されている?
コンテナを実行してすぐに失敗した場合に attach できない可能性はあります。
また、Armadillo で実行されているコンテナは失敗の場合に自動リスタートされますので、podman ps で実行されているように見えますが「Up Less than a second」ということは確かにコンテナ再起動されたことになります。
こちらの attach できない問題は今月のアップデートで対応させていただきます(detach run + attach ではなく最初から attached 状態で実行してログをこぼさないようになります)
お手数ですがそれまでは「podman logs [container]」でリスタートされた後でもログを確認できますので、停止される問題をログで修正してみてください
よろしくお願いします
takeshita_kyouhei
> お手数ですがそれまでは「podman logs [container]」でリスタートされた後でもログを確認できますので、停止される問題をログで修正してみてください
>
> よろしくお願いします
返信いただきありがとうございます
ログを確認しましたが、あまり有益な情報を得ることができていません
armadillo:~# podman logs uploader exec failed: No such file or directory exec failed: No such file or directory exec failed: No such file or directory exec failed: No such file or directory exec failed: No such file or directory exec failed: No such file or directory exec failed: No such file or directory exec failed: No such file or directory exec failed: No such file or directory exec failed: No such file or directory exec failed: No such file or directory exec failed: No such file or directory exec failed: No such file or directory exec failed: No such file or directory
上記のように「exec failed: No such file or directory」というログが延々と出力されており、「なんのファイルorディレクトリが見つからないのか?」が
判別できない状況になっています
ソースコード(Python)内にログを出力するように実装を行ってみますが、ログも上記のような状態なので分別がついていません
起動時に残すStarting...というログもない?
takeshita_kyouhei
起動時に読み込むファイルとしては「Uploader_setting.json」というファイルを読み込んでいます
読み込み処理 # 設定ファイルの読み込み print("Reading configuration file") with open('/vol_app/src/Uploader_setting.json', 'r') as f: config = json.load(f) print("Configuration file loaded")
vol_appの定義は以下のようにapp.confで定義しています
#add_volumes /var/app/rollback/volumes/{{PROJECT}}:/vol_app ←当初の設定 add_volumes /var/app/rollback/volumes/uploader:/vol_app ←エラーが発生していたため一時的に変更した設定(こちらでもエラーは発生) add_volumes /var/app/volumes/modbus_collector:/vol_data
ファイルが配置されていないのかと思いましたが、以下のようにArmadillo上からはファイルの存在を確認できました
armadillo:~# ls /var/app/rollback/volumes/uploader/src/ Uploader_setting.json main.py requirements.txt
そのため、別の何らかのファイルが見つかっていないのではないかと考えているのですが、他に考えられること・調査すべき点はありますでしょうか?
at_satoshi.ohta
太田です。
python プロジェクトのデフォルトでは config/app.conf の内容ではコンテナ起動時に python_launch が起動するようになっています。
config/app.conf の内容:
# launch app # /vol_app/src/main.py is launched # see container/resources_python/bin/python_launch set_command python_launch
ATDE 上の container/resources_python/bin/python_launch の内容はどのようになっていますでしょうか?
ご確認よろしくお願いいたします。
takeshita_kyouhei
返信いただきありがとうございます
> python プロジェクトのデフォルトでは config/app.conf の内容ではコンテナ起動時に python_launch が起動するようになっています。
> config/app.conf の内容:
>
> # launch app > # /vol_app/src/main.py is launched > # see container/resources_python/bin/python_launch > set_command python_launch >
> ATDE 上の container/resources_python/bin/python_launch の内容はどのようになっていますでしょうか?
以下が、python_launchのファイル内容になります
#!/bin/sh # == DO NOT EDIT == # Required to use bluetooth #bluetooth dbus-daemon --system #bluetooth bluetoothd & #bluetooth sleep 2 #bluetooth bt-agent --daemon # ================== exec python3 /vol_app/src/main.py
at_satoshi.ohta
太田です。
挙動としてはデフォルトと同様に、set_command で python_launch を実行、その後 /vol_app/src/main.py を起動するはずということですね。
以下の手順で、Armadillo のコンテナの中で python_launch を実行するとどのようなログが出力されますでしょうか?
1. ATDE 上のプロジェクトの config/app.conf の set_command を以下のように書き換えます。
# set_command c_launch set_command sleep infinity
2. [App run on Armadillo] を実行します。(app.confの内容がArmadillo にコピーされて、コンテナを起動します。)
3. Armadillo のターミナルに入ります。
4. コンテナが起動していることを確認します。
armadillo:~# podman ps
5. コンテナの中に入って python_launch を実行します。
armadillo:~# podman exec -it <プロジェクト名> /bin/bash root@1a3e5338394a:/# python_launch
また、もしコンテナの中に入って python_launch を実行してもうまく行かない場合は、/vol_app/src/main.py を直接実行してみたり、main.py に print を追加して([App run on Armadillo]を実行するとArmadillo にコピーされます)、同様にコンテナの中に入って python_launch または/vol_app/src/main.py を直接実行してデバッグしてみるとどこまで成功しているか確認できると思います。
どうぞよろしくお願いいたします。
takeshita_kyouhei
返信いただきありがとうございます
提示された手順について実施してみます
別途、過去に開発していたプログラムで使用していた手法を試してみたところうまく行きましたことは報告します
実施したこと
1.app.confの設定を変更
以下のように変更
# launch app #set_command python_launch set_command /vol_app/src/launch.sh
2.プロジェクト内のapp/srcフォルダ内にlaunch.shを配置
内容は以下の通り
#!/bin/sh #influxd run & #sleep 10 && #telegraf & #sleep 30 && python3 /vol_app/src/main.py
3.この状態で開発版SWUをビルドして実行
at_satoshi.ohta
2025年3月7日 11時06分
太田です。
既に Armadillo にインストールされているバージョンの SWU イメージをインストールしているからだと思われます。
ABOSDE でもう一度 [Generate development swu]を実行して作成し直した development.swu をインストールしてみるとどうなりますでしょうか?
よろしくお願いいたします。