by Alex » Tue Nov 30, 2010 6:26 pm
Depending on the installation, it might be that the installation uses different the discs names for identifying partitions.
Does the GRUB appear as a program, or does only 'loading grub' appear on screen?
Once you have the GRUB running as a program, you should be able to select the installations, in your case SuSE 11.3 and SuSE 11.3 failsave. Select the first, press 'e' to edit the command line. It will read something along the lines of
kernel /boot/desktop-2.6.32.1-0.5 root=/dev/disk/SAMSUNG-00WA01-0124
or
kernel /boot/desktop-2.6.32.1-0.5 root=/dev/disk/uuid/{41303234-12...
or
kernel /boot/desktop-2.6.32.1-0.5 root=/dev/sda1
The last but one cases should work without problem, as partition identifiers remain the same. In the last case it's depending on which connector the boot disc is connected to. If you have two or more discs running, try swapping the cables (or try different values for /dev/sda1, /dev/sdb1, /dev/sdc1...)
If the first method is the case (the one with the Disc name), you should revert back to the 3rd method.
You'll have to look for the file system. Press 'Esc' to go to the menu selection, and press 'c' to have a command line. Now enter
ls (hd0,0)
This will show you the contents of /dev/sda1 (if you're running Grub 1.96 instead of Grub 0.9, you'll have to start at (hd0,1).
if you see the following files:
bin boot dev etc home proc srv sys var tmp (among a few others) you have the root directory.
If you don't see these, try the next partition: (hd0,1), then (hd0,2),... then the next disk: (hd1,0), (hd1,1), etc.
hd0 -> /dev/sda
hd1 -> /dev/sdb
hd2 -> /dev/sdc
and the number behind the comma is the partition number, as mentioned above, in the older Grub 0.9 you'll have to add 1 to it, so (hd0,0) is /dev/sda1, (hd3,4) is /dev/sdd5. With the newer Grub 1.96, you would have (hd0,1) for /dev/sda1, (hd3,4) for /dev/sdd4.
Once you know the root file system's location, press 'Esc' to exit the Grub command line, select the normal start entry, and press 'e' to edit it. Replace the root=/dev/discs/ with root=/dev/sda1 (or whatever you found to be your root directory). Then press Ctrl+X to boot.
Usually, the file /etc/fstab will contain the mount points for the other partitions, that might also be connected in the wrong way.
Once you're booted (but cannot mount other file systems), you'll be presented with the emergency shell. Open it, and use your favorite editor to change the contents of /boot/grub/menu.lst (or /boot/grub/grub.cfg in the new Grub 1.96 case) to the value you just found, and then edit the file /etc/fstab. Here it's basically the same. Replace the device locations for the mount points by the correct ones (You'll see the root FS also mentioned here, so you know which partition resides on the same disk, only with a different partition number). Once you changed that, you're ready to go.
To avoid such things, it's probably better to set up the original system in such a way that either UUIDs are used for partition recognization or use the old-style (/dev/sda...) device nodes. Using disc specific nodes is what I would consider a bad idea (no idea why the SuSE guys decided to go that route).