Unable to use cloned VM, OpenSUSE, VirtualBox

I was able to make my system boot by doing the following:

1) Take note of the device(s) the system cannot find.

2) Answer "n" to that question. It should take you to a command prompt.

3) Run this command: cd /dev/disk/by-id

4) Run this command: ls

5) Rename all files in this folder replacing there current name with the name of the device you took note of in step 1. Ex. mv ata-VBOX_OLDNAME....-part2 ata-VBOX_HARDDISK....-part2

6) Once you have completed this type this command: exit

7) The system should boot normally.

I am still working through how this happens with OpenSUSE 11.4.


This problem is caused because SUSE by default configures Grub to find disks by name rather than by label or by path. When creating a VM from an appliance, VirtualBox creates a new disk with a new name and then Grub can't find the boot disk. I was able to fix this permanently by:

  1. Add the disk as a secondary drive to another machine that can mount the filesystem. I mounted mine to /media/hd2.

  2. Edit /media/hd2/boot/grub/device.map and replace the by-name path to the hard drive /dev/disk/by-name/ata-VBOX.... with the by-path path /dev/disk/by-path/pci-0000:00:0d.0-scsi-0:0:0:0.

  3. Edit /media/hd2/boot/grub/menu.lst and replace the by-name paths with the by-path paths. For mine, I ended up replacing all of the part-1 paths with /dev/disk/by-path/pci-0000:00:0d.0-scsi-0:0:0:0-part1 and the part-2 paths with /dev/disk/by-path/pci-0000:00:0d.0-scsi-0:0:0:0-part2.

The paths that I used specify the first hard disk. If you want to boot off a different hard disk (or a different disk type), you will need to figure out how SUSE maps the path. I found that SUSE will mount a second hard drive as pci-0000:00:0d.0-scsi-1:0:0:0.

Specifying the hard drive by-path might not be ideal in some cases, but it worked perfectly for the quick fix I was going for.