Armadilloフォーラム

node-eyeを利用したArmadillo-IoT G3のOSアップデートについて

nko0012

2022年10月18日 10時05分

お世話になっております。
node-eyeを使ってArmadilloのOSアップデート機能を提供することを検討しております。

【背景】
現在、当方でカスタマイズしたインストールディスク(自前のソフトウェアや証明書などを入れた状態)を作成し、それをSDカードに焼き、Armadilloにインストールしてお客様に提供しようと考えています。
お客様提供後は定期的に自前のソフトウェアをリモートアップデートするような機能も入れ込む想定でいます。

【質問】
①node-eyeを使ったArmadilloのOSアップデートではルートファイルシステムの更新もできますか?
②①がYesの場合、全体の更新や一部パッケージのみの更新等の設定は可能ですか?

よろしくお願いいたします。

コメント

at_syunya.ohshio

2022年10月18日 11時27分

大塩です。

以下ご質問に回答致します。

> ①node-eyeを使ったArmadilloのOSアップデートではルートファイルシステムの更新もできますか?
Debian GNU/Linux ルートファイルシステム の更新をすることが可能です。
製品マニュアル「Debian GNU/Linux ルートファイルシステムをビルドする」を参考に、カスタマイズされたルートファイルシステムをビルドしていただき、作成されたファイルを node-eye の「ファームウェアアップデート」機能のユーザーランドに指定することでアップデートできます。

> ②①がYesの場合、全体の更新や一部パッケージのみの更新等の設定は可能ですか?
node-eye のアップデート機能は、指定されたカーネル/ユーザーランドの全体更新にのみ対応しております。
そのため、差分アップデートはできません。

以上です。

nko0012

2022年10月18日 14時35分

お返事ありがとうございます。
追加で教えてください。

【追加質問】
すでに運用されているAramadilloのOSアップデートをnode-eyeを活用して行った場合、全体更新ということですので、アップデート前に存在していた証明書やソフトも上書きされる認識で合ってますでしょうか?

【背景】
お客様先にArmadilloを提供後、お客様に認証情報等を入力してもらうことで、お客様ごとの証明書してArmadillo内に保持させることを想定しています(この証明書はインストールディスク内に事前に入れる証明書とは異なるユーザーユニークな証明書)
部分アップデートが可能であれば、工夫したらお客様用の証明書は残せるかなと思っていたのですが、全体更新となると、書き換えを想像しており上記の運用は難しいのかな?と思った次第です。

よろしくお願いいたします。

at_syunya.ohshio

2022年10月18日 15時31分

大塩です。

> すでに運用されているAramadilloのOSアップデートをnode-eyeを活用して行った場合、全体更新ということですので、アップデート前に存在していた証明書やソフトも上書きされる認識で合ってますでしょうか?
正確には、アップデートは以下のような処理が行われます。
・Linuxカーネルをアップデートする場合
 eMMCパーティション1に設置している「Linux カーネルイメージ/Device Tree Blob」の各ファイルが置き換わる
・Debian GNU/Linuxルートファイルシステム(ユーザーランド)をアップデートする場合
 eMMCパーティション2が指定したユーザーランドに更新される
eMMCメモリマップについては、製品マニュアル「ソフトウェア構成」をご確認ください。

背景に記載されているような運用をする場合、ユーザーユニークな証明書をユーザーランドのパーティションに置いている場合は上書きされてしまいます。
そのため、それ以外の領域や外部の領域(SDカード等)に保存してやれば消えることは無いはずです。
充分な動作確認の上、ご検討ください。

以上です。

nko0012

2022年10月20日 9時20分

ご丁寧に解説いただきありがとうございます。大分と理解が進みました。
ルートファイルシステムをアップデートする場合は上書きになるので、残しておきたいファイル等はどこかに退避させておく必要があるということですね。
最後に一点だけ教えてください。
node-eyeでアップデートを行う場合、SDカードは必要になりますでしょうか?

よろしくお願いいたします。

at_syunya.ohshio

2022年10月20日 14時54分

大塩です。

> 最後に一点だけ教えてください。
> node-eyeでアップデートを行う場合、SDカードは必要になりますでしょうか?
node-eye アップデートにSDカードは必要ありません。

以上です。

satoshi.sa.aoki

2022年10月25日 11時37分

お世話になっております。

Node-eyeでは、ルートファイルシステムの置き換えがSDカードなどが不要でできるということかと思いますが、

以下の記事を見ますと、マニュアル「ルートファイルシステムの書き換え」はできませんと書かれております。apt-getコマンドを利用してくださいと。

https://armadillo.atmark-techno.com/blog/7370/3523

Node-eyeはどのようにしてルートファイルシステムの置き換えを行っているのでしょうか?

よろしくお願いします。

at_koseki

2022年10月25日 11時51分

古関です。

initramfsを起動してルートファイルシステムを書き換えています。

SDカードを使う場合(インストールディスク)ではSD上に構築したルートファイルシステムで起動し
eMMC上のルートファイルシステムを初期化、書き換えを行っています。

node-eyeの場合、以下のような流れで書き換えを行います。

* eMMC上のDebianで起動しているとき
リモートアップデートの要求を受ける
ルートファイルシステムのアーカイブを一度ダウンロード
再起動

* initramfs(RAMDISK上のユーザーランド)で起動
eMMC上のルートファイルシステム初期化
ダウンロードしたアーカイブを展開
再起動してeMMC上のDebianで起動

satoshi.sa.aoki

2022年10月26日 10時59分

お世話になっております。

ご回答ありがとうございます。
Node-eyeではinitramfsを起動してルートファイルシステムを置き換えている旨、理解しました。

以下の記事では、ルートファイルシステムを丸ごと置き換えすることを推奨していないように見えますが、
Node-eyeではinitramfsを利用して丸ごと置き換えしています。この辺の考え方はどう考えたらよいのでしょうか?
https://armadillo.atmark-techno.com/blog/7370/3523

例えば、apt-getコマンドだけではアップデートできるファイルに不足があるのでNode-eyeのやり方を推奨なのでしょうか?
よろしくお願いします。

at_koseki

2022年10月28日 15時51分

古関です。

> 以下の記事では、ルートファイルシステムを丸ごと置き換えすることを推奨していないように見えますが、
> Node-eyeではinitramfsを利用して丸ごと置き換えしています。この辺の考え方はどう考えたらよいのでしょうか?
リモートで丸ごと書き換えを実行し(アップデート中の停電などで)失敗した場合、
遠隔地にある個体が起動できなくなったり、
ネットワーク接続できなくなったりするリスクがあります。

結果、システムが停止、現地回収を行ったりなどが必要になります。
このため通常は推奨しておりません。

一方、node-eyeでは、一括アップデートに失敗した場合
リカバリブートでネットワークにつながるところまでは戻りますので、
そこからリモートによる復旧作業が可能となります。

また、node-eyeには差分アップデート機能は標準ではありませんが、
任意コマンド実行機能をカスタムすることで対応はできます。

お客様で独自にapt repoにdebianパッケージを公開し、
任意コマンド実行でapt update/installする運用です。

よろしくお願いいたします。