Паника ядра при загрузке напрямую из UEFI

Я недавно установил Ubuntu 16.04 с помощью debootstrap (без повсеместного использования). Я хотел бы иметь возможность загружать его прямо из меню загрузки UEFI, без GRUB.

Я:

  • подтвердил, что ядро ​​(4.13.0-32-generic) было собрано с заглушкой EFI
  • скопировало ядро ​​и initrd в ESP
  • создал записи меню загрузки UEFI с помощью efibootmgr и с помощью оболочки EFI
  • дважды и трижды проверяли все пути
  • пытались использовать ядро ​​4.4.0-113
  • пытались предоставить параметр root = через имя устройства и UUID
  • запускали update-initramfs

Каждый раз, когда у меня возникает паника ядра:

md: Waiting for all devices to be available before autodetect
md: If you don't use raid, use raid=noautodetect
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6
Please append a correct "root=" boot option; here are the available partitions:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

(Да, разделы не указаны. ESP должен быть / dev / sda2, / на / dev / sda5 )

Система нормально загружается с использованием GRUB (установленного другим экземпляром Ubuntu в другом разделе). Удивительно, но она также отлично загружается из оболочки EFI!

Shell> fs1:\path\vmlinuz.efi root=/dev/sda5 rw initrd=\path\initrd.img

Вот команда efibootmgr, которая создает записи с ошибками:

efibootmgr -p 2 -c -g -L "Ubuntu Rescue" -l \\EFI\\ubuntu-rescue\\vmlinuz.efi -u "root=/dev/sda5 rw initrd=\\EFI\\ubuntu-rescue\\initrd.img"

Что такое Я пропустил?

Обновление: У меня есть создал виртуальную машину VirtualBox с виртуальным ESP и подключил к ней физический раздел. Затем я настроил ESP так же, как и на своем настоящем ESP.

После настройки загрузочных записей с помощью efibootmgr Ubuntu успешно загрузился из меню загрузки UEFI. Таким образом, похоже, что проблема специфична для системы.

Возможно ли, что в ядре отсутствует драйвер для контроллера памяти моего ноутбука? Это ноутбук Dell Latitude E5450 на платформе Intel 5-го поколения.

Обновление 2: Я установил на этот раздел обычный сервер Ubuntu (используя виртуальную машину), чтобы исключить проблемы, связанные с debootstrap. Проблема не устранена. Система по-прежнему полностью загружается в виртуальную машину, но не загружается напрямую из UEFI с нуля (хотя и из оболочки EFI).

2
задан 12 February 2018 в 13:44

1 ответ

Я узнал, что это распространенная проблема с UEFI Dell — похоже, они не передают параметры загрузчику EFI. Таким образом, UEFI запускает ядро, используя заглушку EFI, но отсутствует initrd и не загружается.

В настоящее время у меня нет источников под рукой, но это, похоже, распространенная проблема, и, вероятно, интересующиеся могут найти ее в Google.

Обходные пути включают:

  • Использование сценария оболочки EFI, который будет запускаться автоматически при загрузке оболочки. (также есть тайм-аут, поэтому при необходимости можно использовать оболочку)
  • Использование systemd-boot, который представляет собой загрузчик с поддержкой EFI, который может загружать ядра, используя их заглушки EFI. Pop_OS прекрасно сочетает это с kernelstub в конфигурации по умолчанию, полностью устраняя необходимость в GRUB2.
  • Вероятно, возможно встроить параметры или даже весь initrd в образ ядра, но это звучит как хлопотно.
0
ответ дан 28 April 2020 в 11:01

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

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