Armadilloフォーラム

Armadillo-IoT ゲートウェイ A6E 2面持ち(起動面が、古い面に変更される)

ftokioka

2024年5月16日 14時28分

Armadillo-Iot A6Eを使用しております。
当初カーネルverを197を使用しておりました。その後、swupdateを使用して、USBからアップデートして、
更新して、カーネルverを209になり、動作しておりました。
どのタイミングかが不明ですが、verを197のカーネルが動作している現象が発生しています。
・197に先祖返りする原因が何かあるか?
・この事象が発生したときに、何か原因調査する方法があるか?
・不具合が解消されているなど、不具合報告はないか?
この情報だけだと、不明かと思いますが、現象発生時に必要な取得情報があれば、ご連絡お願いします。

コメント

at_dominique.m…

2024年5月17日 12時52分

ftokiokaさん

お世話になっています、
マルティネです。

> 当初カーネルverを197を使用しておりました。その後、swupdateを使用して、USBからアップデートして、
> 更新して、カーネルverを209になり、動作しておりました。
> どのタイミングかが不明ですが、verを197のカーネルが動作している現象が発生しています。
> ・197に先祖返りする原因が何かあるか?
> ・この事象が発生したときに、何か原因調査する方法があるか?

ロールバックが起きたと思われます。
ロールバックの原因が二つあります:
* 何かの直接な変更(persist_file 等)でブートローダーが Linux を起動できなかった場合
* 3回連続にブートローダーに入って、Linux のユーザーランドを最後まで起動できなかった場合
* 手動に「abos-ctrl rollback」コマンドを実行した場合

どの場合でも、/var/at-log/atlog に記録がありますので、ご確認をいただければと思います。

> ・不具合が解消されているなど、不具合報告はないか?

再び「abos-ctrl rollback」を実行すると最新の面に戻りますが、また発生しないように対策が必要だと思われます。
アップデートして正常に動作した場合は以下の二つの方法で対応してください:
* 「abos-ctrl rollback-clone」コマンドで B 面を最新に更新して、問題があった場合に同じバージョンになりますので影響のないことになります。
* 「fw_setenv upgrade_available」で B 面をロールバック対象から外します。その場合は起動に問題が発生してもロールバックしないようになります。

このいずれのコマンドを各アップデートの後に実行する必要があります。/etc/local.d/check.start 等にスクリプトを追加して、コンテナの動作確認した後に実行する形を想定していますが、そのあたりのドキュメンテーション(例等)がありませんので、何か分からないことがあれば聞いてください。

お手数をおかけして申し訳ございませんが、よろしくお願いいたします。

ftokioka

2024年5月20日 19時29分

