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
use your windows partition as your primary boot device
. Этот последний шаг важен. НЕ ИСПОЛЬЗУЙТЕ / загрузитесь. Может быть другое решение: попробуйте вручную изменить загрузочное устройство во время запуска; Однако я не думаю, что это сработает. Это давняя проблема, которая сохранялась в Ubuntu вплоть до 17.10. Спасибо.