Wondering how to resolve the Ubuntu error “/boot/grub/i386-pc/normal.mod not found”? We can help you.
As part of our Server Management Services, we assist our customers with several Ubuntu queries.
Today, let us see how our Support techs proceed to resolve it.
How to resolve Ubuntu error “/boot/grub/i386-pc/normal.mod not found”?
Typically, the error looks like this:
The grub-rescue prompt is somewhat more restrictive as compared to the grub prompt.
This is because not all commands run in this shell.
Only a few commands work at the grub-rescue prompt.
The first command that we tried was “ls” command which worked and it will show all the devices or partitions that were present in the system.
So, the output was somewhat like:
grub rescue> ls
(hd0) (hd0,msdos1) (hd0,msdos2) (hd0,msdos4) (hd0,msdos5) (hd0,msdos6)
These are the partitions that were present in the system.
After that, we ran the “ls” command on each partition, which gave us some unexpected output.
It tells us if the file-system is known or not.
Grub only recognizes the “ext2” file-system.
There are three partitions to work with: (hd0,msdos2) (hd0,msdos4) (hd0,msdos6).
Partitions names will as shown below:
(hd0,msdos1) = /dev/sda1
(hd0,msdos2) = /dev/sda2
As seen here, (hd0,msdos1) will be the 1st partition in hard-drive 0, and (hd0,msdos2) will be the 2nd partition in hard-drive 0.
Since the system had only single hard-drive and it’s been divided into partitions, all partition contains (hd0).
Partitions except the known file systems showed the error “Unknown file system“.
Now, we were left with the 3 partitions to look into for the required file which is “normal.mod“.
Before going any further, we should understand the need for this file.
Basically, normal.mod is a module which grub loads at the boot time and provides the use of the normal command.
Using normal command we can display the GRUB menu.
Since the grub couldn’t locate the file in its usual location, it means either the file has been displaced or it could have been deleted somehow.
Case 1: ‘normal.mod’ is displaced from its default location
In this case, Grub looks for this module in the /boot/grub/i386-pc/ by default(Here i386-pc is specific.
For that, we have to check the contents of each of the three partitions in order to ensure that the file is present there or not.
We can do this using the ls command.
grub rescue> ls (hd0,msdos1)/boot/grub/i386-pc/
Then, we need to do this for every partition.
If we get the required module in any of the partitions. Let’s say we get it in the 1st partition.
So, now we need to set the prefix variable to the partition that contains the required file.
prefix variable is set to the location of the grub directory at the time of grub installation.
So, it is possible that grub couldn’t locate the normal.mod because the prefix variable is pointing to the wrong partition.
Then, we can set the prefix variable using the set command.
Also, we need to set the root to the same partition as that of the prefix. For eg
grub rescue> set root=(hd0,msdos1)
grub rescue> set prefix=(hd0,msdos1)/boot/grub
Now, since we have set the correct path to root and prefix, we can use the normal module.
So for that, we have to import the module. To import it, we would use the insmod command.
grub rescue> insmod normal
grub rescue> normal
Now, the grub menu will be shown and you can enter into the system safely. This will help resolve the Ubuntu error “/boot/grub/i386-pc/normal.mod not found”.
Case 2: ‘normal.mod’ is not present
Basically, the whole procedure is for the case when the required module is misplaced.
But what if it isn’t present at all in any partition and somehow got deleted.
So, we tried to find the module in each known partition but couldn’t locate it anywhere.
Now we have to do the work that normal module would’ve done if it had been present.
Therefore we have to find the kernel files and boot the system manually.
To boot the system we would require the kernel file which would be something like “vimlinuz-linux” and the file “initramfs-linux.img“.
The vimlinuz-linux is actually the kernel image which mounts the root partition on the hard-disk. The initramfs-linux.img loads the further required modules needed for booting of the system.
Firstly, locate these files in any of the known partitions.
So, we looked for these files under the /boot directory using the same ls command as:
grub rescue> ls (hd0,msdos2)/boot/
# some output
grub rescue> ls (hd0,msdos4)/boot/
# some output
Once we find the above-mentioned files in the (hd0, msdos4) partition.
Now, we have to set the root to the partition that contains the kernel image using the set command so that it always points to the right location.
grub rescue> set root=(hd0,msdos4)
The next thing to be done is to run the kernel image.
So for that, we need to import the Linux module using the insmod command and also the initramfs-linux.img file using the initrd command:
grub rescue> insmod linux
grub rescue> linux /boot/vimlinuz-linux root=/dev/sda4
grub rescue> initrd /boot/initramfs-linux.img
And finally, the boot command, which would boot the system(using the above files) and allow us to get into the system
grub rescue> boot
But yet the problem existed ie the normal module isn’t present.
In case we reboot the system, the error persists and we have to repeat the procedure.
So to resolve it we need to do the same thing which we did for the 1st case. Do you remember it? Yeah, we need to re-install the grub to repair the damaged or deleted files using the system terminal.
$ sudo grub-install /dev/sda
As soon as the installation successfully completed, we reboot the system to check if it actually works.
[Stuck in between? We’d be glad to assist you]
Conclusion
In short, today we saw steps followed by our Support Techs to fix this Ubuntu error.
PREVENT YOUR SERVER FROM CRASHING!
Never again lose customers to poor server speed! Let us help you.
Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.
Thanks for the help so far, however I’m stuck. I have to partitions can be used for both Boot and Root – (hd0,msdos5 and hd0,msdos7). How do I determine which one to use for Boot and Root?
Thank you in advance.
Hello Bill,
We’ll be happy to talk to you on chat (click on the icon at right-bottom).
Thanks a lot for this article, It really saved my day.
I had dual boot windows and linux mint on my laptop and messed up windows partition while clearing one drive. Couldn’t login into neither windows nor linux and was getting the grub not found error.
Followed the steps mentioned above and found the i386-pc file in one of the partitions and normal grub mode started.
Thanks a lot man. !!
Thanks for the feedback.We are glad to know that it worked for you ? .
Thanks for this article, it literally saved me hours.
Un my case, installing debian, having 2 separated HDs, it was pointing to hd0 but the grub stuff for some magical reason was installed in hd1, so I could start the system and grub-install in sda (hd0)
Hi Fabio,
Glad to know that our article helps you solves the issue ? .
insmod linux did not worked, got error: file ‘/boot/grub/i386-pc/linux.mod’ not found
Hi,
Our Experts can help you with the issue, we’ll be happy to talk to you on chat (click on the icon at right-bottom).
I have the same issue
Hi,
Please contact our support team via live chat(click on the icon at right-bottom)
It still showing me
File ‘/boot/grub/i386-pc/linux.mod’ not found
Hi,
Our experts can help you with the issue.we will be happy to talk to you through our live chat(click on the icon at right-bottom).
Still I am getting same error ‘/boot/grub/i386-pc/normal.mod’ not found
Hi Manish,
Please contact our support team through live chat (click on the icon at right-bottom).
Hello, i cant find neither boot or root, only cache, home and log how i proceed?
Hi,
Please contact our support team through live chat (click on the icon at right-bottom).
Hola amigo cuando le doy insmod normal se me queda nota found
Hi,
Please contact our support team through live chat (click on the icon at right-bottom).
same problem
Hello Manelli,
Please contact our support team through live chat (click on the icon at right-bottom).
Thank you so much! First case worked like a charm.
Glad to know that our article helps you solves the issue ? .
This problem can also be caused by installing Linux from pendrive in UEFI mode while systems from HDD boots in legacy BIOS mode (SecureBoot is off). This was in my case.
The solution would be to either boot pendrive/DVD in legacy mode or (in my case) to already have Linux on HDD. I installed LinuxMINT 21 Vanessa in HDD. But after installation I encountered the problem mentioned in this thread and was unable to solve it because i386-ppc/normal.mod nor i386-pc/linux.mod simply weren’t there and x86_64-efi/normal.mod wasn’t working.
After a while I booted my older LinuxMINT 20 Ulyana from portable HDD and run update-grub on it. Then I booted LinuxMINT 21 from older version’s grub and runned grub-install&update-grub on it. Worked like a charm.
Thanks a lot bro, I made it following the first case. Magic works. I was actually desperate…and planned to return to win. Thanks god you saved me
Hi James,
Thanks for the feedback.We are glad to know that it worked for you ? .
I did “ls (PARTITION)/boot/grub/i386-pc/” on every partition, but Grub Rescue can’t see normal.mod despite the file exists (I can see it on Ext2 partition from under Windows).
Hello Marek,
Our Experts can help you with the issue, we’ll be happy to talk to you on chat (click on the icon at right-bottom).
okay, I have a little big problem. when I run the ‘ls’ command, it only gives me two partitions, (hd0) and (hd0,msdos1)
is that normal? how can I solve it?
Hi,
it suggests that GRUB is detecting only one hard drive and one partition; verify your system’s hardware configuration and update GRUB if needed.