MBR einer Linux-Installation wiederherstellen

Netboot durch defekten MBR

Netboot durch defekten MBR

Als Vorbereitung für einen Restore-Test habe ich neulich auf einem Linux-System den Master Boot Record (MBR) entfernt:

# dd if=/dev/zero of=/dev/sda bs=512 count=1

Dieser Befehl überschreibt die ersten 512 Byte (in welchen sich die Partitionstabelle und der Bootloader befinden) der ersten Festplatte (/dev/sda) mit Nullen (/dev/zero).

Blöd ist nur, wenn man dann feststellt, dass der Restore nicht funktioniert und man das System manuell wieder in den Betrieb nehmen muss. 🙂

Vorgehensweise

Um den MBR wiederherzustellen kann ein Programm namens testdisk verwendet werden. Dieses Programm durchsucht angegebene Festplatten auf bekannte Dateisystemmuster und kann so Partitionsgrenzen erkennen. Es werden zahlreiche Linux-, Unix- und Windows-Dateisysteme erkannt.

Da das zerstörte System nicht mehr bootfähig ist, empfiehlt sich der Einsatz einer Live-CD – beispielsweise GParted, welches unter anderem testdisk bereits enthält.

Nach erfolgtem Boot wird ein Terminal geöffnet. Mithilfe der lsscsi– und fdisk-Kommandos kann die Festplatte des Gastbetriebsystems gesucht werden – gparted erkennt keine gültigen Partitionen:

lsscsi / fdisk -l

lsscsi / fdisk -l

Anschließend kann mit testdisk versucht werden, die Partitionen zu erkennen und den MBR neuzuschreiben:

  1. Starten von testdisk und Auswählen einer Logdatei, in der einzelne Änderungen protokolliert werden
  2. Festplatte auswählen und Proceed anwählen
  3. Auswählen der Festplattentyps: Intel für herkömmliche PCs mit MBR/BIOS. Bei (U)EFI- oder GPT-Systemen muss EFI GPT ausgewählt werden
  4. Anwählen von Analyse und Quick Search. Sofern Partitionen erkannt wurden, kann über den Menüpunkt Write der MBR neugeschrieben werden:
MBR mit testdisk neuschreiben

MBR mit testdisk neuschreiben

Danach listet fdisk auch wieder definierte Partitionen auf:

# fdisk -l /dev/sda
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
/dev/sda2              64        2611    20458496   8e  Linux LVM

Würde man jetzt das System neustarten, würde der Boot aufgrund fehlendem Bootloader fehlschlagen. Je nach vorheriger Konfiguration muss nun noch GRUB(2) neuinstalliert werden – beispielsweise über die Live-CD:

# mount /dev/sdaX /mnt
# grub-install --no-floppy --root-directory=/mnt /dev/sda

Blöd ist nur, wenn die GRUB-Version der Live-CD neuer ist als die des Hosts (GRUB2 vs. GRUB-legacy) – dann sind bereits vorhandene Konfigurationsdateien inkompatibel. In einem solchen Fall hilft nur das Einhängen aller Partitionen des Systems und Verwenden von chroot:

# mount /dev/sdaX /mnt
# mount /dev/sdaX /mnt/boot
...
# mount --bind /dev /mnt/dev
# mount --bind /tmp /mnt/tmp
# mount -t proc proc /mnt/proc
# mount -t sysfs none /mnt/sys
# chroot /mnt /bin/bash

Nun kann der Bootloader neugeschrieben werden:

# grep -v rootfs /proc/mounts > /etc/mtab
# grub-install --no-floppy /dev/sda

Der nächste Boot sollte dann wieder funktionieren. 🙂

2 Kommentare Schreibe einen Kommentar

  1. Hallo Christian.

    ich bin durch osbn.de auf diesen Artikel aufmerksam geworden.

    Es gibt sehr viele Programme und Tools. Da weiß man oft nicht, welches das richtige ist. Um ein Problem gut und sicher lösen zu können, da fehlt mir hin und wieder die Idee, wie ich vorgehen soll.

    Diese Schritt für Schritt Anleitung ist sehr hilfreich. Vielen Dank dafür.

    Wenn du öfter solche Rettungs- und Wiederherstellungsübungen machst, dann würde ich mich sehr über weitere Artikel dieser Art freuen.

    • Hallo Stephan,
      vielen Dank für das Feedback! Schön, wenn ich dir helfen konnte. 🙂

      Gibt bestimmt nochmal einen solchen Artikel – bleibt nicht aus, dass man mal eine Maschine zerstört. 😀

      Beste Grüße,
      Christian!

Schreibe einen Kommentar