Dd

為什麼在製作可啟動的 linux USB 記憶棒時同步如此重要?

  • January 26, 2018

來自 Arch Linux Wiki:https ://wiki.archlinux.org/index.php/USB_flash_installation_media

# dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress && sync

$$ … $$拔出 USB 驅動器之前不要錯過同步完成。

我想知道

  • 它有什麼作用?
  • 如果不放會有什麼後果?

筆記

dd與可選一起使用的命令status=progress

tar -xzOf archlinux-2016-09-03-dual.iso | dd of=/dev/disk2 bs=4M status=progress && sync

pv用於進步

tar -xzOf archlinux-2016-09-03-dual.iso | pv | dd of=/dev/disk2 bs=4M && sync

dd寫入設備時不會繞過核心磁碟記憶體,因此完成後某些部分數據可能尚未寫入記憶USBdd。如果USB此時拔掉搖桿,搖桿上的內容USB就會不一致。因此,您的系統甚至可能無法從該USB棒啟動。

Sync將任何仍在記憶體中的數據刷新到設備。

sync您可以使用fdatasync dd’s 轉換選項,而不是呼叫:

數據同步

在完成之前物理寫入輸出文件數據

在您的情況下,命令將是:

tar -xzOf archlinux-2016-09-03-dual.iso | \
dd of=/dev/disk2 bs=4M status=progress conv=fdatasync

在退出之前的傳輸結束時有效地呼叫系統呼叫(conv=fdatasyncdd用’ s 的來源檢查了這一點)。fdatasync()``dd``dd

這確認dd除非明確指示這樣做,否則不會繞過或刷新記憶體。

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