Armadilloフォーラム

Armadillo-IoT A6E のUSBによる初回のSWUpdateが完了しない

yorikasa

2025年2月28日 15時26分

==========
製品型番:Armadillo-IoT A6E
Debian/ABOSバージョン:3.20.3-at.4
カーネルバージョン:
3G/LTE モジュール情報 (Debianのみ):
その他:

3.19のArmadilloの初回SWUpdateが可能なUSBをA6Eに接続しようとしたところ、購入したArmadilloのBaseOSのバージョンの方が新しいためか、SWUpdateに失敗してしまいます。
USBには、複数のswuファイルを配置しており、それぞれ以下のような順番でアップデートが実施できるようにしております。

1.BaseOSのアップデート及びアプリA用コンテナ及び関連ファイルのインストール
2.アプリB用コンテナ及び関連ファイルのインストール ※開発部隊が異なるため、1.に含めることが出来ないため別途インストールしています。
3.ロールバック時に戻ってしまわないように裏面へコピーを実施する

この場合、1つ失敗してしまうと後続のアップデートが上手くいかない認識なのですが、私の認識はあっておりますでしょうか?

出来れば購入したArmadilloのBaseOSのバージョンが新しい場合は、BaseOSのバージョンアップをスキップし、その他のアップデートを継続するということがしたいのですが、現状可能でしょうか?
都度、USBのBaseOSのバージョン等を最新にしUSBを作り直すべきなのかもしれませんが、開発したアプリ(コンテナ等を含む)のアップデートが無い状態で、USBを作り直すのも少々避けたいので何か回避策があればご教示いただけますと幸いです。

【/var/log/messages を監視しながら実施してみた際のログ】

