GRUB: error: file '/grub/i386-pc/normal.mod' not found

This has happend quite a while ago, but it was weird enough and unexpected that I still wanted to share it here. After a scheduled reboot, this machine greeted me with:

error: file '/grub/i386-pc/normal.mod' not found.
grub rescue>


So, apparently GRUB has some kind of trouble. What happened here? After some looking around in this (very minimalistic) rescue shell it became clear that almost everything below /boot/grub had been removed. Maybe by some br0ken update script, I never really found out what may have caused this.

But the interwebs were helpful as usual and the trick was now to find all the missing files elsewhere. This being a Debian system, the Grub files were also available in /usr/lib/grub/i386-pc/ (yes, even on an amd64 system). Without being able to boot into another rescue system and re-install Grub, Still in the grub rescue shell, we now have to load every needed module from that location:

> insmod /usr/lib/grub/i386-pc/normal.mod
> insmod /usr/lib/grub/i386-pc/ext2.mod
> insmod /usr/lib/grub/i386-pc/linux.mod
> [...]


We may need more modules than that, and some modules may even depend on other modules, so this took some trial and error to figure out. But in the end a basic Grub configuration could be submitted:

> set root (hd0,msdos2)
> linux (hd0,msdos2)/vmlinuz root=/dev/sda2
> initrd (hd0,msdos2)/initrd.img


If this fails, more modules may need to be loaded.

So, if this really boots, make sure to install Grub again :-)