Dd
為什麼在製作可啟動的 linux USB 記憶棒時同步如此重要?
來自 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
寫入設備時不會繞過核心磁碟記憶體,因此完成後某些部分數據可能尚未寫入記憶USB
棒dd
。如果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=fdatasync
我dd
用’ s 的來源檢查了這一點)。fdatasync()``dd``dd
這確認
dd
除非明確指示這樣做,否則不會繞過或刷新記憶體。