Záloha a obnova MBR

Původní článek (děkuji):
http://www.tachec.org/tipsandtricks/backup_mbr/

Záloha a obnova MBR

Občas se hodí mít zazálohovaný tzv. Master Boot Record, ať již kvůli možnosti obnovy bootovacího sektoru nebo kvůli uchování/zálohování tabulky oddílů.

Jak MBR vypadá?

MBR se skládá ze tří částí. V první části (000000 – 0001bd) je uložena primární část bootovacího programu – zavaděče. Tato část je velká 446 Bytů. Druhá část (0001be – 0001fd) obsahuje tabulku oddílů a je proto velice důležitá. Tato část je velká 64 Bytů. Poslední část (0001fe – 0001ff) je vlastně značka/podpis zavaděče (55aa) a je velká 2 Byty. Leží vždy na konci MBR. Podává vlastně informaci o tom, že těch 512 Bytů je validních a že je v MBR nahrán zavaděč.

Jak zazálohovat/obnovit MBR?

V Linuxu lze MBR zazálohovat jednoduše pomocí programu dd. Budu zálohovat MBR (pod uživatelem root, protože pouze tento uživatel má přístup k danému zařízení) z IDE disku, který je jako primární master – tedy zařízení /dev/hda.

dd if=/dev/hda of=mbr.backup bs=512 count=1

Je dobré si uvědomit, že tímto příkazem se zazálohuje i tabulka oddílů, takže pokud by se obnova prováděla na jiném PC, tak dojde k přepsání tabulky oddílů na tomto PC, což není vždy to, co človek právě potřebuje.

Takto zazálohovaný MBR si lze prohlédnout s využitím hexa prohlížeče:

xxd -g4 mbr.backup

0000000: eb489010 8ed0bc00 b0b80000 8ed88ec0 .H..............
0000010: fbbe007c bf0006b9 0002f3a4 ea210600 ...|.........!..
0000020: 00bebe07 3804750b 83c61081 fefe0775 ....8.u........u
0000030: f3eb16b4 02b001bb 007cb280 8a740302 .........|...t..
0000040: 80000080 3fc00501 0008fa80 ca80ea53 ....?..........S
0000050: 7c000031 c08ed88e d0bc0020 fba0407c |..1....... ..@|
0000060: 3cff7402 88c252be 797de834 01f6c280 <.t...R.y}.4....
0000070: 7454b441 bbaa55cd 135a5272 4981fb55 tT.A..U..ZRrI..U
0000080: aa7543a0 417c84c0 750583e1 01743766 .uC.A|..u....t7f
0000090: 8b4c10be 057cc644 ff01668b 1e447cc7 .L...|.D..f..D|.
00000a0: 041000c7 44020100 66895c08 c7440600 ....D...f.\..D..
00000b0: 706631c0 89440466 89440cb4 42cd1372 pf1..D.f.D..B..r
00000c0: 05bb0070 eb7db408 cd13730a f6c2800f ...p.}....s.....
00000d0: 84f000e9 8d00be05 7cc644ff 006631c0 ........|.D..f1.
00000e0: 88f04066 89440431 d288cac1 e20288e8 ..@f.D.1........
00000f0: 88f44089 440831c0 88d0c0e8 02668904 ..@.D.1......f..
0000100: 66a1447c 6631d266 f7348854 0a6631d2 f.D|f1.f.4.T.f1.
0000110: 66f77404 88540b89 440c3b44 087d3c8a f.t..T..D.;D.}<.
0000120: 540dc0e2 068a4c0a fec108d1 8a6c0c5a T.....L......l.Z
0000130: 8a740bbb 00708ec3 31dbb801 02cd1372 .t...p..1......r
0000140: 2a8cc38e 06487c60 1eb90001 8edb31f6 *....H|`......1.
0000150: 31fffcf3 a51f61ff 26427cbe 7f7de840 1.....a.&B|..}.@
0000160: 00eb0ebe 847de838 00eb06be 8e7de830 .....}.8.....}.0
0000170: 00be937d e82a00eb fe475255 42200047 ...}.*...GRUB .G
0000180: 656f6d00 48617264 20446973 6b005265 eom.Hard Disk.Re
0000190: 61640020 4572726f 7200bb01 00b40ecd ad. Error.......
00001a0: 10ac3c00 75f4c300 00000000 00000000 ..<.u...........
00001b0: 00000000 00000000 51330900 00008001 ........Q3......
00001c0: 010083fe ffff3f00 00003b0d 770100fe ......?...;.w...
00001d0: ffff82fe ffff7a0d 7701c31c 200000fe ......z.w... ...
00001e0: ffff83fe ffff3d2a 97014352 65050000 ......=*..CRe...
00001f0: 00000000 00000000 00000000 000055aa ..............U.

Případnou obnovu MBR pak provedeme takto:

dd if=mbr.backup of=/dev/hda

Pokud chcete do MBR vložit pouze první část zavaděče a podpis zavaděče (55aa) a chcete ponechat stávající tabulku oddílů, tak to lze provést následovně:

dd if=/dev/hda of=mbr.backup bs=512 count=1
dd if=boot_sector of=mbr.backup bs=446 count=1
dd if=boot_sector of=mbr.backup bs=1 skip=510 count=2 seek=510
dd if=mbr.backup of=/dev/hda

Prvním příkazem jsme udělali zálohu MBR do souboru mbr.backup. V druhém příkazu jsme vzali zaváděcí program (máme jej uložen například v souboru boot_sector), který chceme do našeho MBR vložit a vložili jsme jej na začátek souboru mbr.backup (do prvních 446 Bytů). Třetím příkazem jsme na konec souboru mbr.backup vložili podpis zavaděče, tedy 2 Byty. Posledním příkazem jsme provedli zápis námi vytvořeného MBR na disk.

Tabulku oddílů lze také zazálohovat pomocí programu sfdisk, viz níže:

sfdisk -d /dev/hda > tabulka_oddilu

Případnou obnovu tabulky oddílů pak provedeme takto:

sfdisk /dev/hda < tabulka_oddilu