組み込み Linux ベースのデバイスには、多くの場合、アプリケーションとシステム ファイルを更新するメカニズムが必要です。たとえば、USB ポートを備えた (ネットワークに接続されていない) ラボ機器は、USB スティックからソフトウェアの更新を取得できます。
スクリプトを実行してファイルをデバイスの内部フラッシュ メモリにコピーするのは簡単なことです。ただし、更新の途中でデバイスの電源が失われ、ブリックになってしまう危険性があります。
アプリケーション ディレクトリを複製し、1 つのコピーを更新し、古いディレクトリと新しいディレクトリをすばやく交換して障害ウィンドウを最小限に抑える余地があるため、アプリケーション ファイルの状況は少し簡単です。
カーネル ファイルとシステム ファイルはファイル システム全体に分散しているため、状況はより複雑です。
ファイル システムでハード リンクとソフト リンクを使用して、重要なファイルを特定しました。ファイルとアーカイブのハッシュを使用して、ファイルの整合性を検証します。更新されたファイル システムからの起動が失敗した場合にフォールバックを提供するために、カーネルで緊急 ramfs を使用することを検討しました。
この要件に対するあなたのアプローチは何ですか?