Wondering how to resolve 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, error looks as shown below:
error: file '/grub/i386-pc/normal.mod' not found.
grub rescue>
Basically grub-rescue prompt is somewhat more restrict as compare to grub prompt.
This is because not all commands run in this shell.
Only few commands work at the grub-rescue prompt.
Very first command which we tried was “ls” command which worked and it will show the all the devices or partitions which 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 which were present in the system.
After that we run the “ls” command on each partition, which gives us some unexpect output.
It tells if the file-system is known or not.
Grub only recognizes the “ext2” file-system.
There are three partitions to work with which were (hd0,msdos2) (hd0,msdos4) (hd0,msdos6).
Partitions names will as shown below:
(hd0,msdos1) = /dev/sda1
(hd0,msdos2) = /dev/sda2
and so on. Now, in words (hd0,msdos1) will be the 1st partition in hard-drive 0 and (hd0,msdos2) means 2nd partition in hard-drive 0.
Since the system had only single hard-drive and it’s been divided into partitions, so all partition contains (hd0).
Partitions except the known file systems showed the error of “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 which provides the use of 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 if the file is present there or not.
We can do this using 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 partition. Let’s say we get it in the 1st partition.
So, now we need to set the prefix variable to the partition which contains the require file.
prefix variable is set to the location of 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 set command.
Also, we need to set the root to the same partition as that of 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 now.
So for that we have to import the module. To import it, we would use insmod command.
grub rescue> insmod normal
grub rescue> normal
Now, the grub menu would be shown and you can enter into the system safely.
Case 2: ‘normal.mod’ is not present
Basically, the whole procedure is for the case when the require module is misplace.
But what if it isn’t present at all in any partition and somehow got delete.
So, try to find the module in each known partition but couldn’t locate it anywhere.
Now we have to do the work which normal module would’ve done if it would be 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 futhur 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 which contains the kernel image using the set command so that it always points to the right location.
grub rescue> set root=(hd0,msdos4)
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 if we would reboot the system, same error would’ve been shown and we have to repeat the same 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 work.
[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.
GET STARTED
# |
|
Темы: 1 Сообщения: 5 Участник с: 03 сентября 2012 |
В лине не шарю. Решил исправить это. Выбрал арч. Все поставил, руководствуясь свежей инструкцией на английском языке из wiki. Когда закончил установку и послал комп в ребут, при запуске он мне выдал ошибку:
error: file '/boot/grub/i386-pc/normal.mod' not found Entering rescue mode... тут решения подобной проблемы не нашел. В инете написали что через sudo переустановить grub на нужный винт. Но текущая консоль “grub rescue” на указанные там команды не реагирует. |
Natrio |
# |
Темы: 47 Сообщения: 4765 Участник с: 08 января 2011 |
В rescue mode работает команда ls , которой можно посмотреть список доступных дисков и разделов. Они будут выведены каждый в скобках, например (hd0,1) Чтобы увидеть, каталоги из раздела (hd0,1) надо набрать ls (hd0,1)/ Чтобы увидеть что в каталоге /boot/ есть подкаталог grub и т.д. , надо набрать ls (hd0,1)/boot/ Когда вы найдёте правильный раздел, например (hd0,1), на котором находится /boot/grub/i386-pc/normal.mod , если конечно вы не ставили boot на отдельный раздел, сделайте (вместо hd0,1 укажите тот раздел, который вы нашли) set root=(hd0,1) и возможно ещё понадобится set prefix=($root)/boot/grub но это по обстоятельствам. Если это всё найдено и сделано, вводите команду normal, и вы попадёте в меню GRUB2, если оно есть. P.S. |
proffessor |
# |
Темы: 1 Сообщения: 5 Участник с: 03 сентября 2012 |
по команде ls, он мне отобразил:
(hd0) (hd0,msdos4) (hd0,msdos3) (hd0,msdos2) (hd0,msdos2) (hd0,msdos1) по команде ls на любой из них, пишет что “unknown filesystem” |
Natrio |
# |
Темы: 47 Сообщения: 4765 Участник с: 08 января 2011 |
Пишите
ls (hd0,1)/ ls (hd0,2)/ ls (hd0,3)/ ls (hd0,4)/ На конце не забывайте слэш, это обязательно. Внутри и после скобок никаких пробелов не должно быть. |
proffessor |
# |
Темы: 1 Сообщения: 5 Участник с: 03 сентября 2012 |
извиняюсь за тупняки. видимо криво вводил команду. папка “grub” обнаружилась на (hd0,1), но не в папке “boot”, а просто в корне папки. Команду «set root=(hd0,1)“ и ”set prefix=($root)/grub“выполнил, а вот команда ”normal“ сказала что ”unknown comand» |
Natrio |
# |
Темы: 47 Сообщения: 4765 Участник с: 08 января 2011 |
Виноват, забыл про модуль
insmod $prefix/i386-pc/normal.mod normal Что называется, читайте вики! Так как вы таки ухитрились поставить /boot/ на отдельный раздел, ищите где сделали ошибку при установке. grub-install /dev/sda при смонтированном разделе /boot/ |
proffessor |
# |
Темы: 1 Сообщения: 5 Участник с: 03 сентября 2012 |
да, немного затуп в английском, поэтому в вики и не сообразил, каюсь. Ваша команда не помогла. Зато помогло забить полностью адрес к normal,mod,как у меня указан, БЕЗ $prefix. Теперь, извините, но чтобы не плодить темы, спрошу сюда же, 2 первых варианты загрузки(сори, название не записал), не сработали, третий вариант пошел, НО, теперь запрашивает login и потом пароль. Но логин я нигде не указывал, только имя localhost. Оно не подошло. Какой же тогда логин?) З.Ы. да, я уже сажусь на шею, так как чесс слово, искать нет сил, выходные, вино, расслабился. |
Natrio |
# |
Темы: 47 Сообщения: 4765 Участник с: 08 января 2011 |
Кто спрашивает логин и пароль? Линукс или GRUB? Извините, но хотя бы пароль от логина root вы должны были задавать при установке. |
salatovij |
# |
Темы: 20 Сообщения: 87 Участник с: 16 июля 2012 |
Логин: root |
proffessor |
# |
Темы: 1 Сообщения: 5 Участник с: 03 сентября 2012 |
спасибо, вдуплил сам уже) думаю что проблем решена, тему можно закрывать) |
Heya! Hope you all are doing well. Me too. So, today I am gonna share something amazing and insightful. I have attended a meetup held by LinuxChix last Sunday. So after the talks, there held a chaos engineering session. Even though I hadn’t attended any session like this before, I was eager to experience these things myself. Because whenever I do something on my system, I am always very careful in case it doesn’t run into any system failures. So, this was a golden opportunity for me. In the session, my friend Neeraj and I were given a system with the error shown as:
error: file '/grub/i386-pc/normal.mod' not found.
grub rescue>
We have to resolve this error and get into the system safely. We were at the grub-rescue prompt. Basically grub-rescue prompt is somewhat more restricted as compared to grub prompt. This is because not all commands run in this shell. Only some selected commands work at the grub-rescue prompt. Very first command which we tried was “ls” command which worked and it showed the all the devices or partitions which 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 which were present in the system. After that we run the “ls” command on each partition, which gives us some unexpected output. It tells if the file-system is known or not. Grub only recognizes the “ext2” file-system. So, we were left with only three partitions to work with which were (hd0,msdos2) (hd0,msdos4) (hd0,msdos6). Now you might be wondering what does this partition name means. So, if I would explain in short, it would be like
- (hd0,msdos1) = /dev/sda1
- (hd0,msdos2) = /dev/sda2
and so on. Now, in words (hd0,msdos1) will be the 1st partition in hard-drive 0 and (hd0,msdos2) means 2nd partition in hard-drive 0. Since the system had only single hard-drive and it’s been divided into partitions, so all partition contains (hd0). Partitions except the known file systems showed the error of “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 which provides the use of 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
So, let’s consider the first case for now ie the file has been displaced and could be in some other partitions. Grub looks for this module in the /boot/grub/i386-pc/ by default(Here i386-pc is specific, it depends on your system architecture). For that we have to check the contents of each of the three partitions in order to ensure if the file is present there or not. We can do this using ls command.
grub rescue> ls (hd0,msdos1)/boot/grub/i386-pc/
We need to do this for every partition. If we get the required module in any of the partition. Let’s say we get it in the 1st partition. So, now we need to set the prefix variable to the partition which contains the required file. prefix variable is set to the location of 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. So we can set the prefix variable using set command. Also, we need to set the root to the same partition as that of 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 now. So for that we have to import the module. To import it, we would use insmod command.
grub rescue> insmod normal grub rescue> normal
Now, the grub menu would be shown and you can enter into the system safely.
Special case:
In this there can be situations like the normal.mod is not present in the exact location we are looking into. Like in our case, we are trying to locate it into “(hd0,msdos1)/grub/boot/i386-pc/”. But what if it is present in the location “(hd0,msdos1)/root/”, then pointing prefix to this location won’t be useful and also we can’t transfer it to its correct location. So, to resolve cases like this what we can do is use insmod command to import the normal module as:
grub rescue> insmod (hd0,msdos1)/root/normal.mod grub rescue> normal
Using this you would be able to use the normal module and get into the GRUB menu. But since it isn’t placed in its correct location, this means that there were some problem while installing grub. So, if you reboot the system, you would again be thrown into the grub rescue prompt and have to follow the same procedure. It would be better if you install the grub again using the following command after entering into the system terminal:
$ sudo grub-install /dev/sda
And then you are good to go.
Case 2: ‘normal.mod’ is not present
Well, the whole procedure was 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. To your curiousness, this was the case with us in chaos engineering session. We tried to find the module in each known partition but couldn’t locate it anywhere. So, now we have to do the work which normal module would’ve done if it would be 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“(Sometimes, you can find it as “initrd-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 futhur required modules needed for booting of the system. So, very first thing we did was to 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
We finally found the above mentioned files in the (hd0, msdos4) partition. This was the great success after searching through the internet and several wrong attempts for a long time. Now, we have to set the root to the partition which contains the kernel image using the set command so that it always points to the right location.
grub rescue> set root=(hd0,msdos4)
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
Yay! finally we were able to enter into the system. We were feeling like a cracker who has solved some crucial problem(just kidding!). But yet the problem existed ie the normal module isn’t present. In case if we would reboot the system, same error would’ve been shown and we have to repeat the same 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 worked(we both crossed our fingers at that moment). And Hurrah! we have successfully solved the problem.
We both were appreciated by the people there. It was really an amazing experience. Cocoa was our mentor during the session and helped us in understanding things and showed us the path to solve the problem. I really look forward to attend more of these sessions. I think you should also. So, watch the LinuxChix space for more of these session.
References:
- https://wiki.archlinux.org/index.php/GRUB#Normal_loading
- https://askubuntu.com/questions/266429/
For now, bidding you goodbye. Meet you in the next blog. Till then…
Be curious and keep learning!
Sometimes when dealing with 32-bit Linux distributions, you may run into Grub error: file '/grub/i386-pc/normal.mod' not found
error even on a fresh installation. For example, Debian Buster’s 32-bit install (full DVD version) has this issue occasionally. The simplest, yet the most time-consuming, approach is reinstallation. But there’s a much better way to fix this issue. In this article, we cover how to fix grub/i386-pc/normal.mod not found error.
The root cause
The root cause of the issue could be due to two reasons:
- Lack of files in
/boot/grub/
because of unintentional deletion or faulty installation process - Corrupted file system or hard drive
We can only resolve the matter if GRUB files are missing. Otherwise, if the file system is corrupted reinstallation is required. In the worst case, the hard drive should be replaced.
Fixing missing grub/i386-pc files
We need to copy missing files to /boot/grub
. However, the grub rescue
mode doesn’t allow any copy operations. Hence we first somewhat have to boot the system and then copy files as needed. The positive thing is that a copy of missing files is available under the /usr/lib/grub/i386-pc
path.
To boot the system, we need to get out of rescue
mode and switch to the normal grub
mode where we have commands like linux
and boot
that allow us to load the kernel manually and boot the system.
Going from grub rescue to grub normal mode
The first thing is to find your Linux partition (or /boot
partition if it’s separate from the /
partition). For that run,
grub rescue> set pager=1 grub rescue> ls
You should get something like this,
(hd0) (hd0,msdos1) (hd0,msdos2) (hd0,msdos3) (hd0,msdos4)
Now you need to ls
each partition to find out which points to your Linux installation if you don’t know already. For that run,
grub rescue> ls (hd0,msdosX) # X can be any number based on previous command output
Take note of the partition number and then run,
grub rescue> set root=(hd0,msdos2) # replace `msdos2` with your Linux partition grub rescue> set prefix=(hd0,msdos2)/usr/lib/grub/ grub rescue> insmod normal grub rescue> normal
After that, you should see your grub prompt has changed from grub rescue>
to grub>
. Now we are in normal GRUB mode.
Boot the system by loading the kernel manually
The next step is to load the kernel and boot the system as follows,
grub> linux /boot/vmlinuz-X.YY.Z root=/dev/sda1 grub> initrd /boot/initrd.img-X.YY.Z grub> boot
Once you run the boot
command, your Linux should start booting.
Copy grub files to /boot/grub
After booting the system successfully the last step is to copy the missing files and update the GRUB for safety as follows:
$ sudo cp -r /usr/lib/grub/i386-pc /boot/grub $ sudo update-grub # or grub-mkconfig -o /boot/grub/grub.cfg
To ensure everything is working, do a reboot. Hopefully, you won’t see grub/i386-pc/normal.mod not found
anymore 😀
References
- https://www.linux.com/training-tutorials/how-rescue-non-booting-grub-2-linux/
- https://askubuntu.com/questions/266429/error-file-grub-i386-pc-normal-mod-not-found
- https://unix.stackexchange.com/questions/70538/grub-error-file-grub-i386-pc-normal-mod-not-found/265897
Inline/featured images credits
- Featured image by Hebi B. from Pixabay
- Печать
Страницы: [1] Вниз
Тема: error: file ‘/boot/grub/i386-pc/normal.mod’ not found. Ubuntu 20.04 (Прочитано 2519 раз)
0 Пользователей и 1 Гость просматривают эту тему.
artem_2237
Вобщем переустанавливал ubuntu и вылезла такая ошибка:
error: file ‘/boot/grub/i386-pc/normal.mod’ not found.
Entering rescue mode…
Как я понимаю мне нужно указать место где находится normal.mod. Перетыкал все разделы через «ls», только в разделе (hd0,msdos7) есть boot/grub и дальше я так понимаю должно быть i386-pc/normal.mod но там такого нет.
Вот содержимое (hdo0,msdos7)/boot/grub:
gfxblacklist.txt unicode.pf2 x86_64-efi/ fonts/ grubenv
Dzhoser
cp -r /usr/lib/grub/i386-pc /boot/grub
artem_2237
cp -r /usr/lib/grub/i386-pc /boot/grub
Unknown command ‘cp’
jurganov
cp -r /usr/lib/grub/i386-pc /boot/grub
Unknown command ‘cp’
если у тебя самые простые команды типа cp отсутствуют, то явно ты наковырял систему и угробил.
или запускаешь не из установленной запущеной Ubuntu, а типа из grub rescue, уж не знаю, есть ли в ней такая команда
artem_2237
запускаешь не из установленной запущеной Ubuntu, а типа из grub rescue
Да, это grub rescue
явно ты наковырял систему и угробил
Может и так, так а делать то что?
Пользователь добавил сообщение 09 Февраля 2022, 18:06:18:
Запустился из live cd и выполнил эти инструкции по восстановлению grub — https://help.ubuntu.ru/wiki/%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_grub
Теперь при включении компьютера просто открывается консоль grub:
GNU GRUB version 2.04
Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists possible device or file completions.
grub>
« Последнее редактирование: 09 Февраля 2022, 18:06:18 от artem_2237 »
jurganov
- Печать
Страницы: [1] Вверх
Error: file ‘/boot/grub/i386-pc/normal.mod’ not found — Some time ago I did a windows update, after the update process is complete and the computer restarts, a sudden «grub rescue» error appears which causes me to not be able to boot both into the Windows and Ubuntu operating systems (my laptop is dual boot).
My laptop only displays a blank screen with an error message like this.
Problems like this it is usually because of the normal.mod file is not found so Linux cannot display GRUB.
Here are the steps to fix it.
First, type the «ls» command to display the list of partitions on the laptop.
grub rescue> ls
Then you will see a list of the partitions like this.
(hd0) (hd0.msdos8) (hd0.msdos7) (hd0.msdos6) (hd0.msdos5) (hd0.msdos3) (hd0.msdos2) (hd0.msdos1)
After that, you must recognize the Linux partition (/) by running this command.
grub rescue> ls (hd0,msdos6)/
Here my Linux partition is in (hd0.msdos6), so a list of directories will appear on my Linux when running the ls (hd0, msdos6)/ command.
Let’s assume the Linux partition is at (hd0.msdos6), then we set the prefix to (partition)/boot/grub.
grub rescue> set prefix=(hd0,msdos6)/boot/grub
The last step, run the following command and then restart the computer.
grub rescue> insmod normal
grub rescue> normal
Please boot into your Linux, if you have successfully booted and entered Linux Desktop, you have to update-grub, so there is no «grub rescue» error appears again when the laptop restarts.
$ sudo update-grub
Now you can use your computer smoothly and without any problems. That’s a tutorial on how to fix grub rescue, hopefully useful, thank you.
GRUB loading. Welcome to GRUB! error: file `/boot/grub/i386-pc/normal.mod` not found.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# GRUB loading. | |
# Welcome to GRUB! | |
# | |
# error: file `/boot/grub/i386-pc/normal.mod` not found. | |
# Entering rescue mode… | |
grub rescue> ls | |
hd(0) (hd0,msdos1) | |
grub rescue> set | |
cmdpath=(hd0) | |
prefix=(hd0,msdos1)/boot/grub | |
root=hd0,msdos1 | |
grub rescue> set prefix=(hd0,msdos1)/usr/lib/grub | |
grub rescue> insmod normal | |
grub rescue> normal | |
grub> ls (hd0,msdos1) # Display UUID | |
grub> linux /boot/vmlinuz-linux root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx # Enter UUID | |
grub> initrd /boot/initramfs-linux.img | |
grub> boot | |
> pacman -Syyu | |
> grub-mkconfig -o /boot/grub/grub.cfg | |
> grub-install —recheck /dev/sda | |
> reboot |