1

USB 経由で組み込みシステムを更新するために、単一の更新ファイルを顧客に提供する必要があります。システムはYoctoを使用して構築されています。USB 更新を実装する計画が実行可能かどうか、または明らかなはずの何かが欠けているかどうかに興味があります。

opkgはシステム上に存在しますが、それを使用するopkg updateにはプル元のリポジトリが必要です。私はネットワーク機能を持っていないので、レポ全体を USB ドライブに置く必要があります。単一のファイルを顧客に提供する必要があるため、レポは tar ファイルである必要があります。

手順

  1. USBドライブを差し込む
  2. udevルールはスクリプトを呼び出し、これは長いプロセスになるため、バックグラウンドにプッシュします (これを参照) 。
  3. レポ更新ファイルを un-tar します
  4. opkg update
  5. USB ドライブを取り外す可能性があることをユーザーに通知する

少なくとも大まかな観点からは、これは USB 経由で組み込みシステムを更新する良い方法のように思えますか? どのような落とし穴が存在する可能性がありますか?

4

3 に答える 3

2

あなたのユースケースはSWUpdateでカバーされています - 私のプロジェクト ( github.com/sbabic/swupdate )を見る価値があるかもしれません。単一のイメージ ファイルを使用した USB からのアップグレードはユース ケースの 1 つです。meta-swupdate (openembedded にリストされています) を使用して、すべてのアーティファクトを含む単一のイメージを生成できます。

于 2016-05-16T07:51:45.563 に答える
1

さて、どのような落とし穴が存在するかについて言えば、最大の落とし穴の 1 つは、プロセスの途中で停電になる可能性があります。その場合、どのように回復しますか?(答えは、作成している組み込みデバイスのタイプによって異なる場合があります)。(個人的には、パッケージ ベースのアップグレードではなく、完全なイメージ ベースのアップグレードに賛成です)。

tarball を使用したシナリオに関して、デバイスに解凍するのに十分なスペースがありますか? opkg リポジトリで tarball を配布する代わりに、リポジトリの ext2 または squashfs イメージなどを配布する方が賢明かもしれません。これにより、ループバック デバイスを使用して USB ドライブからマウントできるようになります。

それとは別に、ユーザーに仕事を伝える良い方法がある限り、あなたのアプローチはうまくいくはずです。主な問題は、アップグレード プロセスが中断された場合にどうするかです。それは事前に考えておくべきことです。

于 2015-07-25T15:56:49.120 に答える