web-dev-qa-db-ja.com

SDカードをアンマウントすると、ファイルのチェックサムが変更されます

Lubuntuが/media/$USERNAME/COREELEC/にSDカードをマウントしています

あるディレクトリから別のディレクトリにファイルをコピーして、名前を変更する必要があります。ただし、unmountの後にmd5sum(またはsha512sum)をチェックして再度マウントすると、違います。

  • SDカードを再度取り付けた後、チェックサムが異なるのはなぜですか?
  • 再び同じにするために私にできることはありますか?

再現手順(OSにSDカードが搭載されている場合)

ファイルをコピーし、元のファイルとコピーされたファイルの両方についてmd5sumを確認します。

$ # copy the file from the original directory to the desired directory
$ cp /media/$USERNAME/COREELEC/device_trees/gxm_q201_3g.dtb /media/$USERNAME/COREELEC/dtb.img
$ # checksum of the original file
$ md5sum /media/$USERNAME/COREELEC/device_trees/gxm_q201_3g.dtb 
fd97f3d36cbb53cbdd59b53603f45913  /media/$USERNAME/COREELEC/device_trees/gxm_q201_3g.dtb
$ # checksum of the file I copied
$ md5sum /media/$USERNAME/COREELEC/dtb.img 
fd97f3d36cbb53cbdd59b53603f45913  /media/$USERNAME/COREELEC/dtb.img

SDカードをアンマウントします

$ # check which drive to unmount
$ df -aTh | grep COREELEC
/dev/mmcblk0p1        vfat             512M  170M  343M  34% /media/$USERNAME/COREELEC
$ # unmount the SD card
$ umount /dev/mmcblk0p1

SDカードを手で抜き、オペレーティングシステムが自動的にマウントするのを待って、手で再度差し込みます。

次に、md5sumを確認します(チェックサムが異なりますを参照):

$ # checksum of the copied file (NOW DIFFERENT!)
$ md5sum /media/$USERNAME/COREELEC/dtb.img 
c8e06c372926719c0a0dac2d5b0f6ab5  /media/$USERNAME/COREELEC/dtb.img
$ # checksum of the original file (STILL THE SAME!)
$ md5sum /media/$USERNAME/COREELEC/device_trees/gxm_q201_3g.dtb
fd97f3d36cbb53cbdd59b53603f45913  /media/$USERNAME/COREELEC/device_trees/gxm_q201_3g.dtb
1
TPPZ

2つのファイルのmd5チェックサムは、内容が異なる場合にのみ異なります。これは、cmpまたはdiffコマンドと比較することで確認できます。

それらは、コピー操作が正しく機能しないいくつかの理由である可能性があります。

  1. ディスクキャッシュがフラッシュされる前にSDカードを抜いてください。 diskctl を使用してみてください。

  2. ファイルシステムの破損。カードの再フォーマットを試すことができます。

  3. ハードウェア障害。

2
saga

メディアがアンマウントされるまで、システムはすべてのデータを書き込みません。これは、システムが書き込みを制限しようとするため、リムーバブル(通常は低速でフラッシュメモリ)メディアでの一般的な動作です。

視覚的に、ファイルマネージャー(私がよく覚えている場合はPCManFM ...)がアンマウントプロセスを待つことについて警告していることに気付くことができます(LEDがある場合SDカードリーダー、それは地獄のように点滅します)


EDIT1:ファイルシステムキャッシュをフラッシュするsyncコマンドを使用して、私の理論を確認/証明できます

1
mattia.b89