GRUB’s normal start-up procedure involves setting the ‘prefix’
environment variable to a value set in the core image by
grub-install, setting the ‘root’ variable to match, loading
the ‘normal’ module from the prefix, and running the ‘normal’
command (see normal). This command is responsible for reading
/boot/grub/grub.cfg, running the menu, and doing all the useful
things GRUB is supposed to do.
If, instead, you only get a rescue shell, this usually means that GRUB failed to load the ‘normal’ module for some reason. It may be possible to work around this temporarily: for instance, if the reason for the failure is that ‘prefix’ is wrong (perhaps it refers to the wrong device, or perhaps the path to /boot/grub was not correctly made relative to the device), then you can correct this and enter normal mode manually:
# Inspect the current prefix (and other preset variables): set # Find out which devices are available: ls # Set to the correct value, which might be something like this: set prefix=(hd0,1)/grub set root=(hd0,1) insmod normal normal
However, any problem that leaves you in the rescue shell probably means that GRUB was not correctly installed. It may be more useful to try to reinstall it properly using grub-install device (see Invoking grub-install). When doing this, there are a few things to remember:
grub-installto install GRUB to a partition but GRUB has already been installed in the master boot record, then the GRUB installation in the partition will be ignored.