Skip to main content

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 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 :-)