Как исправить сломанную виртуальную машину VirtualBox?

Как исправить сломанную виртуальную машину VirtualBox?

Я запускаю Oracle VirtualBox на Ubuntu 11.10 64-Bit Host с Ubuntu Server 12.04 LTS 64-Bit Guest Machine со множеством снимков. После перезагрузки хоста (во время работы виртуальной машины) виртуальная машина стала «недоступной». После того, как я покопался и сделал много гигабайт резервных копий, я добился того, что она загрузилась с экраном «не могу найти загрузочный носитель». Есть ли у вас какие-либо предложения или решения о том, как перенести мои данные, включая данные из последнего снимка, на новую виртуальную машину или, если возможно, исправить эту? Я буду рад предоставить дополнительную информацию.

EDIT: Я думаю, что моя цепочка снимков нарушена/повреждена.

EDIT 2: Я не могу это исправить, я только что создал новую виртуальную машину.

решение1

Если нет возможности вернуться к рабочему снимку. Загрузите свою виртуальную машину с Live CD и проверьте, можете ли вы получить доступ к ее жестким дискам. Если это так, то худший вариант — создать новую виртуальную машину с новым сервером, добавить жесткие диски из старой виртуальной машины; затем извлечь данные с жестких дисков.

решение2

  1. Восстановить последний снимок
  2. отредактируйте информацию о жестком диске и удалите все недоступные жесткие диски
  3. добавьте все жесткие диски, которые сможете найти, в виртуальную машину (это сделает их доступными)
  4. загрузка с CD восстановления или Live CD
  5. решите, как это исправить... обычно вам нужно смонтировать диск, chroot и установить grub

пример для #5:

  1. Монтировать разделы

    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. Монтировать специальные файловые системы

    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
    

    Например, в Ubuntu для типа dev это «none»: mount -t none devtmpfs /mnt/fixme/dev

    Возможно, вам также понадобится смонтировать /sys. Я забыл. Вы узнаете об этом, когда получите сообщение об ошибке.

  3. Запустите оболочку chroot (что похоже на загрузку с жесткого диска) (Примечание: это работает плохо, если в системе есть еще один диск, например, если вы взяли сломанный диск и вставили его в другой Linux, который загружается не с CD, а с диска; он будет искать в mtab, какой диск является загрузочным, и поместит эти guid в конфигурацию grub вместо восстановленного диска, поэтому вам придется восстановиться с помощью приглашения к загрузке и позже снова запустить grub-install)

    chroot /mnt/fixme
    
  4. Установить 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
    

Связанный контент