Lubuntuが/media/$USERNAME/COREELEC/
にSDカードをマウントしています
あるディレクトリから別のディレクトリにファイルをコピーして、名前を変更する必要があります。ただし、unmount
の後にmd5sum
(またはsha512sum
)をチェックして再度マウントすると、違います。
再現手順(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
2つのファイルのmd5チェックサムは、内容が異なる場合にのみ異なります。これは、cmp
またはdiff
コマンドと比較することで確認できます。
それらは、コピー操作が正しく機能しないいくつかの理由である可能性があります。
ディスクキャッシュがフラッシュされる前にSDカードを抜いてください。 diskctl を使用してみてください。
ファイルシステムの破損。カードの再フォーマットを試すことができます。
ハードウェア障害。
メディアがアンマウントされるまで、システムはすべてのデータを書き込みません。これは、システムが書き込みを制限しようとするため、リムーバブル(通常は低速でフラッシュメモリ)メディアでの一般的な動作です。
視覚的に、ファイルマネージャー(私がよく覚えている場合はPCManFM ...)がアンマウントプロセスを待つことについて警告していることに気付くことができます(LEDがある場合SDカードリーダー、それは地獄のように点滅します)
EDIT1:ファイルシステムキャッシュをフラッシュするsync
コマンドを使用して、私の理論を確認/証明できます