ошибка: файл /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? Стоит ли переустанавливать?

52
задан 9 May 2014 в 02:21

5 ответов

მე ვერ მივაგენი ამ ინფორმაციას ფორუმებზე, ამიტომ მსურს გაგიზიაროთ ინფორმაცია იმის მიუხედავად, რომ ეს კითხვა დიდი ხნის წინ დაუსვეს:

თუ დიდი გაქვთ (მაგ. 1 ტბ) დაყოფილია Ubuntu და თქვენ არ გამოყოფთ დამატებით ნაწილს / ჩატვირთვისთვის, ეს შეიძლება იყოს ასეთი შეცდომების მიზეზი. როდესაც GRUB იწყებს, ის იყენებს biosdisk დრაივერს ნორმალური დრაივერების / boot / grub / დირექტორიიდან წაკითხვისთვის. ზოგჯერ, ეს დირექტორია შეიძლება ფიზიკურად განთავსდეს მყარ დისკზე, სადღაც ბიოსდისკის სექტორის მიერ მაქსიმალური მხარდაჭერის შემდეგ. საკითხი შეიძლება აღმოჩნდეს, მაგალითად, სისტემის განახლების შემდეგ. ასევე, მე ყოველთვის ვაწყდები ამ საკითხს Ubuntu 13.10- ის ახალი ინსტალაციის შემდეგ, მაგრამ ის შეიძლება განსხვავდებოდეს, რადგან ეს დამოკიდებულია დედაპლატაზე / ბიოზე.

შეგიძლიათ შეამოწმოთ, რომ grub აღდგენის გამოყენებით - სწორი PREFIX და ROOT დაყენების შემდეგ შეეცადეთ ls / boot - თუ ვერ ხედავთ ვერაფერს, მაგრამ შეგიძლიათ ნახოთ ფაილები ცოცხალი CD / ფლეშ დრაივიდან ჩატვირთვისას - ვიდრე თქვენ გაქვთ ზემოთ აღწერილი საკითხი.

შეგიძლიათ გააკეთოთ სხვადასხვა რამ, რომ სისტემა ჩატვირთვადი იყოს, მაგრამ ერთადერთი გზა ამის თავიდან ასაცილებლად მომავალში ეს საკითხი (დისტანციური განახლებების დროს) არის ცალკეული დანაყოფის დირექტორიის დაყენება / ჩატვირთვა.

2
ответ дан 9 May 2014 в 02:21

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

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

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

sudo fdisk -l

Go для раздела, в котором установлена ​​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

32
ответ дан 9 May 2014 в 02:21

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

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

Если вы используйте LVM, найдите имя своей группы томов с помощью lvdisplay или других команд, связанных с LVM. Активируйте его (иначе вы получите монтирование: специальный диск / dev / имя группы / раздел не существует ошибка при попытке монтирования):

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
ответ дан 9 May 2014 в 02:21

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

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

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

Пример

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

где normal.mod? поищите в некоторых вероятных местах

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

Если вы получите «Неизвестная команда '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 не нашел его?
check $ prefix - абсолютное расположение каталога grub
(это устанавливается, когда grub устанавливается с помощью grub-install)

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

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

grub> echo $root
hd0,msdos2

root и prefix указывает на неправильный раздел (hd0, msdos2)
устанавливает $ root и $ prefix на раздел, где мы нашли 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 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 (примечание / в конце)

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

44
ответ дан 9 May 2014 в 02:21

Это проверено и работает, на случай, если вышеуказанные решения все еще не работают:

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

Второй этап является существенным .

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

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

Это давняя проблема, которая существует в Ubuntu до 17.10 включительно.

-3
ответ дан 15 October 2019 в 09:54

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

Похожие вопросы: