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
не будет обходить и очищать кеши, если это явно не указано.
Адрес жестко закодирован в core.img
. core.img
содержит все модули ядра и Grub, необходимые для вызова модулей Stage 2 по пути к файлу. Вы указываете его как (hd0,msdos1)/boot/grub
. По умолчанию он попытается загрузить модуль normal
по адресу (hd0,msdos1)/boot/grub/i386-pc/normal.mod
(предполагается, что арка i386-pc).