Inicialização do UEFI sem disco do Linux falha no pivot_root querendo a raiz especificada, mas como determino o dispositivo raiz?

1

Precisamos configurar um servidor EFI PXE. Consegui com sucesso conseguir que uma máquina de teste inicializasse até chegarmos à parte pivot_root do processo de inicialização. Então eu pego 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 se pode obter o root = device para meu leg herdado para máquinas centos sem disco? Obviamente, eu já tentei /dev/nvram e /dev/ram .

Quando inicializamos o PXE (modo herdado), não há problemas ou configurações especiais solicitando um dispositivo raiz. Apenas funciona. Esta é a primeira vez que trabalhei com a inicialização da EFI, então tenho certeza que estou perdendo alguns parâmetros.

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

Configuração atual do 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

FINAL FIX

Então, 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 lembro do nick dele) apontou que o Legacy GRUB não entende a diretiva append . Então, movendo os argumentos na string append da minha configuração (acima) para a diretiva kernel e perdendo a string append na linha initrd , e finalmente, removendo a = entre initrd e /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
    
por cloaked1 20.09.2016 / 23:50

1 resposta

2

AFAICT (mas meu próprio experimento é mais com o Windows sem disco, mesmo se começarmos a portar nossa solução sem disco para o Windows antes de ser morto por essa 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 uma unidade de init init relacionada, que você precisa construir) 3 - neste initrd, inicie o dispositivo de bloco e o driver do sistema de arquivos que você precisa para montar sua partição root (e outras partições também)

Verifique esta página: link por exemplo

    
por 21.09.2016 / 00:36