Ошибка: файл /grub/i386-pc/normal.mod не найден

error: file '/grub/i386-pc/normal.mod' not found.
grub rescue>

Что я могу сделать? Я просто сижу и смотрю на это.

Я нашел свой старый нетбук (Dell Inspiron 1010), которым не пользовался около четырех лет. Я заменил Windows XP на Ubuntu 12.10. Я использовал свой загрузочный USB-накопитель. Я установил и перезагрузил. Я получил сообщение, что normal.mod не найден.

Что я должен делать? Тип exit, reboot, или же quit? Должен ли я переустановить?

9 ответов

Grub имеет небольшой образ ядра, который загружается во время загрузки. Образ ядра динамически загружает модули, которые обеспечивают дополнительную функциональность. i386-pc/normal.mod not found указывает, что grub не может загрузить normal.mod, который является модулем grub, предоставляющим обычную команду. Для загрузки normal.mod вам нужно указать grub, где он находится. Для этого вы можете использовать командную строку grub (она же Rescue Console). Grub запустит командную строку, если возникнет проблема с загрузкой, или вы можете запустить ее вручную, удерживая клавишу Shift при запуске grub (чтобы вызвать меню grub), а затем нажав клавишу "c".

Используя grub, вы можете исследовать диски, разделы и файловые системы. Вам нужно:

  • найдите установку grub с помощью ls или search.file
  • установить переменные grub $prefix и $root
  • загрузить и запустить нормальный модуль

пример

Ниже приведен только пример. Вам нужно будет адаптировать его к вашему локальному диску и настройке раздела.

где нормальный. мод? искать в некоторых вероятных местах

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

Если вы получаете "Unknown command 'search.file'" это означает, что команда search.file недоступна. Это, вероятно, потому что вы на grub rescue> быстро и не grub> незамедлительный. В этом случае вы все еще можете продолжать и использовать ls команда и ваши знания о вашей разметке раздела, чтобы найти normal.mod,

нашел его в (hd0,msdos1)

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

почему личинка не нашла его?
проверьте префикс $ - абсолютное местоположение каталога grub
(устанавливается, когда grub установлен с помощью grub-install)

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

проверьте $root - устройство по умолчанию для путей, которые не включают устройство
grub изначально устанавливает это на устройство из префикса $

grub> echo $root
hd0,msdos2

root и префикс указывают на неправильный раздел (hd0,msdos2)
установите $root и префикс $ в раздел, где мы нашли normal.mod (hd0,msdos1)

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

загрузить и запустить нормальный модуль

grub> insmod normal
grub> normal

Некоторые другие команды, которые могут быть полезны

ls перечисляет все устройства и разделы

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

раздел ls

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 (примечание / в конце)

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/

заглянуть внутрь /boot/grub
наличие каталога i386-pc означает, что это установка BIOS
Наличие каталога x86_64-efi будет указывать на установку EFI

grub> ls (hd0,msdos1)/boot/grub
i386-pc/ locale/ fonts/ grubenv grub.cfg

Решил это на машине сегодня днем. Кажется, что одной из причин этой проблемы является установщик, который думает, что у вас есть безопасная загрузка EFI, когда вы этого не делаете, и, следовательно, загружаете неправильные файлы GRUB.

Что вам нужно сделать, это установить GRUB 2. Для этого вам нужно загрузиться с живого экземпляра, смонтировать корневой раздел и установить.

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

sudo fdisk -l

Перейти на раздел, в котором установлена ​​Ubuntu.

Когда у вас есть раздел, вам нужно его смонтировать. Предполагая, что корневой раздел находится в /dev/sda5, это будет:

sudo mount /dev/sda5 /mnt

Затем установите GRUB 2

sudo grub-install /dev/sda --root-directory=/mnt[используйте копирование и вставку для этого, поскольку есть некоторые пробелы, которые вам нужно получить правильно.]

Если предположить, что это ваша проблема, тогда вы можете просто перезагрузиться, и все будет работать нормально.

Оригинальное решение для этого было здесь: http://ubuntujournal.blogspot.com/2012/11/fix-new-install-of-ubuntu-1210-wont-boot.html

Другие решения могут не работать, если вы доберетесь до grub-rescue подсказка и / или ваша конфигурация использует LVM, этот должен.

Загрузитесь с аварийного диска (совет: я храню небольшой дистрибутив на отдельном разделе моего резервного USB-диска).

