JFFS2 パーティションから起動する Linux (3.4.31+) 組み込みシステムを使用しています。他のファイルの削除中に停電が発生すると、ファイルが破損するという問題が頻繁に発生します。プラットフォームのアップグレード手順中に発生します。以下は、アップグレードの簡単な手順です。
- アップグレード先のファイル システムの rootfs.squashfs イメージを含む tar.gz (他のファイルの中でも) をダウンロードし、イメージの md5 チェックサムを確認します。
- アップグレードの実行に必要な最小限のツール セットを備えた小さな JFFS2 パーティションから Linux を起動します。
- アップグレードする必要がある大きなパーティションをマウントします。
- 大きなパーティションに格納されている rootfs.squashfs をマウントします。
- 一部の移行されたデータ ファイル、rootfs.squashfs イメージなどを除いて、大きなパーティションからすべてのファイルを削除します。
- マウントされた rootfs.squashfs からすべてのファイルを大きなパーティションにコピーします
- 大きなパーティションから起動
上記の電力損失は 5. ステップで発生します。rootfs.squashfs は読み取り専用としてマウントされ、アップグレード中に変更されることはありません。このファイルが破損しても、デバイスの電源を入れた後、ファイルの md5 チェックサムが異なり、サイズは変更されず、イメージはマウントできますが、このイメージから一部のファイルを読み取ることができません。
このファイルが破損するのはなぜですか? JFFS2 はこの種のシナリオに対処すべきではないでしょうか? この状況から回復する方法はありますか?