私は追加のinitrd / initramfs /何も必要とせずにLinuxベースの組み込みシステム用のファームウェアアップデートメカニズムを想像しようとしています。読み取り専用でマウントされたルートを持つ実行中のシステムでは、ddを使用して新しいルートイメージ(セカンダリデータパーティションにあります)をコピーしました。
問題は、半分の時間が破損したルートファイルシステムで終わるということです。パーティションが読み取り専用であることを知っていて、再起動する前に同期していたため、これが発生する理由を理解できませんでした(/proc/sysrq-triggerに「b」を書き込んで再起動しました)。誰かが私に啓発してください。
ベストアンサー1
すでにマウントされているファイルシステムを上書きしています。ファイルシステムドライバがその内容を読み取ろうとするとすぐに問題が発生します。
新しいファームウェアを作成したら、他のものがパーティションを読み書きできないことを確認する必要があります。
問題を回避するために人々が通常行うことは、ブートローダを使用して新しいファームウェアをフラッシュするようです。通常、RAMに完全に存在するため、パーティションにアクセスする必要はありません。
編集する:もう1つのアプローチは、イメージファイルを最初のパーティションにフラッシュする目的で、2番目のパーティションに別の最小システムをインストールすることです。更新が期限切れになったら、イメージを正しい場所にコピーし、ブートローダを更新し(2番目のパーティションから起動し)、再起動します。イメージを作成したら、ブートローダをリセットして再起動します。