現在、以下のようにTARアーカイブをSDカードに抽出します。
tar xf ${ROOT}/rootfs.tar -C /cynox/${DRIVE}/${TARGET}
注:rootfs.tarには組み込みLinuxシステム用のファイルが含まれています。これらのシステムの中には、SD カードにある種のデータ破損が発生します。これにより、ファイルの損失、ファイルの内容の破損などが発生し、組み込みシステムが正常に動作しないか起動できなくなる可能性があります。これはSDカードの作成中に発生する問題とは無関係である可能性が高いですが、完全に確認するにはこの方向でも調査する必要があります。
後でSDカードの内容とソースTARの内容を比較する最良の方法は何ですか?
Linuxで実用的かどうかはわかりませんが、思い浮かぶのは
- SDカードから新しいアーカイブを作成し、両方のアーカイブのMD5を比較します(または自然に違いますか?)
- 他の場所からソースTARを抽出し、各ファイルのMD5を計算し、ファイルごとに比較します(すべてのフォルダ/ファイルをクロールすることは可能ですか?)
- SDカードの内容とTARファイルの圧縮内容を1つずつ直接比較するには?
- フォルダ構造、ファイル/フォルダ権限などの特別な検証が必要ですか?
私はLinuxがこのタスクにどのような可能性を提供しているのかわからないので、可能であればアドバイス、正しい方向のアドバイス、および例に感謝します。
答え1
同じファイルが得られたことを確認するには、tar
次の手順を実行できます(ここではGNUを使用tar
)。
cd /where/it/was/extracted &&
tar tf /path/to/file.tar |
tar -T - --no-recursion -cf - |
cmp - /path/to/file.tar
所有権と時間を含むコンテンツとメタデータを比較します。たとえば、ファイルをroot
。
tar
また、ファイルを生成したtar
のと同じ実装を使用する必要があります。
答え2
各ファイルのチェックサムを比較します。
まず、rootfs
フォルダに次のコマンドを実行します。
rootfs# find . -type f -print0 | xargs --null sha1sum --binary > ../rootfs.sum
次に、targetfs
フォルダ内の各ファイルを確認します。
targetfs# sha1sum --check <PATH_TO_SUM_FILE> | grep FAILED