Mount

解除安裝 SD 卡使文件校驗和更改

  • November 4, 2019

我有一張 Lubuntu 安裝的 SD 卡/media/$USERNAME/COREELEC/

我需要將文件從一個目錄複製到另一個目錄並重命名。但是,如果我在它之後檢查md5sum(or sha512sum)unmount並再次安裝它,那就不同了。

  • 為什麼再次掛載SD卡後校驗和不一樣?
  • 我能做些什麼讓它再次相同嗎?

重現它的步驟(假設作業系統已經安裝了 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

只有內容不同,兩個文件的 md5 校驗和才會不同。cmp您可以通過將它們與或diff命令進行比較來確認這一點。

它們可能是複制操作無法正常工作的幾個原因:

  1. 在刷新磁碟記憶體之前拔下 sdcard。您可以嘗試使用udiskctl
  2. 文件系統損壞。您可以嘗試重新格式化該卡。
  3. 硬體故障。

在要解除安裝介質之前,系統不會寫入所有數據。這是可移動(通常是慢速和快閃記憶體)媒體的常見行為,因為系統會嘗試限制寫入。

在視覺上,您會注意到文件管理器(如果我記得很清楚的話,PCManFM…)會警告您等待解除安裝過程(如果您有用於 SD 卡讀卡器的 LED,它會像地獄一樣閃爍)


EDIT1:sync您可以使用刷新文件系統記憶體的命令來檢查/證明我的理論

引用自:https://unix.stackexchange.com/questions/550164