Armadilloフォーラム

ロールバックについて

uen2825

2024年6月6日 18時45分

お世話になっております。
下記フォーラムでロールバックについて説明されていますが
https://armadillo.atmark-techno.com/forum/armadillo/20202
fw_setenv upgrade_availableでロールバック停止することが分かりました。
これは一度実行すると有効でしょうか。
永続化のような作業は必要でしょうか。
ロールバック開始の際のコマンドもお教えください。
この辺りの説明がどこかにありましたら教えて頂きたいです。

コメント

at_dominique.m…

2024年6月7日 9時51分

uen2825さん

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

> 下記フォーラムでロールバックについて説明されていますが
> https://armadillo.atmark-techno.com/forum/armadillo/20202
> fw_setenv upgrade_availableでロールバック停止することが分かりました。

はい、upgrade_available の u-boot 環境変数を無効にすることで自動ロールバックが発生しなくなります。

> これは一度実行すると有効でしょうか。
> 永続化のような作業は必要でしょうか。

このコマンドは次のアップデートまで有効です。
swupdate で再びアップデートをインストールすると upgrade_available がまた設定されますので、完全に防ぎたい場合は /boot/uboot_env.d にファイルを作って「upgrade_available=」でアップデート時のu-boot の環境変数を変更できますが、もしこの設定でアップデート後に起動できなくなった場合は復帰できませんので、「fw_setenv」の方法を推奨します。

また、リンクしていただいたフォーラムにも説明しましたが、今月のアップデートではその「fw_setenv」を自動に行うようになりますので、それまでに手っ取り早い対応だけでよろしければ /etc/init.d/reset_bootcount の「fw_setenv bootcount」の後に「fw_setenv upgrade_available」を追加して persist_file で永続化していただければ大体同じ結果になります。
今月のアップデートでは abos-ctrl rollback-clone 等の調整も少し行いますが、それだけでも自動ロールバックを防ぐことができます。
本来でしたら Armadillo Base OS 側のファイルの編集を推奨しませんが、アップデートする予定のファイルですのでこのファイルで変更を行うとアップグレードで上書きされて対応が二重化されません。

> ロールバック開始の際のコマンドもお教えください。

すみません、この質問の意味が分かりません。
ロールバックを実際に行うコード(起動パーティションの設定変更)のことでしょうか?
再びロールバック可能にしたい場合に必要なコマンド(またはロールバックを可能にするコード)のことでしょうか?

> この辺りの説明がどこかにありましたら教えて頂きたいです。

大変申し訳ございません、こちらには一応少し説明されていますが、情報が全く足りていません:
https://manual.atmark-techno.com/armadillo-iot-a6e/armadillo-iotg-a6e_p…

今月は仕組みの見直しと合わせてマニュアルも見直しますので、もし急ぎでなければお待ちしていただければと思います。
すぐに情報が必要でしたら何でも回答しますので、聞いてください。

よろしくお願いします。

uen2825

2024年6月7日 14時03分

マルティネ様
詳しく説明頂きましてありがとうございます。

> > ロールバック開始の際のコマンドもお教えください。
>
> すみません、この質問の意味が分かりません。
> ロールバックを実際に行うコード(起動パーティションの設定変更)のことでしょうか?
> 再びロールバック可能にしたい場合に必要なコマンド(またはロールバックを可能にするコード)のことでしょうか?

分かりにくい質問、大変失礼いたしました。
再びロールバック可能にする場合のコマンドを教えて頂きたいです。

at_dominique.m…

2024年6月7日 14時26分

uen2825さん

マルティネです。

> 再びロールバック可能にする場合のコマンドを教えて頂きたいです。

了解しました。
その説明の前に、一つの注意点があります:
一度 upgrade_available の変数をクリアした場合は、B面(起動していない側)が起動可能になっているかどうかを把握できなくなりますので、このままのソフトウェアでロールバックして起動できない可能性があります。

そのため、現状でロールバック可能にするコマンドはあえて用意していませんが、いくつかの方法があります:

1/ 注意の上でただこのままにロールバック可能にする場合は upgrade_available の変数を設定すればいいです。「fw_setenv upgrade_available 1」で設定できます。
また、手動にロールバックしたい場合は「abos-ctrl rollback」では upgrade_available をチェックしていますが、「abos-ctrl rollback --force 」で強制的にロールバックできます(target の値は rollback が失敗するときに表示されます;危険なので force の場合は指定する必要があります)

2/ B面のソフトウェアを上書きしていい場合は「abos-ctrl rollback-clone」で現在面をコピーしてください。デフォルトで(/boot/uboot_env.d でロールバックが無効化されてなかった場合)はロールバックも再び有効になりますので、その後にロールバックの仕組みを確認できます。

よろしくお願いします。