UNIX: Резервная копия MBR-записи

Автор: | 02/11/2013
 

backupMaster boot record, MBR — код и данные, необходимые для последующей загрузки операционной системы и расположенные в первых 512 байтах (первом секторе) жесткого диска, как правило — первого.

MBR содержит небольшой фрагмент исполняемого кода, таблицу разделов (Partition Table) и специальную сигнатуру.

Функция MBR — «переход» в тот раздел жёсткого диска, с которого следует загружать операционную систему. На «стадии MBR» происходит выбор раздела диска, с которого запускается загрузчик самой операционной системы.

В процессе запуска компьютера, после окончания начального теста (Power-on self-test — POST), Базовая система ввода-вывода (BIOS) загружает «код MBR» в оперативную память и передаёт управление находящемуся в MBR загрузочному коду.

Сама запись MBR содержит 512 байт кода, из которых:

  • 446 bytes — запись, касающаяся только схемы загрузки ОС с диска/ов (Bootstrap);
  • 64 bytes — схема разделов диска/ов (Partition table)
  • 2 bytes — signature.

Что бы создать резервную копию MBR — выполняем:

# dd if=/dev/sda of=/media/Main/Backups/sda-mbr.bin bs=512 count=1
1+0 записей считано
1+0 записей написано
скопировано 512 байт (512 B), 0,016881 c, 30,3 kB/c

Что бы проверить — что именно вы скопировали, т.е. прочитать саму копию MBR — выполняем:

# file /media/Main/Backups/sda-mbr.bin
/media/Main/Backups/sda-mbr.bin: x86 boot sector; partition 1: ID=0x7, active, starthead 1, startsector 2048, 204800 sectors; partition 2: ID=0x7, starthead 1, startsector 206848, 102195200 sectors; partition 3: ID=0x7, starthead 1, startsector 102402048, 1045460992 sectors; partition 4: ID=0xf, starthead 1, startsector 1147865086, 102396487 sectors, code offset 0x63, OEM-ID »      м», Bytes/sector 190, sectors/cluster 124, reserved sectors 191, FATs 6, root entries 185, sectors 64514 (volumes <=32 MB) , Media descriptor 0xf3, sectors/FAT 20644, heads 6, hidden sectors 309755, sectors 2147991229 (volumes > 32 MB) , physical drive 0x7e, dos < 4.0 BootSector (0x0)

Что бы восстановить MBR — выполняем:

# dd if=/media/Main/Backups/sda-mbr.bin of=/dev/sda bs=1 count=64 skip=446 seek=446

либо проще:

# dd if=/media/Main/Backups/sda-mbr of=/dev/sda

Соответственно, измените путь /media/Main/Backups/ на путь к каталогу, в котором хотите сохранить копию MBR и укажите ваш диск, на котором находится MBR.

Если вы хотите восстановить только саму запись о схеме загрузки операционных систем — используйте первые 446 байт, вместо 512. Если хотите восстановить всю запись, т.е. схему загрузки ОС + схему разделов на диске — укажите 512 байт, как в примере.

Так же, в Linux для работы со схемой разделов — можно воспользоваться утилитой sfdisk.

Для создания копии схемы разделов — выполните:

# sfdisk -d /dev/sda > /media/Main/Backups/backup-sda.sfdisk

Что бы восстановить таблицу разделов:

# sfdisk /dev/sda < /media/Main/Backups/backup-sda.sfdisk