GNU/Linux >> Znalost Linux >  >> Linux

Proč je synchronizace tak důležitá při vytváření zaváděcího USB klíče pro Linux?

Z 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

[…] nedělejte zmeškanou synchronizaci pro dokončení před vytažením jednotky USB.

Rád bych to věděl

  • Co to dělá?
  • Jaké důsledky to má, pokud se vynechá?

Poznámky

dd příkaz používaný s volitelným status=progress :

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

Nebo pomocí pv pro pokrok

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

Přijatá odpověď:

dd neobchází mezipaměť disku jádra, když zapisuje do zařízení, takže některá část dat nemusí být ještě zapsána na USB držte se dd dokončení. Pokud odpojíte USB v tu chvíli přilepte obsah na USB hůl by byla nekonzistentní. Váš systém tedy může dokonce selhat při bootování z tohoto USB hůl.

Sync vyprázdní všechna data stále v mezipaměti do zařízení.

Místo vyvolání sync můžete použít fdatasync dd možnost převodu:

fdatasync

fyzicky zapsat data výstupního souboru před dokončením

Ve vašem případě by příkaz byl:

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

conv=fdatasync dělá dd efektivně zavolat fdatasync() systémové volání na konci přenosu těsně před dd ukončí (zkontroloval jsem to pomocí dd zdroje).

To potvrzuje, že dd neobejde ani nevyprázdní mezipaměti, pokud k tomu nedostane výslovný pokyn.


Linux
  1. Proč se držím xtermu

  2. Vytvoření spouštěcí jednotky USB z počítače pomocí souboru .iso na MAC

  3. Proč USB nefunguje v Linuxu, když funguje v UEFI/BIOS?

  1. Jak vložit linuxové ISO na USB flash disk a udělat z něj bootovatelný na Macu

  2. Jak vytvořit spouštěcí USB flash disk pro Linux ve Windows

  3. Linux – Proč USB nefunguje v Linuxu, když funguje v Uefi/bios?

  1. Jak vytvořit bootovací USB disk pro Linux

  2. Jak vytvořit Linux bootovatelné USB z Linux Command-Line

  3. Linux – Proč detekce USB Stick trvá tak dlouho?