> ftokiokaさん
>
> お世話になっています、
> マルティネです。
>
> > 当初カーネルverを197を使用しておりました。その後、swupdateを使用して、USBからアップデートして、
> > 更新して、カーネルverを209になり、動作しておりました。
> > どのタイミングかが不明ですが、verを197のカーネルが動作している現象が発生しています。
> > ・197に先祖返りする原因が何かあるか?
> > ・この事象が発生したときに、何か原因調査する方法があるか?
>
> ロールバックが起きたと思われます。
> ロールバックの原因が二つあります:
> * 何かの直接な変更(persist_file 等)でブートローダーが Linux を起動できなかった場合
> * 3回連続にブートローダーに入って、Linux のユーザーランドを最後まで起動できなかった場合
> * 手動に「abos-ctrl rollback」コマンドを実行した場合
>
> どの場合でも、/var/at-log/atlog に記録がありますので、ご確認をいただければと思います。
A6-Eでありませんが、同様にArmadillo 640でも同様な現象が発生しました。
その際のログは、下記となります。(但し、どの時に発生したかが、不明です)
このログで、何かわかりますでしょうか?
cat /var/atlog/at-armadillo:~# cat /var/at-log/armadillo:~# cat /var/at-log/atlog
u-boot-dtb.imx 2097152 e72281662054aa21
baseos-600-3.19.1-at.2.img 314572800 932649cd75003899
installer.conf 9144a9d2941e1290
base_os 3.19.1-at.2
boot 2020.4-at20
Jan 1 09:14:20 armadillo NOTICE swupdate: Installed update to /dev/mmcblk0p2: extra_os.initial_setup: unset -> 4
Jan 1 09:19:57 armadillo NOTICE swupdate: Installed update to /dev/mmcblk0p1: extra_os.MBOX_1401A_640_image: unset -> 5.78.1
Jan 1 09:00:06 armadillo NOTICE fsck_atlog: Booting after unclean shutdown
Jan 1 09:00:06 armadillo NOTICE fsck_atlog: Booting after unclean shutdown
Jan 1 09:00:06 armadillo NOTICE fsck_atlog: Booting after unclean shutdown
Jan 1 09:00:06 armadillo NOTICE fsck_atlog: Booting after unclean shutdown
Jan 1 09:00:06 armadillo NOTICE fsck_atlog: Booting after unclean shutdown
Jan 1 09:00:06 armadillo NOTICE fsck_atlog: Booting after unclean shutdown
Jan 1 09:00:06 armadillo NOTICE fsck_atlog: Booting after unclean shutdown
Jan 1 09:00:06 armadillo NOTICE fsck_atlog: Booting after unclean shutdown
Jan 1 09:00:06 armadillo NOTICE fsck_atlog: Booting after unclean shutdown
Jan 1 09:00:06 armadillo NOTICE fsck_atlog: Booting after unclean shutdown
Jan 1 09:00:06 armadillo NOTICE fsck_atlog: Booting after unclean shutdown
Jan 1 09:00:06 armadillo NOTICE fsck_atlog: Booting after unclean shutdown
0 00:00:00 armadillo WARNING uboot: Counted 3 consecutive unfinished boots
0 00:00:00 armadillo WARNING uboot: Rolling back to mmcblk0p2
0 00:00:00 armadillo WARNING uboot: Counted 3 consecutive unfinished boots
0 00:00:00 armadillo WARNING uboot: Rolling back to mmcblk0p1
0 00:00:00 armadillo WARNING uboot: Counted 3 consecutive unfinished boots
0 00:00:00 armadillo WARNING uboot: Rolling back to mmcblk0p2
Jan 1 09:00:05 armadillo NOTICE fsck_atlog: Booting after unclean shutdown
Jan 1 09:00:05 armadillo NOTICE fsck_atlog: Booting after unclean shutdown
0 00:00:00 armadillo WARNING uboot: Counted 3 consecutive unfinished boots
0 00:00:00 armadillo WARNING uboot: Rolling back to mmcblk0p1
0 00:00:00 armadillo WARNING uboot: Counted 3 consecutive unfinished boots
0 00:00:00 armadillo WARNING uboot: Rolling back to mmcblk0p2
0 00:00:00 armadillo WARNING uboot: Counted 3 consecutive unfinished boots
0 00:00:00 armadillo WARNING uboot: Rolling back to mmcblk0p1
Jan 1 09:00:05 armadillo NOTICE fsck_atlog: Booting after unclean shutdown
0 00:00:00 armadillo WARNING uboot: Counted 3 consecutive unfinished boots
0 00:00:00 armadillo WARNING uboot: Rolling back to mmcblk0p2
0 00:00:00 armadillo WARNING uboot: Counted 3 consecutive unfinished boots
0 00:00:00 armadillo WARNING uboot: Rolling back to mmcblk0p1
0 00:00:00 armadillo WARNING uboot: Counted 3 consecutive unfinished boots
0 00:00:00 armadillo WARNING uboot: Rolling back to mmcblk0p2
Jan 1 09:00:06 armadillo NOTICE fsck_atlog: Booting after unclean shutdown
0 00:00:00 armadillo WARNING uboot: Counted 3 consecutive unfinished boots
0 00:00:00 armadillo WARNING uboot: Rolling back to mmcblk0p1
Jan 1 09:00:06 armadillo NOTICE fsck_atlog: Booting after unclean shutdown
0 00:00:00 armadillo WARNING uboot: Counted 3 consecutive unfinished boots
0 00:00:00 armadillo WARNING uboot: Rolling back to mmcblk0p2
Jan 1 09:00:05 armadillo NOTICE fsck_atlog: Booting after unclean shutdown
Jan 1 09:00:06 armadillo NOTICE fsck_atlog: Booting after unclean shutdown
armadillo:~#
armadillo:~#
armadillo:~#

> > ・不具合が解消されているなど、不具合報告はないか?
>
> 再び「abos-ctrl rollback」を実行すると最新の面に戻りますが、また発生しないように対策が必要だと思われます。
> アップデートして正常に動作した場合は以下の二つの方法で対応してください:
> * 「abos-ctrl rollback-clone」コマンドで B 面を最新に更新して、問題があった場合に同じバージョンになりますので影響のないことになります。
> * 「fw_setenv upgrade_available」で B 面をロールバック対象から外します。その場合は起動に問題が発生してもロールバックしないようになります。
問題が発生した内容は、/var/at-log/atlog で、記載があるとのことですが、どの情報から、最新の面に戻すかを教えてください。
その際に「abos-ctrl rollback-clone」コマンドで両方が更新するということでよいでしょうか?

> このいずれのコマンドを各アップデートの後に実行する必要があります。/etc/local.d/check.start 等にスクリプトを追加して、コンテナの動作確認した後に実行する形を想定していますが、そのあたりのドキュメンテーション(例等)がありませんので、何か分からないことがあれば聞いてください。

本件は、今後、u-bootで修正されたりはできないのでしょうか?
よろしくお願いいたします。

at_dominique.m…

2024年5月21日 9時01分

ftokiokaさん

マルティネです。

> A6-Eでありませんが、同様にArmadillo 640でも同様な現象が発生しました。

ABOS 世代の製品はどれも同じ仕様です。

> その際のログは、下記となります。(但し、どの時に発生したかが、不明です)

何回か発生しましたね。

このメッセージです:
> 0 00:00:00 armadillo WARNING uboot: Counted 3 consecutive unfinished boots
> 0 00:00:00 armadillo WARNING uboot: Rolling back to mmcblk0p2

