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
use your windows partition as your primary boot device
. Цей останній крок є важливим. НЕ ВИКОРИСТОВУЙТЕ / завантажуйте. Можливо, є інше рішення: спробуйте змінити вручну завантажувальний пристрій під час запуску; однак, я не думаю, що це спрацює. Це давня проблема, яка зберігається в Ubuntu до 17.10. Дякую.