MBR - MasterBootRecord

Viele Linux-Windows-Nutzer wollen, aus welchem Grund auch immer, den MBR löschen, ein Backup des MBRs machen oder sonst was mit ihm anstellen. Wer aber nicht weiß was er macht handelt sich schnell mehr Probleme ein als ihm lieb ist. Wie es geht und was man da genau macht steht hier kurz und knapp. Wer es genauer wissen will hier mal ein Link zur Wikipedia die den Aufbau des MBR komplett beschreibt.

http://de.wikipedia.org/wiki/Master_Boot_Record

Backup, Aufbau und Restore des MBR

Ein Backup des MBRs ist unter Linux keine große Sache. Mit Hilfe von dd ist das in wenigen Sekunden erledigt. Hier mal stellvertretend der Befehlt für das sichern des MBRs der ersten Platte.

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

Um das Image wieder auf die Platte zu schreiben dreht man den Befehlt einfach rum. Dazu sollte man aber unbedingt wissen was so alles im MBR steht. Wie der MBR aufgebaut ist steht hier kurz beschrieben.

Adresse Beschreibung Bytes
0-440 Boot-Loader max. 440
440-444 Disk-Signatur 4
444-446 Null 2
446-512 Partitionstabelle 64

Nachdem wir jetzt wissen das sowohl der Bootloader als auch die Partitionstabelle im MBR steht schreiben wir das oben gesicherte Image mit Folgendem Befehl wieder auf die Platte zurück.

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

Hat sich aber die Struktur der Partitionen geändert sollte man nur den Bootloader zurück schreiben; also nur 440byte

dd if=./MBR_hda_512Byte of=/dev/hda bs=1 count=440

Möchte man hingegen den Bootloader löschen sollte man auch nur das tun und mit den ganzen MBR löschen.

dd if=/dev/zero of=/dev/hda bs=1 count=440

Backup einer Partition

Wer unter Linux eine Partion sichern will benötig dazu kein Tool wie Ghost oder anderen Krempel sonder nur ein Konsole die von einem beliebigen Linux aus gestartet wurde;) Wie das geht und was da im einzelne passiert versuche ich mit einfachen Worten zu erklären, sodass auch ein nicht Linux-Profi das nachvollziehen kann. Außerdem nutze ich nur die Programm dd, split und cat die zu den Coreutils zählen und somit Bestandteil jeder Distribution sind. Zum Komprimieren nehme ich gzip und ssh falls alles über das Netzt geschickt werden soll.

Anmerkung: Das hier vorgestellte Verfahren ist immer ein Voll-Backup.

Backup von /dev/hda1

So, nun sichern wir mal /dev/hda1 was übrigens die erste Partition der ersten Festplatte ist. Das ganze wird zudem mit gzip komprimiert und per ssh auf einen anderen Rechner geschoben. Verbindet man die einzelnen Befehle mit der Pipe → | ←, benötigt man auch keine Temporäre Datei. Im Gegenteil, es wird erst auf dem entfernten Rechner geschrieben. Möchte man alles auf CD schreiben kann man es auch schön in die richtigen Häppchen schneiden.

dd if=/dev/hda1 bs=4k conv=noerror,sync | gzip -9 -c | cat > imagedatei.gz
dd if=/dev/hda1 bs=4k conv=noerror,sync | gzip -9 -c | split -b700m - imagedatei.gz

OK, hier die Erklärung dazu. Als erstes lesen wir mit dd if=/dev/hda1 bs=4k conv=noerror,sync die Partition aus was mit einer Blockgröße von 4k geschieht. Außerdem ignorieren wir defekte Sektoren die wegen der Option sync mit Nullen aufgefüllt werden. Wird bei dd kein Ziel angegeben schreibt er alles auf sdtout. In unserem Fall ist das die Konsole. Würde man nur diesen Befehl absetzten könnte man alles am Bildschirm lesen. Durch die Pipe wird aber stdout mit stdin verbunden sodass alles an den Befehl gzip -9 -c übergeben wird. Dieser ließt stdin und Komprimiert den Datenstrom mit maximaler Kompressionsrate und schreibt das Ergebnis wieder nach stdout zurück. Hier kann man nun entscheiden ob man eine Datei haben will oder ob man den Datenstrom in gleich große Dateien zerstückeln will. Möchte man das Backup auf CD brennen ist es sinnvoll gleich alles mit split -b700m - imagedatei.gz in 700MB große Häppchen zu schneiden. Möchte man das nicht schreibt cat > imagedatei.gz alles in eine Datei.

Backup von /dev/hda1 mit SSH

Wer das ganze mit ssh verbinden will fügt zu den oben genanten am ende stehenden Befehl einfach ein ssh user@host „“ ein. Somit wird alles auf einen entfernten Rechner transportiert.

dd if=/dev/hda1 bs=4k conv=noerror,sync | gzip -9 -c | ssh user@host "cat > imagedatei.gz"
dd if=/dev/hda1 bs=4k conv=noerror,sync | gzip -9 -c | ssh user@host "split -b700m - imagedatei.gz"

Restore von /dev/hda1 mit SSH

Ein Restore ist in aller Regel nicht nötig, da wenn man ein Backup hat die Platte ewig hält! Sollte es aber dennoch mal geschehen dass die Platte das Zeitliche segnet kann man mit einer Zeile das ganze umdrehen und die Daten zurück schreiben.

ssh user@host "cat imagedatei.gz* | gzip -d -c" | dd of=/dev/hda1
howtos/mbr.txt · Zuletzt geändert: 2018/05/24 17:29 (Externe Bearbeitung)
Nach oben
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0