Использование dd для сохранения и восстановления загрузочного сектора?

Через некоторый старый код я использую dd для сохранения и восстановления (частей) загрузочного сектора после распаковки .iso системы на жесткий диск (с живого компакт-диска).

Я использую следующую команду для сохранения mbr (первые 446 байт, таким образом, все, кроме таблицы разделов):

dd if=/dev/sda of=/mnt/mbr.bin bs=446 count=1 

Затем я восстанавливаю .iso жесткого диска и затем использую следующую команду для восстановления загрузочного сектора:

 dd if=/mnt/mbr.bin of=/dev/sda bs=446 count=1 

Теперь, когда у меня возникла проблема с тем, что до того, как я установил только Windows XP, и ПОСЛЕ использования вышеуказанного метода, я могу выбрать между запуском Linux и запуском Windows XP. Я предполагаю, что там что-то не так.

Мой вопрос здесь: Должны ли эти две команды выше быть достаточными для сохранения, а затем позже для восстановления загрузочного сектора?

MBR – это в основном 512-байтовый сегмент в самом первом секторе вашего жесткого диска и состоит из трех частей: загрузочного кода (длиной 446 байт), таблицы разделов (длиной 64 байта) и сигнатуры загрузочного кода (2 байта длинный). Не уверен, что пошло не так на вашей стороне, но это работает для меня:

Это, безусловно, будет делать резервные копии самого загрузочного кода и ничего другого:

[root @ host] # dd if = / dev / sda of = / tmp / mbr.img_backup bs = 446 count = 1

Затем вы хотите стереть очистку MBR, включая таблицу разделов, которую вы не хотите сохранять вместе с подписями кода загрузки:

[root @ host] # dd if = / dev / zero of = / dev / sda bs = 512 count = 1

И теперь вы восстанавливаете загрузочный код:

[root @ host] # dd if = / tmp / mbr.img_backup of = / dev / sda bs = 446 count = 1