2

JFFS2 パーティションから起動する Linux (3.4.31+) 組み込みシステムを使用しています。他のファイルの削除中に停電が発生すると、ファイルが破損するという問題が頻繁に発生します。プラットフォームのアップグレード手順中に発生します。以下は、アップグレードの簡単な手順です。

  1. アップグレード先のファイル システムの rootfs.squashfs イメージを含む tar.gz (他のファイルの中でも) をダウンロードし、イメージの md5 チェックサムを確認します。
  2. アップグレードの実行に必要な最小限のツール セットを備えた小さな JFFS2 パーティションから Linux を起動します。
  3. アップグレードする必要がある大きなパーティションをマウントします。
  4. 大きなパーティションに格納されている rootfs.squashfs をマウントします。
  5. 一部の移行されたデータ ファイル、rootfs.squashfs イメージなどを除いて、大きなパーティションからすべてのファイルを削除します。
  6. マウントされた rootfs.squashfs からすべてのファイルを大きなパーティションにコピーします
  7. 大きなパーティションから起動

上記の電力損失は 5. ステップで発生します。rootfs.squashfs は読み取り専用としてマウントされ、アップグレード中に変更されることはありません。このファイルが破損しても、デバイスの電源を入れた後、ファイルの md5 チェックサムが異なり、サイズは変更されず、イメージはマウントできますが、このイメージから一部のファイルを読み取ることができません。

このファイルが破損するのはなぜですか? JFFS2 はこの種のシナリオに対処すべきではないでしょうか? この状況から回復する方法はありますか?

4

1 に答える 1