[2025-02-19 18:24:51.145] armadillo:~# tail -f /var/log/messages 
[2025-02-19 18:24:53.959] Jan  1 09:09:04 armadillo auth.err sshd[2594]: error: maximum authentication attempts exceeded for root from 192.168.10.200 port 58192 ssh2 [preauth]
[2025-02-19 18:24:53.975] Jan  1 09:09:04 armadillo auth.info sshd[2594]: Disconnecting authenticating user root 192.168.10.200 port 58192: Too many authentication failures [preauth]
[2025-02-19 18:24:53.990] Jan  1 09:09:18 armadillo authpriv.debug login[1881]: pam_unix(login:auth): user [root] has blank password; authenticated without it
[2025-02-19 18:24:53.990] Jan  1 09:09:18 armadillo authpriv.notice login[1881]: pam_unix(login:account): expired password for user root (root enforced)
[2025-02-19 18:24:54.013] Jan  1 09:09:38 armadillo authpriv.notice login[1881]: pam_unix(login:chauthtok): password changed for root
[2025-02-19 18:24:54.013] Jan  1 09:09:38 armadillo authpriv.info login[1881]: pam_unix(login:session): session opened for user root(uid=0) by (uid=0)
[2025-02-19 18:24:54.028] Jan  1 09:09:38 armadillo authpriv.notice login[2680]: ROOT LOGIN  on '/dev/ttymxc2'
[2025-02-19 18:24:54.028] Jan  1 09:12:41 armadillo auth.info sshd[2965]: Failed password for root from 192.168.10.200 port 58230 ssh2
[2025-02-19 18:24:54.044] Jan  1 09:12:43 armadillo auth.info sshd[2965]: Failed password for root from 192.168.10.200 port 58230 ssh2
[2025-02-19 18:24:54.060] Jan  1 09:12:45 armadillo auth.info sshd[2965]: Failed password for root from 192.168.10.200 port 58230 ssh2
[2025-02-19 18:25:08.969] Jan  1 09:14:11 armadillo auth.info sshd[2965]: Received disconnect from 192.168.10.200 port 58230:11: authentication cancelled [preauth]
[2025-02-19 18:25:08.985] Jan  1 09:14:11 armadillo auth.info sshd[2965]: Disconnected from authenticating user root 192.168.10.200 port 58230 [preauth]
[2025-02-19 18:25:20.966] Jan  1 09:14:23 armadillo auth.info sshd[3121]: User atmark not allowed because account is locked
[2025-02-19 18:25:20.986] Jan  1 09:14:23 armadillo auth.err sshd[3121]: error: Could not get shadow information for NOUSER
[2025-02-19 18:25:20.986] Jan  1 09:14:23 armadillo auth.info sshd[3121]: Failed password for invalid user atmark from 192.168.10.200 port 58247 ssh2
[2025-02-19 18:25:23.977] Jan  1 09:14:25 armadillo auth.info sshd[3121]: Failed password for invalid user atmark from 192.168.10.200 port 58247 ssh2
[2025-02-19 18:25:27.973] Jan  1 09:14:30 armadillo auth.info sshd[3121]: Failed password for invalid user atmark from 192.168.10.200 port 58247 ssh2
[2025-02-19 18:25:47.978] Jan  1 09:14:49 armadillo kern.info kernel: [  889.865472] usb 1-1: new high-speed USB device number 2 using ci_hdrc
[2025-02-19 18:25:47.978] Jan  1 09:14:50 armadillo kern.info kernel: [  890.070165] usb-storage 1-1:1.0: USB Mass Storage device detected
[2025-02-19 18:25:47.994] Jan  1 09:14:50 armadillo kern.info kernel: [  890.080936] scsi host0: usb-storage 1-1:1.0
[2025-02-19 18:25:47.994] Jan  1 09:14:50 armadillo kern.notice kernel: [  890.110656] uas: module verification failed: signature and/or required key missing - tainting kernel
[2025-02-19 18:25:48.010] Jan  1 09:14:50 armadillo kern.info kernel: [  890.112147] usbcore: registered new interface driver uas
[2025-02-19 18:25:48.967] Jan  1 09:14:51 armadillo kern.notice kernel: [  891.126752] scsi 0:0:0:0: Direct-Access     I-O DATA USB Flash Disk   5.02 PQ: 0 ANSI: 0 CCS
[2025-02-19 18:25:48.983] Jan  1 09:14:51 armadillo kern.notice kernel: [  891.133046] sd 0:0:0:0: [sda] Attached SCSI removable disk
[2025-02-19 18:25:54.974] Jan  1 09:14:56 armadillo kern.notice kernel: [  896.717454] sd 0:0:0:0: [sda] 4124159 512-byte logical blocks: (2.11 GB/1.97 GiB)
[2025-02-19 18:25:54.992] Jan  1 09:14:56 armadillo kern.info kernel: [  896.718528] sda: detected capacity change from 0 to 2111569408
[2025-02-19 18:25:54.992] Jan  1 09:14:56 armadillo kern.info kernel: [  896.719612]  sda: sda1
[2025-02-19 18:26:44.999] Jan  1 09:15:46 armadillo user.notice swupdate-auto-update: Mounting sda1 on /mnt in private namespace
[2025-02-19 18:26:44.999] Jan  1 09:15:46 armadillo user.notice swupdate-auto-update: Trying update /mnt/01_initial_setup_package.swu
[2025-02-19 18:26:44.999] Jan  1 09:15:46 armadillo user.info swupdate: START Software Update started !
[2025-02-19 18:26:45.016] Jan  1 09:15:47 armadillo user.info swupdate: RUN [read_lines_notify] : Skipping install of component base_os 3.20.2-at.2 (has 3.20.3-at.4)
[2025-02-19 18:26:46.986] Jan  1 09:15:48 armadillo kern.info kernel: [  948.975122] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[2025-02-19 18:26:47.004] Jan  1 09:15:49 armadillo user.info swupdate: RUN [read_lines_notify] : No base os update: copying current os over
[2025-02-19 18:27:02.998] Jan  1 09:16:04 armadillo user.warn swupdate: RUN [read_lines_notify] : ----------------------------------------------
[2025-02-19 18:27:02.998] Jan  1 09:16:04 armadillo user.warn swupdate: RUN [read_lines_notify] : WARNING: CONTAINER_CLEAR requested: stopping all containers first
[2025-02-19 18:27:03.013] Jan  1 09:16:04 armadillo user.warn swupdate: RUN [read_lines_notify] : ----------------------------------------------
[2025-02-19 18:27:03.999] Jan  1 09:16:05 armadillo daemon.info avahi-daemon[1392]: Interface veth0.IPv6 no longer relevant for mDNS.
[2025-02-19 18:27:03.999] Jan  1 09:16:05 armadillo daemon.info avahi-daemon[1392]: Leaving mDNS multicast group on interface veth0.IPv6 with address fe80::9cd4:32ff:fe0b:34a8.
[2025-02-19 18:27:04.015] Jan  1 09:16:05 armadillo kern.info kernel: [  965.760836] podman0: port 1(veth0) entered disabled state
[2025-02-19 18:27:04.015] Jan  1 09:16:05 armadillo daemon.info avahi-daemon[1392]: Withdrawing address record for fe80::9cd4:32ff:fe0b:34a8 on veth0.
[2025-02-19 18:27:04.032] Jan  1 09:16:05 armadillo kern.info kernel: [  965.776333] device veth0 left promiscuous mode
[2025-02-19 18:27:04.049] Jan  1 09:16:05 armadillo kern.info kernel: [  965.776383] podman0: port 1(veth0) entered disabled state
[2025-02-19 18:27:04.049] Jan  1 09:16:05 armadillo daemon.info avahi-daemon[1392]: Interface podman0.IPv6 no longer relevant for mDNS.
[2025-02-19 18:27:04.065] Jan  1 09:16:05 armadillo daemon.info avahi-daemon[1392]: Leaving mDNS multicast group on interface podman0.IPv6 with address fe80::7c1e:5bff:fed8:ec35.
[2025-02-19 18:27:04.065] Jan  1 09:16:05 armadillo daemon.info avahi-daemon[1392]: Interface podman0.IPv4 no longer relevant for mDNS.
[2025-02-19 18:27:04.080] Jan  1 09:16:05 armadillo daemon.info avahi-daemon[1392]: Leaving mDNS multicast group on interface podman0.IPv4 with address 10.88.0.1.
[2025-02-19 18:27:04.096] Jan  1 09:16:05 armadillo daemon.info avahi-daemon[1392]: Withdrawing address record for fe80::7c1e:5bff:fed8:ec35 on podman0.
[2025-02-19 18:27:04.096] Jan  1 09:16:05 armadillo daemon.info avahi-daemon[1392]: Withdrawing address record for 10.88.0.1 on podman0.
[2025-02-19 18:33:25.459] ^C
 

