Примечания

Примечания

Из 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

решение1

Не обходит ddкэши ядра диска при записи на устройство, поэтому часть данных может быть еще не записана на флешку USBпо ddзавершении. Если вы отключите USBфлешку в этот момент, содержимое на USBфлешке будет несогласованным. Таким образом, ваша система может даже не загрузиться с этой USBфлешки.

Syncсбрасывает все данные, оставшиеся в кэше, на устройство.

Вместо вызова syncможно использовать fdatasync ddопцию преобразования:

fdatasync

физически записать данные выходного файла перед завершением

В вашем случае команда будет такой:

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

Фактически это conv=fdatasyncвызывает системный вызов в конце передачи непосредственно перед выходом (я проверил это по источникам).ddfdatasync()dddd

Это подтверждает, что ddне будет обходить или очищать кэши, если на это не будет дано явных указаний.

решение2

Из страницы руководства sync(1): "sync - Синхронизация кэшированных записей с постоянным хранилищем". По сути, syncгарантирует, что все ваши данные будут записаны на флешку из кэша.

Связанный контент