Почему синхронизация так важна при создании загрузочного USB-накопителя Linux?

Пара указателей:

  • не используйте обратные кавычки, используйте var = $ (date +% H) , это гораздо удобнее
  • используйте пробелы между квадратными скобками и переменными: ["$ var" -eq "23"]
  • рассмотрите возможность использования логического оператора && вместо , если . [$ var -eq 23] && echo "var is 23"
15
29.09.2016, 01:30
2 ответа

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

Синхронизация сбрасывает все данные, все еще находящиеся в кэше, на устройство.

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

fdatasync

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

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

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

conv = fdatasync заставляет dd эффективно вызывать fdatasync () системный вызов в конце передачи непосредственно перед dd выходит (я проверил это с помощью источников dd ).

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

36
27.01.2020, 19:50

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

1
27.01.2020, 19:50

Теги

Похожие вопросы