Вопрос или проблема
Я устанавливаю Debian 9 на HP ProLiant DL180. Когда я загружаюсь с USB-накопителя, открывается grub2, и когда я ввожу boot
, появляется ошибка: you need to load kernel first
.
В grub-rescue
введите set
, затем нажмите Tab, это поможет вам установить первые параметры, например:
set prefix=(hd0,gpt2)/boot/grub
set root=(hd0,gpt2)
insmod normal
normal
you need to load kernel first
Чтобы загрузить ядро, используйте следующие команды:
insmod linux
linux /vmlinuz root=/dev/sda2
initrd /initrd.img
boot
Замените /dev/sda2
на ваш корневой раздел, замените gpt2
на msdos
, если у вас нет GUID таблицы разделов.
Чтобы правильно установить параметры загрузки, обратитесь к документации Ubuntu: поиск и установка
В моем случае была включена безопасная загрузка. Я просто выключил её, и это сработало для меня.
Попробуйте отключить безопасную загрузку.
Команда для проверки статуса безопасной загрузки:
mokutil --sb-state
Вам нужно определить файл ядра и обычно файл initrd, а также командную строку ядра, прежде чем вы сможете выполнить команду boot
(см. документацию Grub).
Обычные загрузочные носители предлагают меню, из которого вы можете выбрать запись. Командная строка Grub не для вас. Либо вы неправильно используете свой Grub, либо вам следует использовать другой загрузочный носитель.
Столкнулся с той же ошибкой на рабочей станции с загрузочными разделами на обоих из двух жестких дисков (/dev/sda
, /dev/sdb
); не смог найти решение здесь или где-либо еще. Описываю свое собственное решение, найденное путем проб и ошибок:
После
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-install /dev/sda
в меню загрузки GRUB отображались все операционные системы, установленные в различных разделах на /dev/sda
и /dev/sdb
(Windows, SuSE 15.3 и более ранние). Загрузка записей с /dev/sda
работала нормально, выбор из /dev/sdb
выдавал ошибку
you need to load the kernel first…
/boot/grub2/grub.cfg
показал два жестких диска как “hd0
” и “hd1
“. F2 при запуске показывает эти записи в BIOS (старый компьютер, нет EFI):
Main:
SATA Port 0 [ST3500413AS]-(S0)]
SATA Port 1 [Optiarc DVD RW-(S1)]
SATA Port 2 None
SATA Port 3 [ST3500413AS]-(S3)]
SATA Port 4 None
SATA Port 5 None
Boot -> Boot priority order:
1: SATA CD: Optiarc DVD RW-(S1)
2: Bootable Add-in Cards
3: SATA 0: ST3500413AS-(S0)
4: SATA 3: ST3500413AS-(S3)
Интересно, не вызывает ли проблема пустой SATA Port 2?
Мое решение состояло в том, чтобы вручную отредактировать /boot/grub2/grub.cfg
(ужасно, явно не рекомендуется в заголовке файла!) и заменить все вхождения “hd1
” на “hd2
“. Затем снова:
grub2-install /dev/sda
Меню загрузки GRUB осталось таким же, но теперь загрузка работает для всех записей, включая те, что на /dev/sdb
.
Спасибо @GAD3R за отличный стартовый совет.
Вот что я должен был сделать, чтобы все исправить после обновления CentOS 7 до CentOS 8:
insmod linux
linux /boot/vmlinuz<нажмите tab здесь> root=/dev/<sda1, vda1, sda2 или другой, выясните, где установлена ваша ОС>
initrd /init<нажмите tab здесь>
boot
После загрузки обновите GRUB:
Для BIOS:
grub2-mkconfig -o /boot/grub2/grub.cfg
или для UEFI:
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
Ответ или решение
Ошибка GRUB: «вы должны сначала загрузить ядро» при установке Debian 9 на сервер HP ProLiant DL180 — это проблема, связанная с загрузкой системы. Данная ошибка возникает, когда загрузчик GRUB не может найти или загрузить ядро операционной системы. Рассмотрим возможные решения проблемы и шаги для их устранения.
Анализ проблемы
При загрузке с USB-носителя, вы входите в GRUB2, и при попытке выполнить команду boot
возникает указанная ошибка. Это может быть связано с неправильной конфигурацией загрузчика или проблемами с настройками BIOS/UEFI.
Шаги по устранению ошибки
-
Проверка настроек BIOS/UEFI:
- Secure Boot: Убедитесь, что Secure Boot выключен. Для этого:
mokutil --sb-state
Если Secure Boot активен, отключите его и попробуйте загрузиться вновь.
- Secure Boot: Убедитесь, что Secure Boot выключен. Для этого:
-
Настройка загрузки через GRUB:
- Войдите в режим
grub-rescue
и установите основные параметры:set prefix=(hd0,gpt2)/boot/grub set root=(hd0,gpt2) insmod normal normal
- После этого, чтобы загрузить ядро Linux, выполните следующие команды:
insmod linux linux /vmlinuz root=/dev/sda2 initrd /initrd.img boot
Замените
/dev/sda2
на соответствующий вашему разделу диск. Если используется таблица разделовmsdos
, заменитеgpt2
на соответствующую конфигурацию, например,msdos
.
- Войдите в режим
-
Обновление настроек GRUB:
- Если вам удалось загрузить систему, необходимо обновить настройки GRUB. Для BIOS-систем выполните:
grub2-mkconfig -o /boot/grub2/grub.cfg grub2-install /dev/sda
- Если используется UEFI, то обновите конфигурационный файл для UEFI:
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
- Если вам удалось загрузить систему, необходимо обновить настройки GRUB. Для BIOS-систем выполните:
Диагностика аппаратного обеспечения
Если вы столкнулись с многодисковой конфигурацией, как в примере с /dev/sda
и /dev/sdb
, убедитесь, что BIOS распознает устройства корректно. В случае возникновения конфликтов проверьте идентификацию дисков и, при необходимости, вручную откорректируйте файл /boot/grub2/grub.cfg
, обращая внимание на указания hd0
, hd1
и их возможные изменения до hd2
.
Заключение
Эти шаги должны помочь устранить ошибку «вы должны сначала загрузить ядро» в GRUB при установке Debian 9 на ваш сервер. Всегда сохраняйте резервные копии перед внесением изменений в системные файлы и настройки BIOS.
Обратите внимание: для получения самых актуальных инструкций и рекомендаций всегда полезно ознакомиться с документацией, предоставленной производителем вашего оборудования или используемой ОС.
Надеюсь, некоторые из этих предложений помогут вам решить возникшую проблему. Если проблема сохраняется, дальнейшее тревожное устранение может включать более детальную работу с оборудованием или дополнительные конфигурации.