
Я запускаю Oracle VirtualBox на Ubuntu 11.10 64-Bit Host с Ubuntu Server 12.04 LTS 64-Bit Guest Machine со множеством снимков. После перезагрузки хоста (во время работы виртуальной машины) виртуальная машина стала «недоступной». После того, как я покопался и сделал много гигабайт резервных копий, я добился того, что она загрузилась с экраном «не могу найти загрузочный носитель». Есть ли у вас какие-либо предложения или решения о том, как перенести мои данные, включая данные из последнего снимка, на новую виртуальную машину или, если возможно, исправить эту? Я буду рад предоставить дополнительную информацию.
EDIT: Я думаю, что моя цепочка снимков нарушена/повреждена.
EDIT 2: Я не могу это исправить, я только что создал новую виртуальную машину.
решение1
Если нет возможности вернуться к рабочему снимку. Загрузите свою виртуальную машину с Live CD и проверьте, можете ли вы получить доступ к ее жестким дискам. Если это так, то худший вариант — создать новую виртуальную машину с новым сервером, добавить жесткие диски из старой виртуальной машины; затем извлечь данные с жестких дисков.
решение2
- Восстановить последний снимок
- отредактируйте информацию о жестком диске и удалите все недоступные жесткие диски
- добавьте все жесткие диски, которые сможете найти, в виртуальную машину (это сделает их доступными)
- загрузка с CD восстановления или Live CD
- решите, как это исправить... обычно вам нужно смонтировать диск, chroot и установить grub
пример для #5:
Монтировать разделы
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
Монтировать специальные файловые системы
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. Я забыл. Вы узнаете об этом, когда получите сообщение об ошибке.
Запустите оболочку chroot (что похоже на загрузку с жесткого диска) (Примечание: это работает плохо, если в системе есть еще один диск, например, если вы взяли сломанный диск и вставили его в другой Linux, который загружается не с CD, а с диска; он будет искать в mtab, какой диск является загрузочным, и поместит эти guid в конфигурацию grub вместо восстановленного диска, поэтому вам придется восстановиться с помощью приглашения к загрузке и позже снова запустить grub-install)
chroot /mnt/fixme
Установить 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