Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.
error: file '/grub/i386-pc/normal.mod' not found.
grub rescue>

What can I do? I just sit and stare at it.

I found my old netbook (Dell Inspiron 1010) which I have not used for about four years. I replaced Windows XP with Ubuntu 12.10. I used my bootable USB drive. I installed and rebooted. I got the message that normal.mod is not found.

What should I do? Type exit, reboot, or quit? Should I re-install?

share|improve this question
add comment

3 Answers 3

Solved this on a machine this afternoon. It seems that one cause of this problem is the installer thinking that you have EFI secure boot, when you don't and therefore loading the incorrect GRUB files.

What you need to do is install GRUB 2. To do this you need to boot to the live instance, mount your root partition and install.

From a live instance, find the partition on which your root partition is loaded. GParted will tell you this, or you could use

sudo fdisk -l

Go for the partition in which ubuntu is installed.

Once you have your partition you need to mount it. Assuming the root partition is on /dev/sda5, that'd be:

sudo mount /dev/sda5 /mnt

Then install GRUB 2

sudo grub-install /dev/sda --root-directory=/mnt [use copy and paste for this one as there are some spaces that you need to get right.]

Assuming this is your problem, then you should just be able to reboot and everything will work fine.

Original solution for this was from here: http://ubuntujournal.blogspot.com/2012/11/fix-new-install-of-ubuntu-1210-wont-boot.html

share|improve this answer
    
Didn't work for me. I have the same problem and I'm still looking for a solution. –  ExpatEgghead Nov 7 '13 at 12:58
    
Worked for me. Thank you –  zzeroo Dec 19 '13 at 7:14
    
--root-directory is now --boot-directory in grub2 –  bain May 8 at 15:32
add comment

Grub has a small core image that is loaded at boot time. The core image dynamically loads modules which provide further functionality. i386-pc/normal.mod not found indicates that grub can not load normal.mod, which is a grub module that provides the normal command. To load normal.mod you need to tell grub where it is. To do this you can use the grub command-line (aka Rescue Console). Grub will start the command-line if there is a problem booting, or you can start it manually by holding the shift key as grub starts (to force show the grub menu), and then pressing the 'c' key.

Using grub you can explore the drives, partitions, and filesystems. You need to:

  • locate the grub install using ls or search.file
  • set grub variables $prefix and $root
  • load and run the normal module

Example

The following is just an example. You will need to adapt it to your local drive and partition setup.

where is normal.mod? look in some likely locations

grub> search.file /i386-pc/normal.mod
error: no such device: /i386-pc/normal.mod

grub> search.file /grub/i386-pc/normal.mod
error: no such device: /grub/i386-pc/normal.mod

grub> search.file /boot/grub/i386-pc/normal.mod
hd0,msdos1

found it at (hd0,msdos1)

grub> ls (hd0,msdos1)/boot/grub/i386-pc/normal.mod
normal.mod

why did grub not find it?
check $prefix - absolute location of the grub directory
(this is set when grub is installed by grub-install)

grub> echo $prefix
(hd0,msdos2)/boot/grub

check $root - default device for paths that do not include a device
grub initially sets this to the device from $prefix

grub> echo $root
hd0,msdos2

root and prefix are pointing to the wrong partition (hd0,msdos2)
set $root and $prefix to the partition where we found normal.mod (hd0,msdos1)

grub> set root=(hd0,msdos1)
grub> set prefix=(hd0,msdos1)/boot/grub

load and run normal module

grub> insmod normal
grub> normal

Some other commands that may be helpful

ls list all devices and partitions

grub> ls
(hd0) (hd0,msdos5) (hd0,msdos1)

ls partition

grub> ls (hd0,msdos1)
        Partition hd0,msdos1: Filesystem type ext* - Last modification time
2014-05-08 15:56:38 Thursday, UUID c864cbdd-a2ba-43a4-83a3-66e305adb1b6 -
Partition start at 1024KiB - Total size 6290432Kib

ls filesystem (note / at end)

grub> ls (hd0,msdos1)/
lost+found/ etc/ media/ bin/ boot/ dev/ home/ lib/ lib64/ mnt/ opt/ proc/
root/ run/ sbin/ srv/ sys/ tmp/ usr/ var/ vmlinuz initrd.img cdrom/

look inside /boot/grub
presence of i386-pc directory means this is a BIOS install
presence of x86_64-efi directory would indicate an EFI install

grub> ls (hd0,msdos1)/boot/grub
i386-pc/ locale/ fonts/ grubenv grub.cfg
share|improve this answer
add comment

I didn't find that information on forums, so I want to share some information despite the fact that this question was asked a long time ago:

If you have a large (e.g. 1TB) partition with Ubuntu installed and you didn't allocate additional one for /boot/, it could be the reason of such errors. When GRUB starts, it uses biosdisk driver for reading normal drivers from the /boot/grub/ directory. Sometimes, this directory could be physically located on the hard drive somewhere after the maximum supported by biosdisk sector. The issue could appear, for example, after system upgrade. Also, I am always face that issue after fresh installation Ubuntu 13.10, but it could differ, as it depends on motherboard/bios.

You can check that using grub recovery - after setting correct PREFIX and ROOT, try to ls /boot - if you don't see anything, but can see files there when booting from live cd/flash drive - than you have the issue described above.

You can do different things to make system bootable, but the only way to avoid that issue in future (during dist-upgrades) is to put /boot directory on a separate small partition.

share|improve this answer
add comment

protected by Community Jan 22 at 18:45

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.