3回連続に起動できなかったため他面にロールバックしました

> Jan 1 09:00:06 armadillo NOTICE fsck_atlog: Booting after unclean shutdown

(ちなみにこちらは、linux 起動中に電源を落として、次の起動に出力されるメッセージです)

> > 再び「abos-ctrl rollback」を実行すると最新の面に戻りますが、また発生しないように対策が必要だと思われます。
> > アップデートして正常に動作した場合は以下の二つの方法で対応してください:
> > * 「abos-ctrl rollback-clone」コマンドで B 面を最新に更新して、問題があった場合に同じバージョンになりますので影響のないことになります。
> > * 「fw_setenv upgrade_available」で B 面をロールバック対象から外します。その場合は起動に問題が発生してもロールバックしないようになります。
>
> 問題が発生した内容は、/var/at-log/atlog で、記載があるとのことですが、どの情報から、最新の面に戻すかを教えてください。

/var/at-log/atlog は解析用のログですので、コマンドを実行する物ではありません。ここはただ「3回連続の起動失敗によるロールバック」が発生したかどうかを確認したかっただけです。
コマンドで戻りたい場合は、abos-ctrl status でワーニングが出力された場合に手動 rollback (abos-ctrl rollback) を起こせば戻れますが、助記の説明はこの問題がそもそも発生しない対策ですので、そういう「最新の面に戻す」実装は不要です。

> その際に「abos-ctrl rollback-clone」コマンドで両方が更新するということでよいでしょうか?

この「その際」がよく分かりませんでしたので、念のために言い直してみます。

「abos-ctrl rollback-clone」を実行すると、現在起動中の面を他面にコピーしますので、それ以降にロールバックが発生しても影響がありません。
一方、「fw_setenv upgrade_available」は他面をロールバック対象から外しますので、起動が失敗してもロールバックすることはなくなります。

どちらかのコマンドでも、通常に起動した後に、自分のアプリケーションに問題がないかを判断できた際に実行するとこの問題を解決できます。
(/etc/local.d のスタートスクリプトはコンテナを起動した後に実行されますので、そちらで動作確認はできます。どちらのコマンドを何回か実行しても問題ありませんので、「アップデート直後」と関係なく起動する度に実行するといいかと思います)

> > このいずれのコマンドを各アップデートの後に実行する必要があります。/etc/local.d/check.start 等にスクリプトを追加して、コンテナの動作確認した後に実行する形を想定していますが、そのあたりのドキュメンテーション(例等)がありませんので、何か分からないことがあれば聞いてください。
>
> 本件は、今後、u-bootで修正されたりはできないのでしょうか?

分かりにくい実装と、ドキュメンテーションも不足しているところで大変お手数をおかけして申し訳ございませんが、この動作は不具合ではありません。
u-boot で修正することはないと思われますが、このままでは他のお客様にも迷惑をかけつづけますのでおっしゃる通りに何かしたいです。

マニュアルの説明や例を追加するのは当たり前ですが、ソフトウェア的にどうするかはまだ検討中ですのでもう少しお待ちいただければ幸いです。
すでに対応を実装していただいたお客様もいらっしゃいますので、新規インストールの際のデフォルトの変更だけか具体的にどういう対応をするかを決めたらまたご連絡させていただきます。

よろしくお願いします。

at_dominique.m…

2024年5月23日 18時04分

ftokiokaさん

お待たせしました、
マルティネです。

> > 本件は、今後、u-bootで修正されたりはできないのでしょうか?
>
> 分かりにくい実装と、ドキュメンテーションも不足しているところで大変お手数をおかけして申し訳ございませんが、この動作は不具合ではありません。
> u-boot で修正することはないと思われますが、このままでは他のお客様にも迷惑をかけつづけますのでおっしゃる通りに何かしたいです。
>
> マニュアルの説明や例を追加するのは当たり前ですが、ソフトウェア的にどうするかはまだ検討中ですのでもう少しお待ちいただければ幸いです。
> すでに対応を実装していただいたお客様もいらっしゃいますので、新規インストールの際のデフォルトの変更だけか具体的にどういう対応をするかを決めたらまたご連絡させていただきます。

実装については以下の変更を考えています:
* アップグレード直後は今までどおりロールバック可能(今までどおり、アップデート直後に起動できなかった場合はアップデート前の状態に戻ります)
* それ以外のブートはデフォルトで自動ロールバック不可能(abos-ctrl rollback コマンドだけ可能、自動ロールバックだけ無効になる)
* アップデート後に abos-ctrl rollback-clone を実行した場合は再びロールバック可能(今までどおり)
* アップデート後に fw_setenv upgrade_available でロールバックを無効にした場合も今までどおりに無効になります。

細かいところの確認やマニュアルのアップデートもありますので、 6月末のアップデートになります。

それまでに何かの対応を入れた場合は動作に影響ありませんので、このままに対応を実装していただければと思います。

大変お手数ですがよろしくお願いします。
何か気になる点がございましたらまたご連絡ください。