minaba
2023年7月4日 14時38分
minabaです。お世話になります。
swupdateの失敗に関する質問です。
下記FAQを参照したうえでの質問となります。
https://armadillo.atmark-techno.com/faq/swupdate-troubleshooting-abos
Container image immediately removed: イメージがインストールされない場合
現象としては、dashboardのイメージが更新されません。修正の仕方を教えてください。
イメージ名としてlocalhost/arm64v8/dashboardを使いたいと思っています。
(他のコンテナはlocalhost/arm64v8/...で統一されていて、動作しています)
また、取説にあるswdesc_option CONTAINER_CLEARで一旦古いイメージを消去しようとしたのですが、
詳細な文法がわからずエラーとなりました。
こちらも教えていただけると助かります。
(podman rmi e71f48c0e426 では、エラー:read only となり消せまでんでした。)
下記はATDE上にあるイメージです。
atmark@atde9:~/projects$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/arm64v8/dashboard latest 0452cc1b818b 19 hours ago 666 MB
下記はarmadillo上にあるイメージです。
armadillo:~# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE R/O
localhost/arm64v8/nginx latest fbc386e0c537 7 days ago 13.5 MB true
localhost/dashboard latest e71f48c0e426 7 days ago 700 MB true
上記、localhost/dashboardは作成日時が古く、
イメージ名をlocalhost/arm64v8/dashboardに変えた際に古いものが残ったままになっているように思われます。
これが残っているせいで、confファイルの指定がこちらにマッチしてしまい、
新しく書いたイメージが使われないとみなされて、消されているのではと推測しています。
下記はdescファイルです。
atmark@atde9:~/projects/mkswu/dashboard$ cat swu_dashboard.desc
swdesc_option component=dashboard
swdesc_option version=2
swdesc_embed_container "dashboard.tar"
swdesc_files --extra-os --dest /etc/atmark/containers/ "dashboard.conf"
下記はconfファイルです。
atmark@atde9:~/projects/mkswu/dashboard$ cat dashboard.conf
set_image dashboard:latest
add_args -d
set_restart always
set_pod main_pod
add_args --health-on-failure=restart
add_args --health-cmd="/hc/healthcheck.sh"
sh -c 'sleep 30; while podman healthcheck run dashboard; [ "$?" != 125 ]; do sleep 30; done' &
このファイルのset_imageを arm64v8/dashboardに変えてみましたが、swupdate時にエラーとなりました。
下記はswupdate実行時のログです。
[INFO ] : SWUPDATE running : [read_lines_notify] : Writing manifest to image destination
[INFO ] : SWUPDATE running : [read_lines_notify] : Storing signatures
[INFO ] : SWUPDATE running : [read_lines_notify] : Loaded image: sha256:0452cc1b818b95ac32ce8b3664d1bf1b0c56660582a923f
0b12051f3e080b00d
[INFO ] : SWUPDATE running : [install_single_image] : Installing swdesc_files --extra-os --dest /etc/atmark/containers/
dashboard.conf
[INFO ] : SWUPDATE running : [install_single_image] : Installing post_script
[INFO ] : SWUPDATE running : [read_lines_notify] : Removing unused containers
[ERROR] : SWUPDATE failed [0] ERROR : sh: set_infra_imager: not found
[WARN ] : SWUPDATE running : [read_lines_notify] : Warning: Could not guess podman pod infra container name, continuing
without one
[WARN ] : SWUPDATE running : [read_lines_notify] : podman_start will probably require an internet to start pods
[INFO ] : SWUPDATE running : [read_lines_notify] : 0452cc1b818b95ac32ce8b3664d1bf1b0c56660582a923f0b12051f3e080b00d
[WARN ] : SWUPDATE running : [read_lines_notify] : ----------------------------------------------
[WARN ] : SWUPDATE running : [read_lines_notify] : WARNING: Container image 0452cc1b818b95ac32ce8b3664d1bf1b0c56660582a
923f0b12051f3e080b00d was added in swu but immediately removed
[WARN ] : SWUPDATE running : [read_lines_notify] : WARNING: Please use it in /etc/atmark/containers if you would like t
o keep it
[WARN ] : SWUPDATE running : [read_lines_notify] : ----------------------------------------------
[INFO ] : SWUPDATE running : [read_lines_notify] : swupdate triggering reboot!
以上、よろしくお願いします。
コメント
minaba
マルティネさん、
minabaです。インラインでコメントさせていただきます。
> swupdate インストール時の出力ではコンテナの名前ではなく、id で注意が出力されましたので、おそらくコンテナファイルにイメージ名がなかったと思います。
> 名前がないためコンテナのコンフィグが set_image で設定されたコンテナを使えないと同じく、swupdate のスクリプトで認識されなかったように見えます。
> 「dashboard.tar」はどういうコマンドで作成しましたか?
下記になります。
atmark@atde9:~/projects/mkswu/dashboard$ podman save -o dashboard.tar localhost/arm64v8/dashboard:latest
>CONTAINER_CLEAR」を自分の .descファイルに追加するだけです。
> その出力は提供しなかったと思いますが、今のアップデートでは /etc/atmark/containers/dashboard.conf が含まれていて、その
一つ目は試行は下記です。
atmark@atde9:~/projects/mkswu/dashboard$ cat clear.desc swdesc_option component=dashboard swdesc_option version=3 swdesc_option CONTAINER_CLEAR #swdesc_embed_container "dashboard.tar" #swdesc_files --extra-os --dest /etc/atmark/containers/ "dashboard.conf" atmark@atde9:~/projects/mkswu/dashboard$ mkswu clear.desc ERROR: desc ファイルに有効なコマンドがありませんでした。
二つ目の試行は下記です。
atmark@atde9:~/projects/mkswu/dashboard$ cat clear.desc swdesc_option component=dashboard swdesc_option version=3 swdesc_option CONTAINER_CLEAR swdesc_embed_container "dashboard.tar" swdesc_files --extra-os --dest /etc/atmark/containers/ "dashboard.conf" atmark@atde9:~/projects/mkswu/dashboard$ mkswu clear.desc Enter pass phrase for /home/atmark/mkswu/swupdate.key: clear.swu を作成しました。 armadillo:~# swupdate -i clear.swu
先ほどはこれが失敗したのですが、今回は成功しました。
そして、無事 localhost/arm64v8/dashboardのみが登録されました。
armadillo:~# podman images REPOSITORY TAG IMAGE ID CREATED SIZE R/O localhost/arm64v8/dashboard latest 0452cc1b818b 22 hours ago 666 MB true
> コンテナを停止して、「abos-ctrl podman-rw rmi e71f48c0e426」で一時的に書き込み可能にして消すことができます。(「abos-ctrl podman-storage --disk && podman rmi e71f48c0e426 && abos-ctrl podman-storage --tmpfs」とだいたい同じです)
ありがとうございます。別の機会に別途試してみようと思います。
> ちなみに pod を使用していますので、マニュアルでは k8s.gcr.io/pause:3.5
を使わせてそのコンテナも転送させていますが、podman のバージョン更新でそのコンテナが不要となりました。
>
> なお、マニュアルに「set_infra_imager」を間違って書いてましたが正しいコマンドは set_infra_image でした…申し訳ございません。
> 不要になりましたので、その行を消してください(残してもエラーを表示するだけなので害がありません)。
> 今月のマニュアルアップデートで削除します。「Warning: Could not guess podman pod infra container name」やインターネットが必要になるワーニングも無視してください、次の mkswu のバージョンで対応します。
承知しました。
という事で、ひとまず解決してしまったのですが、本来あるべき姿としてはCONTAINER_CLEARをしなくても良いという事ですので、
tarファイルの作り方に問題があるのでしたら、ご指南いただけると幸いです。
以上、よろしくお願い致します。
at_dominique.m…
minabaさん、
マルティネです。
> 下記になります。
> atmark@atde9:~/projects/mkswu/dashboard$ podman save -o dashboard.tar localhost/arm64v8/dashboard:latest
これであってますね。
先ほどのログでは、以下の出力ありましたが:
[INFO ] : SWUPDATE running : [read_lines_notify] : Loaded image: sha256:0452cc1b818b95ac32ce8b3664d1bf1b0c56660582a923f0b12051f3e080b00d
そこに sha256:id ではなく、コンテナの名前が表示されるはずですね。
armadillo に grep "Loaded image" /var/log/messages
を実行してみて、今回成功した時に名前がかかれてましたか?
> 一つ目は試行は下記です。
> atmark@atde9:~/projects/mkswu/dashboard$ cat clear.desc > swdesc_option component=dashboard > swdesc_option version=3 > swdesc_option CONTAINER_CLEAR > #swdesc_embed_container "dashboard.tar" > #swdesc_files --extra-os --dest /etc/atmark/containers/ "dashboard.conf" > atmark@atde9:~/projects/mkswu/dashboard$ mkswu clear.desc > ERROR: desc ファイルに有効なコマンドがありませんでした。
はい、これは分かりにくいですが、「option」だけの swu を生成できてもインストールできないので、あえて mkswu で失敗させます。
CONTAINER_CLEAR を指定すると自動的に何もしないコマンドを追加してもいいかもしれませんが、あまり「魔法っぽい」対応をいれたくないですね…すみません。
> 二つ目の試行は下記です。
> [...]
> 先ほどはこれが失敗したのですが、今回は成功しました。
これは CONTAINER_CLEAR の正しい使い方ですね。アップデートをインストールする前にコンテナを全部削除しますので、容量の問題などでコンテナを書き込めない場合に使える想定です。
今回は不要でしたはずですが、どうでしょうね。上のログをみれば分かるかもしれません。
> という事で、ひとまず解決してしまったのですが、本来あるべき姿としてはCONTAINER_CLEARをしなくても良いという事ですので、
> tarファイルの作り方に問題があるのでしたら、ご指南いただけると幸いです。
はい、お手数ですが私も気になりますので、インストールログで dashboard.tar の内容を確認していただければ幸いです。
恐らく成功した最後のインストールでは「Loaded image: localhost/arm64v8/dashboard:lastest」と出力されたと思いますが、どうでしょうか。
その場合は dashboard.tar の内容が変わったことになりますが、心当たりはありますか?
これが問題でしたら、mkswu 実行時にアーカイブを展開して、tag がなければワーニングを出力させるようにしたいと思います。
よろしくお願いします。
minaba
マルティネさん、
minabaです。
途中で色々試していたので、お送りしたログは確かにid指定で作ったtarでやった時のものだったかもしれません。
それで、申し訳ありませんが、一旦解決したように見えたのですが、やはり解決していません。
新たにバージョンアップしようとしたところ、下記のように消えてしまいます。
[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] : No base os update: copying current os over [INFO ] : SWUPDATE running : [read_lines_notify] : Waiting for btrfs to flush deleted subvolumes [INFO ] : SWUPDATE running : [install_single_image] : Installing swdesc_embed_container dashboard.tar [INFO ] : SWUPDATE running : [read_lines_notify] : Command 'command podman --root /target/var/lib/containers/storage_re adonly --storage-opt additionalimagestore= load -i /var/tmp//dashboard_tar___TMPD..odman_target_load__1_5deaac939010af4f 537ee03d375acdc29bb493df.zst' output: [INFO ] : SWUPDATE running : [read_lines_notify] : Getting image source signatures [INFO ] : SWUPDATE running : [read_lines_notify] : Copying blob sha256:91c3069b758a0b13fec4902c91b5675074d8a4f0fc43540f 6e2782d48a4591e8 [INFO ] : SWUPDATE running : [read_lines_notify] : Copying blob sha256:7ea596f0d8f7d0410f31376c66bdd4c9b4847a4f6cb6255e 3e66df15979ac6ad [INFO ] : SWUPDATE running : [read_lines_notify] : Copying blob sha256:87bc36f72cf51e2c4fb5e3258cc753e8270d28b752929772 38ba76e14de053a1 [INFO ] : SWUPDATE running : [read_lines_notify] : Copying blob sha256:dcbd2252343f949abbfee155c35317745f8e9ea702792fb5 45e70fbc16b5e19e [INFO ] : SWUPDATE running : [read_lines_notify] : Copying blob sha256:f98c9e0b9d87b56aa7942644bde9481a0b4d19d75fb1ee0f 37bd26227f938f7e [INFO ] : SWUPDATE running : [read_lines_notify] : Copying blob sha256:8a396abace3c74f2800dd81d3647035bc4bd18241a9710a9 39f4995949a7988a [INFO ] : SWUPDATE running : [read_lines_notify] : Copying blob sha256:5a39350c6983c54fdca5aee23cf002fa887f039348066ab6 acfc69722629d11f [INFO ] : SWUPDATE running : [read_lines_notify] : Copying blob sha256:b328010af6c57ab3e2f1e4a28e1e72325e3a414166b4da87 a875cc3c5f9d126e [INFO ] : SWUPDATE running : [read_lines_notify] : Copying blob sha256:ac1750535366a8663b72513d1e9e0b7abb87f458263d27b1 516ea040fe027dd2 [INFO ] : SWUPDATE running : [read_lines_notify] : Copying blob sha256:b07ffee8cf01093581e89c895ea00642c080ac604c4cb2ba 9124c505e5b57bc2 [INFO ] : SWUPDATE running : [read_lines_notify] : Copying config sha256:0452cc1b818b95ac32ce8b3664d1bf1b0c56660582a923 f0b12051f3e080b00d [INFO ] : SWUPDATE running : [read_lines_notify] : Writing manifest to image destination [INFO ] : SWUPDATE running : [read_lines_notify] : Storing signatures [INFO ] : SWUPDATE running : [read_lines_notify] : Loaded image: localhost/arm64v8/dashboard:latest [INFO ] : SWUPDATE running : [install_single_image] : Installing post_script [INFO ] : SWUPDATE running : [read_lines_notify] : Removing unused containers [INFO ] : SWUPDATE running : [read_lines_notify] : 0452cc1b818b95ac32ce8b3664d1bf1b0c56660582a923f0b12051f3e080b00d [WARN ] : SWUPDATE running : [read_lines_notify] : ---------------------------------------------- [WARN ] : SWUPDATE running : [read_lines_notify] : WARNING: Container image localhost/arm64v8/dashboard:latest was adde d in swu but immediately removed [WARN ] : SWUPDATE running : [read_lines_notify] : WARNING: Please use it in /etc/atmark/containers if you would like t o keep it [WARN ] : SWUPDATE running : [read_lines_notify] : ---------------------------------------------- [INFO ] : SWUPDATE running : [read_lines_notify] : swupdate triggering reboot!
armadillo:~# podman images REPOSITORY TAG IMAGE ID CREATED SIZE R/O
また、swuファイルは下記で作っています。
atmark@atde9:~/projects/mkswu/dashboard$ cat swu_dashboard.desc swdesc_option component=dashboard swdesc_option version=6 swdesc_embed_container "dashboard.tar" swdesc_files --extra-os --dest /etc/atmark/containers/ "dashboard.conf" atmark@atde9:~/projects/mkswu/dashboard$ cat dashboard.conf set_image dashboard:latest add_args -d set_restart always set_pod main_pod add_args --health-on-failure=restart add_args --health-cmd="/hc/healthcheck.sh" sh -c 'sleep 30; while podman healthcheck run dashboard; [ "$?" != 125 ]; do sleep 30; done' & atmark@atde9:~/projects/mkswu$ mkswu -o dashboard.swu ./dashboard/swu_dashboard.desc Enter pass phrase for /home/atmark/mkswu/swupdate.key: dashboard.swu を作成しました。
> はい、お手数ですが私も気になりますので、インストールログで dashboard.tar の内容を確認していただければ幸いです。
>
> 恐らく成功した最後のインストールでは「Loaded image: localhost/arm64v8/dashboard:lastest」と出力されたと思いますが、どうでしょうか。
今回は、「Loaded image: localhost/arm64v8/dashboard:lastest」と表示されています。
それと、今回podをswuファイルに入れて送るのをやめたのですが、リセット後各コンテナが起動していません。
バージョンの関係でしょうか?
armadillo:~# podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES armadillo:~#
> その場合は dashboard.tar の内容が変わったことになりますが、心当たりはありますか?
>
> これが問題でしたら、mkswu 実行時にアーカイブを展開して、tag がなければワーニングを出力させるようにしたいと思います。
>
>
> よろしくお願いします。
at_dominique.m…
minabaさん
マルティネです。
> 途中で色々試していたので、お送りしたログは確かにid指定で作ったtarでやった時のものだったかもしれません。
了解です。とりあえず先に書いたとおりのワーニングを追加しますので、また似たような問題があればすぐ分かるようになります。
> それで、申し訳ありませんが、一旦解決したように見えたのですが、やはり解決していません。
> 新たにバージョンアップしようとしたところ、下記のように消えてしまいます。
> [INFO ] : SWUPDATE running : [install_single_image] : Installing swdesc_embed_container dashboard.tar > [INFO ] : SWUPDATE running : [read_lines_notify] : Loaded image: localhost/arm64v8/dashboard:latest > [INFO ] : SWUPDATE running : [install_single_image] : Installing post_script > [INFO ] : SWUPDATE running : [read_lines_notify] : Removing unused containers > [WARN ] : SWUPDATE running : [read_lines_notify] : WARNING: Container image localhost/arm64v8/dashboard:latest was added in swu but immediately removed > [WARN ] : SWUPDATE running : [read_lines_notify] : WARNING: Please use it in /etc/atmark/containers if you would like to keep it
分かりにくいですが、これで swdesc_files の /etc/atmark/containers/dashboard.conf が書き込みされなかった(「installing swdesc_files ...」のメッセージがない)のと、アップデートが失敗してないので恐らく dashboard.conf もないように見えます。
一度成功したあとにまた CONTAINER_CLEAR を試しましたか?それでコンフィグファイルもなくなりますので、使う場合は必ずコンフィグも更新する必要があります。
/etc/atmark/containers/main_pod.conf も削除されましたと思いますのでそれも再び書き込んでください。
なお、インストール条件は使われているバージョンですが、--extra-os を使うことで dashboard 6 と extra_os.dashboard 6 が swu に入ってます。恐らくですが、/etc/sw-versions に extra_os.dashboard がすでに 6 以上の値になっていると思いますが、どうでしょうか?
バージョンの歴史は /var/at-log/atlog で確認できます。
バージョンをインストールできるように上げるか、/etc/sw-versions から dashboard + extra_os.dashboard の両方を消してみてから再びインストールしてみてください。
> 今回は、「Loaded image: localhost/arm64v8/dashboard:lastest」と表示されています。
> それと、今回podをswuファイルに入れて送るのをやめたのですが、リセット後各コンテナが起動していません。
> バージョンの関係でしょうか?
今のバージョンでワーニングが出力されますが、起動できるはずです。少なくともこの問題と関係ないと思います。
よろしくお願いします。
minaba
マルティネさん、
minabaです。
/etc/sw-versionsから下記を消去したところ、成功しました。
armadillo:~# cat /etc/sw-versions 省略 dashboard 6 extra_os.dashboard 11
[INFO ] : SWUPDATE running : [read_lines_notify] : Loaded image: localhost/arm64v8/dashboard:latest [INFO ] : SWUPDATE running : [install_single_image] : Installing swdesc_files --extra-os --dest /etc/atmark/containers/ dashboard.conf [INFO ] : SWUPDATE running : [install_single_image] : Installing post_script [INFO ] : SWUPDATE running : [read_lines_notify] : Removing unused containers [INFO ] : SWUPDATE running : [read_lines_notify] : swupdate triggering reboot!
armadillo:~# podman images REPOSITORY TAG IMAGE ID CREATED SIZE R/O localhost/arm64v8/dashboard latest 0452cc1b818b 44 hours ago 666 MB true armadillo:~# podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
続けて、main_podのconfファイルを入れました。
armadillo:~# swupdate -i main_pod.swu SWUpdate v2022.12_git20230414-r0 Licensed under GPLv2. See source distribution for detailed copyright notices. [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] : No base os update: copying current os over [INFO ] : SWUPDATE running : [read_lines_notify] : Waiting for btrfs to flush deleted subvolumes [INFO ] : SWUPDATE running : [install_single_image] : Installing swdesc_files --extra-os --dest /etc/atmark/containers/ main_pod.conf [INFO ] : SWUPDATE running : [install_single_image] : Installing post_script [INFO ] : SWUPDATE running : [read_lines_notify] : Removing unused containers [WARN ] : SWUPDATE running : [read_lines_notify] : Warning: Could not guess podman pod infra container name, continuing without one [WARN ] : SWUPDATE running : [read_lines_notify] : podman_start will probably require an internet to start pods [INFO ] : SWUPDATE running : [read_lines_notify] : swupdate triggering reboot!
気になるのは二つの[WARN ]です。
特に二つ目が気になったので、Ethernetを外して電源入れなおしてみましたが、無事ポッドもコンテナも起動ました。
このWarning(require an internet to start pods)はどういう意味でしょうか。
armadillo:~# podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2f2f1e077a76 localhost/podman-pause:4.3.1-1681198015 2 minutes ago Up 2 minutes ago 0.0.0.0:80->80/tcp 6f41de3f4e6f-infra 50efd8e7d3ab localhost/arm64v8/dashboard:latest ... 2 minutes ago Up About a minute ago (healt hy) 0.0.0.0:80->80/tcp dashboard armadillo:~# podman images REPOSITORY TAG IMAGE ID CREATED SIZE R/O localhost/podman-pause 4.3.1-1681198015 fb2b8d4b0edf 2 minutes ago 70.8 kB false localhost/arm64v8/dashboard latest 0452cc1b818b 45 hours ago 666 MB true
at_dominique.m…
minabaさん、
マルティネです。
> /etc/sw-versionsから下記を消去したところ、成功しました。
extra_os.dashboard のバージョンの問題でしたね。分かってよかったです。
分かればメッセージがないことで気づくことができましたが、今度のアップデートで「ほげほげをスキップしました」の info メッセージをたします。場合によっては普通の動作なのでワーニングにしませんが、それで少しわかりやすくなると思います。
いつも報告していただいてありがとうございます。
> [WARN ] : SWUPDATE running : [read_lines_notify] : Warning: Could not guess podman pod infra container name, continuing > without one > [WARN ] : SWUPDATE running : [read_lines_notify] : podman_start will probably require an internet to start pods
>
> 気になるのは二つの[WARN ]です。
> 特に二つ目が気になったので、Ethernetを外して電源入れなおしてみましたが、無事ポッドもコンテナも起動ました。
> このWarning(require an internet to start pods)はどういう意味でしょうか。
先ほどの「無視していい」ワーニングです。
このメッセージを実装した時の podman のバージョンでは pod のコンテナーイメージをダウンロードする必要がありましたが、podman 4.0 以降では不要になりましたので無視して大丈夫です。
それに気づかずにメッセージを表示したままでお手数をおかけしました(set_infra_image を指定して展開しても問題はありませんが、不要になったためしないことをおすすめします…マニュアルで間違ったコマンドを書いたのもまた申し訳ないですが…)
これも今月の mkswu アップデートで(podman のバージョンを確認した上で)表示しないことにします。
よろしくお願いします。
minaba
マルティネさん、
minabaです。
問題解決に協力いただきありがとうございました。
> extra_os.dashboard のバージョンの問題でしたね。分かってよかったです。
初回の失敗時にlocalhost/arm64v8/dashboardと/localhost/dashboardが
conflictして/localhost/arm64v8/dashboardを消したというようなメッセージが出ていた記憶があり、
あらためて/var/log/messagesを探したのですが、見つけられませんでした。
既に再現できないので余計な情報かもしれませんが、お伝えしておきます。
ところで、/var/log/messageにはswupdateのログが残っていません。
残っているのは、下記だけです。
armadillo:~# cat /var/log/messages |grep SWU Jun 29 18:02:11 armadillo user.err swupdate: FAILURE ERROR : SWUpdate *failed* ! Jun 29 18:05:35 armadillo user.err swupdate: FAILURE ERROR : SWUpdate *failed* ! Jul 4 10:33:41 armadillo user.err swupdate: FAILURE ERROR : SWUpdate *failed* ! Jul 4 13:42:16 armadillo user.err swupdate: FAILURE ERROR : SWUpdate *failed* ! Jul 5 13:23:19 armadillo user.err swupdate: FAILURE ERROR : SWUpdate *failed* ! armadillo:~# ls /var/log/swupdate/ last_update armadillo:~# cat /var/log/swupdate/last_update /dev/mmcblk2p1 1688539617
コマンドは下記をいつも使っていて、-l, -L等のオプションは付けていません。
ログを残すには何か設定が必要でしょうか?
armadillo:~# swupdate -i dashboard.swu
以上、よろしくお願いします。
at_dominique.m…
minabaさん
マルティネです。
> 初回の失敗時にlocalhost/arm64v8/dashboardと/localhost/dashboardが
> conflictして/localhost/arm64v8/dashboardを消したというようなメッセージが出ていた記憶があり、
> あらためて/var/log/messagesを探したのですが、見つけられませんでした。
> 既に再現できないので余計な情報かもしれませんが、お伝えしておきます。
場合によっては確かに間違えそうなので、こちらで確認します。
> ところで、/var/log/messageにはswupdateのログが残っていません。
> 残っているのは、下記だけです。
> Jun 29 18:02:11 armadillo user.err swupdate: FAILURE ERROR : SWUpdate *failed* !
swupdateログの共有の文字列は「SWU」ではなく、小文字の「swupdate」なので、grep をなおしてみてください。
「SWUpdate *failed*
」のメッセージだけで何ともいえませんので (前の失敗かもしれませんし、バージョンチェックで何もインストールしない場合も失敗扱いになりますので不具合なくても出力される場合もあります)、FAQ にかいてる様に「/!\
」で始まるエラーを確認する必要があります。
よろしくお願いします。
minaba
マルティネさん、
minabaです。
ログありました。もう少し慎重に見るべきでした。申し訳ありません。
最初に消えたのは以下のログのようです。
localhost/arm64v8/dashboardのイメージ名がありますし、
dashboard.confもインストールされているようなので、バージョンの問題ではなかったかもしれません。
これ以上、わかりませんがご参考までに。
Jul 3 17:59:37 armadillo user.info swupdate: RUN [read_lines_notify] : Loaded image: localhost/arm64v8/dashboard:latest Jul 3 17:59:37 armadillo user.info swupdate: RUN [install_single_image] : Installing swdesc_files --extra-os --dest /et c/atmark/containers/ dashboard.conf Jul 3 17:59:38 armadillo user.info swupdate: RUN [install_single_image] : Installing post_script Jul 3 17:59:38 armadillo user.info swupdate: RUN [read_lines_notify] : Removing unused containers Jul 3 17:59:39 armadillo user.err swupdate: FAILURE ERROR : sh: set_infra_imager: not found Jul 3 17:59:40 armadillo user.warn swupdate: RUN [read_lines_notify] : Warning: Could not guess podman pod infra contai ner name, continuing without one Jul 3 17:59:40 armadillo user.warn swupdate: RUN [read_lines_notify] : podman_start will probably require an internet t o start pods Jul 3 17:59:45 armadillo user.info swupdate: RUN [read_lines_notify] : 4f960eb2073b1b59918c3f1004bb22290b52954a980d4dc9 26d7240abb214a96 Jul 3 17:59:46 armadillo user.warn swupdate: RUN [read_lines_notify] : ---------------------------------------------- Jul 3 17:59:46 armadillo user.warn swupdate: RUN [read_lines_notify] : WARNING: Container image localhost/arm64v8/dashb oard:latest was added in swu but immediately removed Jul 3 17:59:46 armadillo user.warn swupdate: RUN [read_lines_notify] : WARNING: Please use it in /etc/atmark/containers if you would like to keep it Jul 3 17:59:46 armadillo user.warn swupdate: RUN [read_lines_notify] : ---------------------------------------------- Jul 3 17:59:47 armadillo user.info swupdate: RUN [read_lines_notify] : swupdate triggering reboot!
以上、よろしくお願いします。
at_dominique.m…
minabaさん
マルティネです。
> ログありました。もう少し慎重に見るべきでした。申し訳ありません。
> 最初に消えたのは以下のログのようです。
> localhost/arm64v8/dashboardのイメージ名がありますし、
> dashboard.confもインストールされているようなので、バージョンの問題ではなかったかもしれません。
> これ以上、わかりませんがご参考までに。
ログありがとうございます。
調べたところ、これはとても分かりにくいですが正しい動作だと思います(というのは、イメージを削除せずに再起動していたら、古いイメージでコンテナを起動していたところです)
確認の結果、domain/name と domain/sub/name の両方があった場合で、set_image に name だけを指定する場合に domain/name が利用されますので、利用されてない domain/sub/name (localhost/arm64v8/dashboard) が削除されます。
コンフィグに localhost/arm64v8/dashboard:latest を設定すれば問題なく利用できますので、これから/arm64v8の部分を残しましたらその方がいいかもしれません。
かなり頑張れば set_image の値にいくつかのイメージに使えることを確認できますが、arm64v8/dashboard や localhost/dashboard でも localhost/arm64v8/dashboard に使えますので、何か見落とす格率が多くてちょっと危ないと思います。
もう少し考えてみますが、それは現状維持になりそうです…
情報だけでもありがたいので、FAQ に追加していこうと思います。
よろしくお願いします。
at_dominique.m…
2023年7月4日 15時24分
minabaさん、
お世話になっています、
マルティネです。
> 下記FAQを参照したうえでの質問となります。
> https://armadillo.atmark-techno.com/faq/swupdate-troubleshooting-abos
> Container image immediately removed: イメージがインストールされない場合
>
> 現象としては、dashboardのイメージが更新されません。修正の仕方を教えてください。
swupdate インストール時の出力ではコンテナの名前ではなく、id で注意が出力されましたので、おそらくコンテナファイルにイメージ名がなかったと思います。
名前がないためコンテナのコンフィグが set_image で設定されたコンテナを使えないと同じく、swupdate のスクリプトで認識されなかったように見えます。
「dashboard.tar」はどういうコマンドで作成しましたか?
> イメージ名としてlocalhost/arm64v8/dashboardを使いたいと思っています。
> (他のコンテナはlocalhost/arm64v8/...で統一されていて、動作しています)
コンテナをアーカイブに保存するときにそのタグを使えば問題ないと思います。
> また、取説にあるswdesc_option CONTAINER_CLEARで一旦古いイメージを消去しようとしたのですが、
> 詳細な文法がわからずエラーとなりました。
> こちらも教えていただけると助かります。
今回はコンテナを更新しますので、CONTAINER_CLEAR を使う必要がないと思いますが、基本的に「swdesc_option CONTAINER_CLEAR」を自分の .descファイルに追加するだけです。
その出力は提供しなかったと思いますが、今のアップデートでは /etc/atmark/containers/dashboard.conf が含まれていて、そのコンテナに 「dashboard」というイメージが必要ですが dashboard.tar に含まれてないためエラーします(コンテナがないのでそのアップデートに切り替えてもコンテナを起動できません)。
CONTAINER_CLEAR しないままにインストールできるのは、前の dashboard イメージが使われているからです。
> (podman rmi e71f48c0e426 では、エラー:read only となり消せまでんでした。)
はい、ストレージが化けないように常に読み取り専用にしています。
新しいコンテナを無事に書き込めたら古いコンテナが削除されますので、これも不要になりますが、これも説明します。
コンテナを停止して、「abos-ctrl podman-rw rmi e71f48c0e426」で一時的に書き込み可能にして消すことができます。(「abos-ctrl podman-storage --disk && podman rmi e71f48c0e426 && abos-ctrl podman-storage --tmpfs」とだいたい同じです)
> atmark@atde9:~/projects/mkswu/dashboard$ cat dashboard.conf
> set_image dashboard:latest
> add_args -d
> set_restart always
> set_pod main_pod
ちなみに pod を使用していますので、マニュアルでは
k8s.gcr.io/pause:3.5
を使わせてそのコンテナも転送させていますが、podman のバージョン更新でそのコンテナが不要となりました。なお、マニュアルに「set_infra_imager」を間違って書いてましたが正しいコマンドは set_infra_image でした…申し訳ございません。
不要になりましたので、その行を消してください(残してもエラーを表示するだけなので害がありません)。
今月のマニュアルアップデートで削除します。「Warning: Could not guess podman pod infra container name」やインターネットが必要になるワーニングも無視してください、次の mkswu のバージョンで対応します。
よろしくお願いします。