How to make grub work again after drive reassignment?

The problem is probably with grub seeing usb disks at boot time differently than once run from a running system. Here's how you might solve it:

When you boot (normally, from the hd) and grub appears, open grub console (usually you do that just by pressing c). At grub prompt, start typing root (hd :

grub> root (hd

then press Tab and you'll see the disks as possible completions. Choose the disk and partition where your /boot is. If you are not sure, then with each one you suspect, do the following:

  • (finish the root command to choose the partition and press Enter)
  • type in cat / and press Tab. You will see the list of files found on the partition.
  • Seeing the list of files, decide if it is your partition containing the kernel (under /boot/).
  • If not, press Esc and start over.

Once you've found how the partition is known to grub, you can re-install the boot loader (using setup command) and point to the correct partition/files in your /boot/grub/menu.lst or /boot/grub/grub.conf (you must determine, which of those your version uses, or just make them contain the same).


[Edit]: Per special request form Macias, here are more details on how to fix the MBR using grub:

One way to re-install the MBR on a drive using grub is the setup command I referred to above. This is a command known to grub versions 0.9X (see the Documentation). But you seem to be using the newer branch of grub (1.9X) and the commands for it are different. Have a look at the corresponding documentation - in this version, you can install grub to the MBR using the grub-install utility and I am not sure if there is any other way - from the grub "rescue" prompt, as with grub-0.97. Maybe not and maybe that is one of the reasons why many distros prefer the "legacy" version.


The file menu.lst is only used by grub-legacy. You appear to be using grub2, which uses grub.cfg instead. Grub2 also prefers to work without a device.map, so you might delete that as well, and then re-install grub.