Wie repariert man eine defekte VirtualBox-VM?

Wie repariert man eine defekte VirtualBox-VM?

Ich verwende Oracle VirtualBox auf einem 64-Bit-Host mit Ubuntu 11.10 und einem 64-Bit-Gastcomputer mit Ubuntu Server 12.04 LTS und vielen Snapshots. Nach einem Neustart des Hosts (während die VM lief) war die VM „unzugänglich“. Nachdem ich herumgestöbert und viele Gigabyte an Backups erstellt hatte, konnte ich sie mit dem Bildschirm „Kann kein Bootmedium finden“ booten. Haben Sie Vorschläge oder Lösungen, wie ich meine Daten, einschließlich der Daten aus dem neuesten Snapshot, auf eine neue VM übertragen oder dieses Problem, falls möglich, beheben kann? Ich gebe Ihnen gerne weitere Informationen.

BEARBEITEN: Ich glaube, meine Snapshot-Kette ist defekt/beschädigt.

BEARBEITEN 2: Ich kann es nicht reparieren, ich habe gerade eine neue VM erstellt.

Antwort1

Es ist nicht möglich, zu einem funktionierenden Snapshot zurückzukehren. Booten Sie Ihre VM mit einer Live-CD und prüfen Sie, ob Sie auf die Festplatten zugreifen können. Wenn ja, besteht der schlimmste Fall darin, eine neue VM mit einem neuen Server zu erstellen, die Festplatten der alten VM hinzuzufügen und dann die Daten von den Festplatten abzurufen.

Antwort2

  1. Den neuesten Snapshot wiederherstellen
  2. Bearbeiten Sie die Festplatteninformationen und entfernen Sie alle nicht zugänglichen Festplatten
  3. füge alle Festplatten, die du finden kannst, zur VM hinzu (das macht sie zugänglich)
  4. Booten mit einer Recovery-CD oder Live-CD
  5. Entscheiden Sie, wie Sie das Problem beheben können. Normalerweise müssen Sie die Festplatte mounten, chrooten und grub installieren.

Beispiel für #5:

  1. Mounten von Partitionen

    mkdir /mnt/fixme
    parted -s /dev/sda print
    (based on output of above, decide which device is your /boot, /, etc., and modify next mount commands accordingly)
    mount /dev/sda2 /mnt/fixme
    mount /dev/sda1 /mnt/fixme/boot
    ... for all your partitions
    
  2. Mounten Sie spezielle Dateisysteme

    mount | grep "on /proc"
    mount | grep "on /dev"
    (based on the above, decide what the "from" and "type" should be; my example below is correct for openSUSE 12.1)
    mount -t proc proc /mnt/fixme/proc
    mount -t devtmpfs devtmpfs /mnt/fixme/dev
    

    Unter Ubuntu lautet der Dev-Typ beispielsweise „none“: mount -t none devtmpfs /mnt/fixme/dev

    Möglicherweise müssen Sie auch /sys mounten. Ich habe es vergessen. Sie werden es wissen, wenn Sie eine Fehlermeldung erhalten.

  3. Starten Sie die Chroot-Shell (das ist, als würden Sie von Ihrer Festplatte gebootet). (Randbemerkung: Das funktioniert nicht richtig, wenn Sie eine andere Festplatte im System haben, etwa wenn Sie Ihre kaputte Festplatte nehmen und sie an ein anderes Linux anschließen, das nicht von einer CD, sondern von einer Festplatte gebootet wird. Es wird in mtab nachgeschaut, um zu entscheiden, welche Ihre Boot-Festplatte ist, und diese GUIDs in die Grub-Konfiguration einfügen, statt denen der reparierten Festplatte. Sie müssen also mit der Boot-Eingabeaufforderung wiederherstellen und grub-install später erneut ausführen.)

    chroot /mnt/fixme
    
  4. Installieren Sie Grub

    On openSUSE:
        update-bootloader
    On Ubuntu:
        update-grub2
    Alternate, on most systems, but not openSUSE, use both:
        install stage 1 bootloader:
            grub-install
        install guids and stuff in /boot (change cfg file to whatever you find is the correct one [menu.lst on openSUSE, grub.cfg on Ubuntu, etc.]) (if you skip the -o option, it just prints to standard out and doesn't save it in any files)
            find /boot -name "*grub*" -or -name "*.cfg" -or -name "*menu*"
            grub-mkconfig -o /boot/grub/grub.cfg
    

verwandte Informationen