Notas

Notas

Do Wiki do Arch Linux:https://wiki.archlinux.org/index.php/USB_flash_installation_media

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

[...] Fazernãofalta a sincronização ser concluída antes de puxar a unidade USB.

Eu gostaria de saber

  • O que isso faz?
  • Quais são as consequências se for deixado de fora?

Notas

ddcomando usado com opcional status=progress:

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

Ou usando pvpara progresso

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

Responder1

O ddnão ignora os caches de disco do kernel quando grava em um dispositivo, portanto, alguma parte dos dados pode ainda não ter sido gravada no USBstick após dda conclusão. Se você desconectar o USBstick naquele momento, o conteúdo do USBstick ficará inconsistente. Assim, seu sistema pode até falhar ao inicializar a partir deste USBstick.

Synclibera todos os dados ainda em cache para o dispositivo.

Em vez de invocar syncvocê poderia usar fdatasync dda opção de conversão de:

fdatasync

gravar fisicamente os dados do arquivo de saída antes de terminar

No seu caso, o comando seria:

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

As conv=fdatasyncmarcas ddefetivamente chamam fdatasync()a chamada do sistema no final da transferência, pouco antes dddas saídas (verifiquei isso com ddas fontes do).

Isso confirma que ddnão ignoraria nem liberaria os caches, a menos que fosse explicitamente instruído a fazê-lo.

Responder2

Na página de manual do sync(1): "sync - Sincronizar gravações em cache para armazenamento persistente". Basicamente syncgarante que todos os seus dados sejam gravados no stick a partir do cache.

informação relacionada