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


47
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? Должен ли я переустановить?


1
ОТВЕТ НИЖЕ НИКОГДА НЕ РАБОТАЕТ. ЭТО РАБОТАЕТ: переустановите свою ОС, перейдите к «сделать что-то еще», затем создайте таблицы разделов use your windows partition as your primary boot device. Этот последний шаг важен. НЕ ИСПОЛЬЗУЙТЕ / загрузитесь. Может быть другое решение: попробуйте вручную изменить загрузочное устройство во время запуска; Однако я не думаю, что это сработает. Это давняя проблема, которая сохранялась в Ubuntu вплоть до 17.10. Спасибо.
— Wolfpack'08

Ни одна из этих инструкций не сработала для меня. Фактически, использование различных инструментов восстановления усугубило проблему. Я смог переустановить grub, но из-за того, что я использую lvm2, ядро ​​не запустилось. Если вы используете lvm2 для чего-либо, то когда возникнет эта проблема, вам придется переустановить ОС. Насколько я могу судить, восстановления после неудачной комбинации обновления ядра + grub + lvm2 не происходит. lvm2 видит очень мало официальной поддержки, несмотря на то, что в какой-то момент его подталкивают к Ubuntu Server LTS. Я создаю резервную копию своих данных и переустанавливаю ОС и больше не буду касаться lvm2. Выучил мой урок.
— CubicleSoft

1
Я уже перешел с lvm2 и с тех пор у меня не было проблем. Ни одна из моей инфраструктуры больше не использует это. Стандартные решения по спасению системы (как графические, так и CLI) не знают или почти не знают о LVM, и это является достаточной причиной для того, чтобы я не использовал LVM. Даже если бы я следовал вашим указаниям, чтобы восстановить систему, и они сработали, проблема, вероятно, повторится в будущем. Переустановка ОС и отключение LVM были для меня лучшим и быстрым вариантом.
— CubicleSoft

1
В моем случае @Wolfpack состоит в том, что без установки normal.mod невозможно переустановить Ubuntu, lgoin не работает. Что я могу сделать?
— HoCo_

1
@ Wolfpack'08 Пожалуйста, отправьте ваше решение в качестве ответа. Публикация решений в качестве комментариев обходит принципы сайта. Вы должны также упомянуть, какой «ответ ниже никогда не работает», так как их больше.
— Мелебиус

Ответы:


40

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

почему личинка не нашла его?
check $ prefix - абсолютное местоположение каталога 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


+1 После выполнения этих шагов, чтобы загрузиться в мою установку Ubuntu, я побежал, sudo grub-install /dev/sdXчтобы установить мой grub. Я думаю, что установка LVM как-то запутала мой grub.
— DavidG

Я думаю, если вы получите «Неизвестная команда« search-file », как я только что сделал, пришло время сдаться. Мой совет людям никогда не устанавливать Ubuntu без DVD-диска восстановления Windows. Как я только что узнал, наличие раздела восстановления недостаточно, когда Граб испортится, а также, никогда не устанавливайте Ubuntu на чей-то компьютер с Windows, потому что, если он испортится, они действительно разозлятся
— Scooter

@Scooter Смотрите этот ответ для получения инструкций по переустановке Grub путем загрузки live CD / USB.
— Bain

@bain Спасибо за ответ. В моем случае сделал переустановку с диска Ubuntu iso. Ubuntu выяснил, что grub испорчен или, может быть, он просто автоматически записывает поверх него, но он перенаправил его туда, где я снова смог загрузиться в Windows.
— Скутер

Похоже, что спасательная оболочка Grub не поддерживает ни одну из этих команд. "Неизвестная команда 'search.file'"
— Cerin

30

Решил это на машине сегодня днем. Кажется, что одной из причин этой проблемы является установщик, который думает, что у вас есть безопасная загрузка 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


1
Не работал для меня У меня та же проблема, и я все еще ищу решение.
— ExpatEgghead

3
--root-directory теперь --boot-directory в grub2
— bain

1
Еще одно простое исправление, которое сработало для меня, - скопировать резервную копию grup, расположенную в /etc/grub.d/backup, в / boot / grub. Проверьте прилагаемый файл readme для соответствующих папок и путей.
— Jhexp

В моем случае проблема заключалась в том, что у меня было 2 жестких диска, а последовательность bios сначала искала неправильный диск. На этом диске была старая поврежденная установка grub.
— eusoubrasileiro

Если вы не можете сказать, какой из fdisk является правильным, эта SO может помочь (она помогла мне определить, какое устройство / media / ubuntu / some-name было включено
— Michael

2

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

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

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

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


1

Другие решения могут не работать, если вы получите 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

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


0

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

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

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

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

НЕ ИСПОЛЬЗУЙТЕ/boot .

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.