помилка: файл '/grub/i386-pc/normal.mod' не знайдено


46
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 бачить дуже малу офіційну підтримку, незважаючи на те, що в один момент натиснув на LTS Ubuntu Server. Я створюю резервну копію даних і перевстановлюю ОС, і більше не торкаюся 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
  • завантажте і запустіть звичайний модуль

Приклад

Далі - лише приклад. Вам потрібно буде адаптувати його до локального налаштування диска та розділів.

де 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

Якщо ви отримаєте "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 та $ prefix на розділ, де ми знайшли normal.mod (hd0, msdos1)

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

завантажте і запустіть звичайний модуль

grub> insmod normal
grub> normal

Деякі інші команди, які можуть бути корисними

У списку всіх пристроїв та розділів

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встановити груб. Я думаю, що встановлення LVM якось сплутало мою грубку.
DavidG

Я думаю, якщо ви отримаєте команду "Невідома команда" файл пошуку ", як я щойно робив, саме час відмовитися. Моя порада людям ніколи не встановлювати Ubuntu без DVD для відновлення Windows. Як я тільки що з'ясував, розділ відновлення - це недостатньо, коли Grub заплутається. А також ніколи не встановлюйте Ubuntu на чужому комп’ютері Windows, тому що якщо він заплутається, вони будуть справді розлючені
Scooter

@Scooter Дивіться цю відповідь, щоб отримати інструкції щодо перевстановлення Grub, завантаживши живий CD / USB.
bain

@bain Дякую за відповідь. У моєму випадку зробив перевстановлення з диска Ubuntu iso. Ubuntu зрозумів, що груб переплутався або, можливо, він автоматично записує його, але він переробив його туди, де я повернувся, щоб знову змогти завантажуватися в Windows.
Скутер

Схоже, рятувальна оболонка Grub не підтримує жодну з цих команд. "Невідома команда 'search.file'"
Керін

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 is now --boot-directory in grub2
bain

1
Ще одне просте виправлення, яке працювало для мене, - це скопіювати резервну копію групи, що знаходиться в /etc/grub.d/backup, до / boot / grub. Перевірте додане readme на відповідні папки та контури.
jhexp

У моєму випадку проблема полягала в тому, що у мене є 2 жорсткі диски, і послідовність біосів шукала спочатку неправильний диск. Цей привід мав стару пошкоджену установку.
eusoubrasileiro

Якщо ви не можете сказати, що є правильним з fdisk, це може допомогти (це допомогло мені знайти, на якому пристрої / медіа / ubuntu / якесь ім'я було включено
Майкл,

2

Я не знайшов цієї інформації на форумах, тому хочу поділитися деякою інформацією, незважаючи на те, що дане питання було задано давно:

Якщо у вас встановлений великий (наприклад, 1 ТБ) розділ з Ubuntu, і ви не виділили додатковий для / boot /, це може бути причиною таких помилок. Коли GRUB запускається, він використовує драйвер biosdisk для зчитування нормальних драйверів з каталогу / boot / grub /. Іноді цей каталог може бути фізично розташований на жорсткому диску десь після максимально підтримуваного сектором біодиска. Проблема може з’явитися, наприклад, після оновлення системи. Крім того, я завжди стикаюся з цим питанням після нової установки Ubuntu 13.10, але це може відрізнятися, оскільки це залежить від материнської плати / біографії.

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

Ви можете робити різні речі, щоб зробити систему завантажувальною, але єдиний спосіб уникнути цієї проблеми в майбутньому (під час dist-оновлення) - це поставити / завантажувати каталог на окремий невеликий розділ.


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.