==========

コメント

at_satoshi.ohta

2025年2月28日 16時43分

太田です。

>出来れば購入したArmadilloのBaseOSのバージョンが新しい場合は、BaseOSのバージョンアップをスキップし、その他のアップデートを継続するということがしたいのですが、現状可能でしょうか?

前のバージョンが最新であればスキップして次の SWU イメージをインストールするはずです。

armadillo:~# abos-ctrl podman-storage --tmpfs

を実行してコンテナイメージのストレージを eMMC から tmpfs に変更したのち、USB を挿入してみるとどうなりますでしょうか?

どうぞよろしくお願いいたします。

太田さん

ご確認ありがとうございました。

> 前のバージョンが最新であればスキップして次の SWU イメージをインストールするはずです。
申し訳ございません。
前のバージョンというのは、USBに含めているBaseOSのバージョンのことでしょうか?
また、スキップして次のSWUイメージをインストールということでしたら、BaseOSのアップデートに関する内容とそのほかのコンテナのアップデート等の内容を同じswuイメージに含めている場合、そのほかのコンテナのアップデートなどもスキップされてしまうのでしょうか?

> コンテナイメージのストレージを eMMC から tmpfs に変更したのち、USB を挿入してみるとどうなりますでしょうか?
購入直後は、tmpfsの状態だという認識なのですが、一度eMMCに変更後再度戻すということでしょうか?

前提のご説明が抜けていて申し訳ございません。
改めて実施した順番で記載します。

1.購入直後のArmadilloに電源を接続
2.キッティング用に用意したUSBを接続(ここでSWUpdateが実行される認識)
  rootユーザーのパスワードやその他ユーザーの設定などもSWUpdateで実施するようにしているため、
  特にログイン操作をするといったことはしていません。
3.2時間経過してもLEDの点滅が完了しなかったため、rootユーザーのパスワードを指定してログを確認
  成功時には15分から30分程度でLEDの点滅がなくなり、Armadilloの再起動がおこなわれておりました。
  ※rootユーザーのパスワード設定等を行う想定のため、2回目以降その部分でエラーになる可能性はあるのですが、
   現状そこまで進行していない認識です。

at_satoshi.ohta

2025年3月3日 19時03分

太田です。

申し訳ありません。
上記の私の回答は誤りです。こちらは mkswu のバグであることが分かりました。
mkswu の修正パッチを以下に示します。
初めに、ATDE のパッケージを最新に更新してください。

atmark@atde9:~$ sudo apt update && sudo apt upgrade

/usr/share/mkswu/scripts/pre_appfs.sh の podman_killall() の内容を以下のように修正してください。

podman_killall() {
        if [ -n "$(podman ps --format '{{.ID}}')" ]; then
                warning "$@"
-               podman_info stop -a
-               podman ps --format '{{.ID}}' \
-                       | timeout 20s xargs -r podman_info wait
+               podman_info kill -a -s SIGTERM
+               if ! podman ps --format '{{.ID}}' | timeout 5s xargs -r podman_info wait; then
+                       podman_info kill -a -s SIGKILL
+                       podman ps --format '{{.ID}}' | timeout 15s xargs -r podman_info wait
+               fi
                touch "$MKSWU_TMP/podman_containers_killed"
        fi
        podman_info pod rm -a -f

> 前のバージョンというのは、USBに含めているBaseOSのバージョンのことでしょうか?
> また、スキップして次のSWUイメージをインストールということでしたら、BaseOSのアップデートに関する内容とそのほかのコンテナのアップデート等の内容を同じswuイメージに含めている場合、そのほかのコンテナのアップデートなどもスキップされてしまうのでしょうか?

ここでいう前のバージョンというのは Armadillo 上の /etc/sw-versions に記載されているバージョンのことを指していました。
SWUpdate が成功すると、 reboot 後に /etc/sw-versions に記載のバージョンがインストールした SWU イメージに記載のバージョンに更新されます。

同じ SWU イメージでも swdesc_option component で指定したコンポーネントが違えば、それぞれのコンポーネント毎につけているバージョンと /etc/sw-versions に記載のバージョンを比較してインストールするかどうかを判断するはずです。

SWU イメージにおいてコンポーネントとバージョンがどのように指定されているかは、例えば以下のように SWU イメージの内容を mkswu --show で見てみるとわかると思います。

tmark@atde9:~/my_project_c$ mkswu --show development.swu 
# development.swu
 
# Built with mkswu 7.2
# signed by "atmark"
 
swdesc_files  --version extra_os.my_project 31 --extra-os swu/app  ★コンポーネントが extra_os.my_project でバージョンが 31
 
...省略
 
swdesc_command  --version extra_os.sshd 4 --extra-os 'mkdir -p /root/.ssh' 'ssh-keygen -A' 'rc-update add sshd default'  ★コンポーネントが extra_os.sshd でバージョンが 4
 
...省略

上記の例では /etc/sw-versions の extra_os.my_project と extra_os.sshd のバージョンを比較します。

どうぞよろしくお願い致します。

at_dominique.m…

2025年3月4日 8時59分

マルティネです。

横からすみません、背景だけ少し語らせていただきます。

> 上記の私の回答は誤りです。こちらは mkswu のバグであることが分かりました。

結果的に mkswu の不具合につながって確認不足ですが、podman のバグですね。太田さんが説明してくれた修正は mkswu 側の回避方法です。
(podman v5.2.1 または v5.3.0 以降で、別の mount namespace でコンテナを podman stop で停止させようとするとコマンドが終了しない。今朝報告しようとしましたが、v5.4.0 ですでに対策が入ってますので、このまま報告しません)

テスト不足でご迷惑をおかけして申し訳ございません。
また発生しないようにテストも追加しますので、これからも新しいバージョンを使っていただければと思います。

よろしくお願いします。

太田さん、マルティネさん

ご確認いただきありがとうございました。
少々私の認識があっているかの確認のため整理させてください。

今回のSWUpdateの失敗については、BaseOSのバージョンが新しいArmadilloに対して、古いBaseOSのSWUイメージを利用してアップデートを行おうとしたことが原因と思っていたが、調査していただいた結果、podman側の問題がありコンテナを停止するコマンドが正しく実行できないため失敗していたのが原因だった。
こちらは、v5.4.0のpodmanでは既に対策されており、新しいArmadilloを利用する場合は問題がないが、購入時期によっては、podmanのバージョンが上がっていない可能性があるため、太田さんよりご提示いただいた修正を行いSWUイメージを作成することで回避が可能となっている。

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

at_dominique.m…

2025年3月4日 14時22分

マルティネです。

> 今回のSWUpdateの失敗については、BaseOSのバージョンが新しいArmadilloに対して、古いBaseOSのSWUイメージを利用してアップデートを行おうとしたことが原因と思っていたが、調査していただいた結果、podman側の問題がありコンテナを停止するコマンドが正しく実行できないため失敗していたのが原因だった。

はい。
本来なら、古い mkswu で生成した物でも、新しい Armadillo Base OS でもインストールできます。
今の swu でも、3月にリリースする Armadillo Base OS でしたら再びインストール可能となります。

不具合をこちらで確認できなかったことで迷惑をおかけしました。
報告感謝しています。

> こちらは、v5.4.0のpodmanでは既に対策されており、新しいArmadilloを利用する場合は問題がないが、購入時期によっては、podmanのバージョンが上がっていない可能性があるため、太田さんよりご提示いただいた修正を行いSWUイメージを作成することで回避が可能となっている。

すみません、私の説明が下手でした。
podman v5.4.0 でも対応は入っていますが、Armadillo Base OS で podman 5.4 をすぐ利用する予定はありませんので、mkswu でも修正します。
(太田さんの提案どおりを mkswu パッケージに入れます)

なので、CONTAINER_CLEAR に関しては、以下の mkswu バージョンで生成された swu と abos バージョンの組み合わせがあります:
* mkswu <= 7.2, 初期 < abos <= 3.20.3-at.3: インストール可能
* mkswu <= 7.2, 3.20.3-at.4 <= abos < 3.21.3-at.2 (podman 5.2.x で対策入ってないバージョン): インストールが固まる
* mkswu >= 7.3, どの abos バージョン: インストール可能

(mkswu 7.3 はその修正を入れて明日リリース予定です)

不具合が戻らないようにテストも追加しますが、出荷状態で問題のあるバージョンになる可能性はあるため新しい mkswu で swu の再生成を推奨しています。

よろしくお願いします。

マルティネさん

組み合わせなどの詳しいご説明ありがとうございました。
mkswuについて、更新後改めて確認させていただきます。

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