Если вы используете LVM, найдите название своей группы томов с помощью lvdisplay или другие команды, связанные с LVM. Активируйте его (иначе вы получите mount: special drive /dev/volumegroupname/partition does not exist ошибка при попытке смонтировать):

vgchange -a y volumegroupname

Теперь смонтируйте свой обычный / раздел, например, на /mnt:

mount /dev/volumegroupname/partition /mnt

Установите несколько специальных устройств (а также /boot если на отдельном разделе):

mount -t proc none /mnt/proc
mount -o bind /dev /mnt/dev
mount -t sysfs /sys /mnt/sys

затем chroot в ваш обычный дистрибутив:

chroot /mnt

(Очевидно,

Наконец, переустановите GRUB2 - команды могут отличаться в зависимости от вашего дистрибутива, это работает на Slackware (если ваш диск /dev/sda):

grub-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg

Перезагрузитесь и все готово.

Я не нашел эту информацию на форумах, поэтому я хочу поделиться некоторой информацией, несмотря на то, что этот вопрос задавался давно:

Если у вас большой (например, 1 ТБ) раздел с установленной Ubuntu, и вы не выделяете дополнительный раздел для /boot/, это может быть причиной таких ошибок. Когда GRUB запускается, он использует драйвер биосдиска для чтения обычных драйверов из каталога /boot/grub/. Иногда этот каталог может быть физически расположен на жестком диске где-то после максимума, поддерживаемого сектором биодисков. Проблема может появиться, например, после обновления системы. Кроме того, я всегда сталкиваюсь с этой проблемой после новой установки Ubuntu 13.10, но она может отличаться, поскольку это зависит от материнской платы / BIOS.

Вы можете проверить это с помощью grub recovery - после установки правильных PREFIX и ROOT, попробуйте ls /boot - если вы ничего не видите, но можете видеть файлы там при загрузке с live cd/flash-диска - чем у вас проблема, описанная выше,

Вы можете делать разные вещи, чтобы сделать систему загрузочной, но единственный способ избежать этой проблемы в будущем (во время dist-upgrades) - это поместить каталог / boot в отдельный небольшой раздел.

У меня была такая же проблема, и я не мог решить ее с помощью Grub-Rescue. Я устал от большинства решений, предлагаемых здесь.

Затем я загрузился с живого носителя Ubuntu (DVD или USB) и установил инструмент восстановления загрузки, и это решило это для меня .

Как установить инструмент Boot-Repair на живой диск Ubuntu?

В моем случае менеджер загрузки UEFI был потерян при настройке BIOS.

эта решила проблему

статья из его FOSS

Я просто добавил запись, указывающую на этот файл (shimx64.efi).

Переустановка grub из приведенного выше ответа от MorrisseyJ ( /questions/210893/oshibka-fajl-grubi386-pcnormalmod-ne-najden/210904#210904) помогла, но у меня все еще была ошибка модуля, не найденная. Он искал файлы в /grub.. вместо /boot/grub.. Даже после переустановки grub несколькими способами что-то продолжало указывать туда (возможно, grubenv). Наконец, я переименовал каталог /boot и использовал grub-install /dev/sda --boot-directory=/mnt/bootкоманда, и она, наконец, изменила местоположение префикса $.

После 4 часов в этой каше я понял, что FS Labels НЕ являются простыми именами, которые где-то появятся.

Оглядываясь назад, кажется очевидным, но... это не так.

Установка Lubuntu 22.04 привела меня сюда, и простая переустановка БЕЗ этих меток решила проблему на машине x64, EFI.

Я очень надеюсь, что ты, товарищ поисковик, разберешься с этим быстрее, чем я :).

ВЫБРАННЫЙ ОТВЕТ НИКОГДА НЕ РАБОТАЕТ.

ЭТО РАБОТАЕТ:

  1. Переустановите свою ОС, перейдите к "сделать что-то еще", создайте таблицы разделов,
  2. Используйте ваш раздел Windows в качестве основного загрузочного устройства.

Второй шаг важен.

НЕ ИСПОЛЬЗОВАТЬ/boot,

Может быть другое решение: попробуйте вручную изменить загрузочное устройство во время запуска; однако, я не думаю, что это сработает, и мне еще предстоит это проверить.

Это давняя проблема, которая сохранялась в Ubuntu вплоть до 17.10.

Другие вопросы по тегам