A inicialização UEFI do Linux sem disco falha em pivot_root desejando a raiz especificada, mas como determino o dispositivo raiz?

A inicialização UEFI do Linux sem disco falha em pivot_root desejando a raiz especificada, mas como determino o dispositivo raiz?

Precisamos configurar um servidor EFI PXE. Consegui fazer com que uma máquina de teste inicializasse até chegarmos à parte pivot_root do processo de inicialização. Aí eu recebo o temido:

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

E sim, a lista de partições é nil.

Alguém pode me dizer como obter o dispositivo root= para meu legado grub conf para máquinas centos sem disco? Obviamente, eu já tentei /dev/nvram, e /dev/ram.

Quando inicializamos PXE (modo legado), não há problema ou configurações especiais solicitando um dispositivo raiz. Simplesmente funciona. Esta é a primeira vez que trabalho com inicialização EFI, então tenho certeza de que estão faltando alguns parâmetros.

Configuração atual: CentOS 6.8, Legacy Grub (bootx64), ISC DHCP, TFTP

Configuração EFI atual (/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

CORREÇÃO FINAL

Portanto, o problema é que eu estava usando a sintaxe errada para a configuração herdada do GRUB. Graças ao #CENTOS no Freenode (IRC), um dos membros (desculpas, não me lembro do nick) apontou que o Legacy GRUB não entende a appenddiretiva. Então, mover os argumentos na appendstring da minha configuração (acima) para a kerneldiretiva e perder a appendstring na initrdlinha e, finalmente, remover o =entre initrde /discover..., corrigiu o problema:

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

Responder1

AFAICT (mas meu próprio experimento é mais com o Windows sem disco, mesmo que tenhamos começado a portar nossa solução sem disco para o Windows antes de ser eliminada por esta grande empresa de TI de duas letras...), você pode precisar de algo diferente. 1 - Não especifique nenhum "root=" na linha do kernel 2 - use uma linha initrd (e a unidade ram init relacionada, que você precisa compilar) 3 - neste initrd, inicie qualquer dispositivo de bloco e driver de sistema de arquivos que você precisa montar sua partição raiz (e outras partições também)

Verifique esta página: http://linux120919.blogspot.fr/2015/01/redhat-65-as-legacy-and-uefi-pxe.html por exemplo

informação relacionada