Как GRUB находит раздел / boot на диске MBR?

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 не будет обходить и очищать кеши, если это явно не указано.

2
26.12.2016, 22:38
1 ответ

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

Более подробная информация здесь.

6
27.01.2020, 21:56

Теги

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