Welcome to grub error file boot grub i386 pc normal mod not found

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 year...

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

If you get "Unknown command 'search.file'" this means that the search.file command is not available. This is probably because you are at the grub rescue> prompt and not grub> prompt. In this case you can still carry on and use the ls command and your knowledge of your partition layout to find normal.mod.

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

  • Grub Manual: Troubleshooting: GRUB only offers a rescue shell covers the basic recovery method described above
  • For available commands and variables see Grub Manual: The list of command-line and menu entry commands and Special environment variables.
  • It may be possible to load other missing modules e.g. if the search or search.file commands are not recognised set $prefix correctly and then do insmod search, for ls do insmod ls etc. Run find /boot/grub -name *.mod on a working Linux install to see all of the dynamically loaded Grub modules.
  • You can always just boot from external media and re-install Grub.

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

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:

  1. Lack of files in /boot/grub/ because of unintentional deletion or faulty installation process
  2. 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  (Прочитано 2534 раз)

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]   Вверх

#
10 лет, 5 месяцев назад

Темы:

1

Сообщения:

5

Участник с: 03 сентября 2012

В лине не шарю. Решил исправить это. Выбрал арч. Все поставил, руководствуясь свежей инструкцией на английском языке из wiki. Когда закончил установку и послал комп в ребут, при запуске он мне выдал ошибку:

error: file '/boot/grub/i386-pc/normal.mod' not found
Entering rescue mode...

тут решения подобной проблемы не нашел. В инете написали что через sudo переустановить grub на нужный винт. Но текущая консоль “grub rescue” на указанные там команды не реагирует.
Подскажите, где я накосячил и как это исправить.

Natrio

#
10 лет, 5 месяцев назад

Темы:

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.
Это пока не линукс, а всего лишь GRUB2, загрузчик.

proffessor

#
10 лет, 5 месяцев назад

Темы:

1

Сообщения:

5

Участник с: 03 сентября 2012

по команде ls, он мне отобразил:

(hd0) (hd0,msdos4) (hd0,msdos3) (hd0,msdos2) (hd0,msdos2) (hd0,msdos1)

по команде ls на любой из них, пишет что “unknown filesystem”
на ls (hd0, 1) пишет что “invalid file name”
таки видимо я где-то серьезно накосячил

Natrio

#
10 лет, 5 месяцев назад

Темы:

47

Сообщения:

4765

Участник с: 08 января 2011

Пишите

ls (hd0,1)/
ls (hd0,2)/
ls (hd0,3)/
ls (hd0,4)/

На конце не забывайте слэш, это обязательно. Внутри и после скобок никаких пробелов не должно быть.

proffessor

#
10 лет, 5 месяцев назад

Темы:

1

Сообщения:

5

Участник с: 03 сентября 2012

извиняюсь за тупняки. видимо криво вводил команду.
папка “grub” обнаружилась на (hd0,1), но не в папке “boot”, а просто в корне папки. Команду «set root=(hd0,1)“ и ”set prefix=($root)/grub“выполнил, а вот команда ”normal“ сказала что ”unknown comand»

Natrio

#
10 лет, 5 месяцев назад

Темы:

47

Сообщения:

4765

Участник с: 08 января 2011

Виноват, забыл про модуль :)

insmod $prefix/i386-pc/normal.mod
normal

Что называется, читайте вики!
https://wiki.archlinux.org/index.php/Gr … ue_console

Так как вы таки ухитрились поставить /boot/ на отдельный раздел, ищите где сделали ошибку при установке.
По идее, обычно при установке вполне хватает выполнить

grub-install /dev/sda

при смонтированном разделе /boot/
Разумеется, вместо /dev/sda надо подставить текущее устройство диска (не раздела, то есть без цифры!), на который вы ставите GRUB2.

proffessor

#
10 лет, 5 месяцев назад

Темы:

1

Сообщения:

5

Участник с: 03 сентября 2012

да, немного затуп в английском, поэтому в вики и не сообразил, каюсь.
Ваша команда не помогла. Зато помогло забить полностью адрес к normal,mod,как у меня указан, БЕЗ $prefix.
Теперь, извините, но чтобы не плодить темы, спрошу сюда же, 2 первых варианты загрузки(сори, название не записал), не сработали, третий вариант пошел, НО, теперь запрашивает login и потом пароль. Но логин я нигде не указывал, только имя localhost. Оно не подошло. Какой же тогда логин?)

З.Ы. да, я уже сажусь на шею, так как чесс слово, искать нет сил, выходные, вино, расслабился.

Natrio

#
10 лет, 5 месяцев назад

Темы:

47

Сообщения:

4765

Участник с: 08 января 2011

Кто спрашивает логин и пароль? Линукс или GRUB?
Извините, но хотя бы пароль от логина root вы должны были задавать при установке.

salatovij

#
10 лет, 5 месяцев назад

Темы:

20

Сообщения:

87

Участник с: 16 июля 2012

ProFFeSSoR
да, немного затуп в английском, поэтому в вики и не сообразил, каюсь.
Ваша команда не помогла. Зато помогло забить полностью адрес к normal,mod,как у меня указан, БЕЗ $prefix.
Теперь, извините, но чтобы не плодить темы, спрошу сюда же, 2 первых варианты загрузки(сори, название не записал), не сработали, третий вариант пошел, НО, теперь запрашивает login и потом пароль. Но логин я нигде не указывал, только имя localhost. Оно не подошло. Какой же тогда логин?)

З.Ы. да, я уже сажусь на шею, так как чесс слово, искать нет сил, выходные, вино, расслабился.

Логин: root
Пароль: то_что_вы_указывали(опционально)

proffessor

#
10 лет, 5 месяцев назад

Темы:

1

Сообщения:

5

Участник с: 03 сентября 2012

спасибо, вдуплил сам уже)
думаю что проблем решена, тему можно закрывать)

Понравилась статья? Поделить с друзьями:
  • Weissgauff e21 ошибка как исправить
  • Weissgauff e10 ошибка что значит
  • Weishaupt ошибка 43h
  • Weishaupt ошибка 27h что это
  • Weishaupt wg30n 1 c коды ошибок горелка