Ошибка загрузки бездискового Linux UEFI на pivot_root при необходимости указать root, но как определить корневое устройство?

Ошибка загрузки бездискового Linux UEFI на pivot_root при необходимости указать root, но как определить корневое устройство?

Нам нужно настроить сервер EFI PXE. Мне удалось успешно загрузить тестовую машину до тех пор, пока мы не добрались до части pivot_root процесса загрузки. Затем я получаю ужасное:

VFS: Cannot open root device "nvram" or unknown-block(0,0)
Please append a correct "root=" boot option; here are the available partitions:

И да, список разделов есть nil.

Может ли кто-нибудь сказать мне, как можно получить root= устройство для моего устаревшего grub conf для бездисковых машин centos? Очевидно, я уже пробовал /dev/nvram, и /dev/ram.

Когда мы загружаемся PXE (устаревший режим), нет никаких проблем или специальных настроек, запрашивающих корневое устройство. Это просто работает. Это первый раз, когда я работал с загрузкой EFI, поэтому я уверен, что я просто упустил некоторые параметры.

Текущая настройка: CentOS 6.8, Legacy Grub (bootx64), ISC DHCP, TFTP

Текущая конфигурация EFI (/EFI/efidefault):

default=0
timeout=3
splashimage=(nd)/splash.xpm.gz
#prompt 0
#ONTIMEOUT default

title Linux
   menu label UEFI Image
   menu default
   root (nd)
   kernel /discovery_images/2.6.32-642.el6.x86_64/vmlinuz-2.6.32-642.el6.x86_64 root=/dev/nvram
   append initrd=/discovery_images/2.6.32-642.el6.x86_64/centos-initramfs-2.6.32-642.el6.x86_64.img.gz rw shell init=/init biosdevname=0 consoleblank=0 vga=773 ramdisk_size=9216

ОКОНЧАТЕЛЬНОЕ ИСПРАВЛЕНИЕ

Итак, проблема была в том, что я использовал неправильный синтаксис для устаревшей конфигурации GRUB. Спасибо #CENTOS в Freenode (IRC), один из участников (извините, я не помню его/ее ник) указал, что устаревшая версия GRUB не понимает директиву append. Поэтому, переместив аргументы в appendстроке моей конфигурации (выше) в kernelдирективу и потеряв appendстроку в initrdстроке, а затем, наконец, удалив =between initrdи /discover..., мы исправили проблему:

default=0
timeout=3
splashimage=(nd)/splash.xpm.gz

title Linux
   menu label UEFI Image
   menu default
   root (nd)
   kernel /discovery_images/2.6.32-642.el6.x86_64/vmlinuz-2.6.32-642.el6.x86_64 rw shell init=/init biosdevname=0 consoleblank=0 vga=773 ramdisk_size=9216
   initrd /discovery_images/2.6.32-642.el6.x86_64/centos-initramfs-2.6.32-642.el6.x86_64.img.gz

решение1

Насколько мне известно (но мой собственный эксперимент больше связан с бездисковой Windows, даже если мы начали портировать наше бездисковое решение на Windows до того, как его уничтожила эта большая двухбуквенная IT-компания...), вам может понадобиться что-то другое. 1 - Не указывайте никаких "root=" в строке ядра 2 - Используйте строку initrd (и связанный с ним init ram-диск, который вам нужно создать) 3 - В этом initrd инициируйте любое блочное устройство и драйвер файловой системы, которые вам нужны для монтирования вашего корневого раздела (и других разделов тоже)

Проверьте эту страницу: http://linux120919.blogspot.fr/2015/01/redhat-65-as-legacy-and-uefi-pxe.html например

Связанный контент