Como PXE inicializar um cliente UEFI com rootfs NFS?

5

Estou tentando clientes de UEFI de inicialização PXE. Minha configuração atual para clientes BIOS usa pxelinux.0 com um pxelinux.cfg / default como este:

DEFAULT vmlinuz-3.8.0-25-generic
APPEND initrd=initrd.img-3.8.0-25-generic root=/dev/nfs nfsroot=10.17.76.1:/var/lib/tribble/ephemeral ip=dhcp ro nomodeset

Mas estou me esforçando para fazer o mesmo com a UEFI, porque há tantas abordagens diferentes que podem ser tomadas, e há tão pouca documentação boa por aí.

Seguindo este guia para o PXE inicializando o netboot mini.iso no UEFI , consegui PXE inicializo no instalador, mas até agora não descobri como adaptar essas instruções ao meu caso de uso.

Portanto, há poucas coisas que eu quero depois:

  1. Qual carregador de inicialização é recomendado para clientes UEFI de inicialização PXE?

  2. Você pode me apontar um exemplo prático de usar o dito carregador de inicialização para o PXE inicializar um cliente UEFI cujos rootfs são exportados através do NFS?

  3. Eu vi muitos tutoriais fazendo referência aos módulos pxe e pxecmd do grub, mas esses não estão presentes no Ubuntu 13.04 ... eles estão obsoletos, e se sim, o que os substitui?

Opções que estou considerando:

Neste mar de opções, espero encontrar uma solução de baixo risco que continuará a ser bem suportada pelo Ubuntu.

    
por jderose 26.06.2013 / 20:22

2 respostas

4

Como fazer netboot usando o ELILO

Como obter o EFI para o netboot?

Você não precisa de nenhum software adicional para fazer com que a EFI inicie uma sessão de inicialização pela Internet. Qualquer máquina EFI pode ser configurada para iniciar uma sessão PXE / DHCP SE tiver um adaptador de rede que tenha suporte para o protocolo UNDI / PXE. A maioria dos cartões modernos tem esse suporte.

Para ativar a inicialização pela rede, você precisa entrar no menu de manutenção do gerenciador de inicialização EFI e 'Adicionar uma opção de inicialização'. Na tela, você vê a lista de dispositivos para inicializar. Pelo menos um deles deve ter a seguinte forma:

Load File [Acpi(PNP0A03,0)/Pci(5|0)/Mac(00D0B7A6FC25)]

que representam placa Ethernet (endereço Mac). Se você não tiver essa opção, significa que você não possui um adaptador de rede em sua máquina ou não possui o suporte a UNDI / PXE em sua opção ROM.

Você precisa selecionar essa opção e atribuir um nome lógico como 'netboot', por exemplo. Em seguida, você sai do menu de manutenção e volta ao menu principal. Agora você tem uma nova opção de menu de inicialização. Se você selecionar 'netboot', a EFI iniciará a solicitação de descoberta PXE / DCHP e procurará um servidor para obter um endereço IP.

No lado do servidor, você pode usar um servidor DHCP padrão.

Netbooting usando PXE

A EFI tem suporte embutido para o PXE. Na verdade, ele primeiro tenta o PXE e, em seguida, usa o DHCP como padrão quando não encontra um servidor PXE válido.

Existe um pacote de servidor PXE disponível no Linux / ia32, mas este pacote não possui as extensões necessárias para falar com o lado da EFI.

Não há necessidade de opções especiais ou sinalizadores de tempo de compilação para que o elilo funcione com o PXE em vez do DHCP padrão. Quando iniciado pela rede, o elilo detectará automaticamente se ele foi baixado via PXE ou DHCP e indicará como os arquivos subseqüentes serão solicitados.

Você precisa de uma versão especial do servidor DHCPD desenvolvido pelo Internet Software Consortium ( link ) com um patch especial para adicionar as extensões PXE . Infelizmente, a partir da versão 3.0xx, o patch ainda não entrou na árvore oficial. Ele deve aparecer na versão 3.1 do servidor dhcpd.

Em qualquer caso, o pacote elilo contém um exemplo simples de como você pode configurar o arquivo /etc/dhcpd.conf para um servidor DHCP com reconhecimento de PXE usando as extensões fornecidas no patch. Você pode procurar em examples/dhcpd-pxe.conf . A sintaxe é muito diferente de um servidor dhcpd padrão.

Os elementos-chave a serem lembrados são as camadas PXE usadas pelo elilo para solicitar as diferentes    arquivos:

Layer 0 : to get the name of the boot loader (elilo.efi)
Layer 1 : to get the name of the elilo config file
Layer 2 : to get the name of the kernel image

Há uma distinção importante entre essas camadas. Os dois primeiros (0,1) e solicitados sistematicamente, enquanto o último é usado somente quando o arquivo de configuração não é encontrado, ou seja, qual é o kernel padrão para inicializar. Os arquivos reais ainda são baixados via TFTP. Portanto, o servidor TFTP também deve ser configurado (veja a seção anterior para saber mais sobre isso).

Obtendo o arquivo de configuração

Neste modo, o elilo usa a camada 1 do PXE para usar o arquivo de configuração. Portanto, isso deve ser definido no lado do servidor. O Elilo usará a seguinte sequência ao procurar por um arquivo de configuração:

- use the name provide by the PXE server Layer 1 or

- elilo-ia64.conf/elilo-ia32.conf/elilo-x86_64 or

- elilo.conf

Exemplo de arquivo elilo.conf

chooser=textmenu
default=install
delay=20
prompt

message=boot-screens/elilo_menu.msg
f1=boot-screens/general.msg
f2=boot-screens/params.msg

relocatable

image=vmlinuz
    label=install
    description="Install"
    initrd=initrd.gz
    append="--"
    read-only

image=vmlinuz
    label=expert
    description="Install [Expert mode]"
    initrd=initrd.gz
    append="priority=low --"
    read-only

image=vmlinuz
    label=rescue
    description="Rescue"
    initrd=initrd.gz
    append="rescue/enable=true --"
    read-only

Outro

boot=/dev/sda1
delay=30
timeout=50
default=Gentoo
append="console=ttyS0,9600"
prompt

image=/vmlinuz
    label=Gentoo
    root=/dev/sda2
    read-only

image=/vmlinuz.old
    label=Gentoo.old
    root=/dev/sda2
    read-only

Dê uma olhada também em elilo.conf e < a href="http://www.rodsbooks.com/efi-bootloaders/elilo.html"> Gerenciando Carregadores de Inicialização EFI para Linux: Usando o ELILO

Elilo pára no primeiro jogo. Com o PXE, o elilo não tenta baixar um arquivo de configuração com o mesmo nome que o endereço IP atribuído, pois há flexibilidade suficiente na configuração do servidor PXE para isso.

Obtendo a imagem do kernel

Quando não houver arquivo de configuração, o elilo utilizará o nome do kernel retornado por PXE layer 2. Se não estiver especificado lá, então o padrão é 'vmlinux'.

Como obter o ramdisk inicial

O nome do arquivo para o disco em RAM DEVE vir do arquivo de configuração. O Elilo não usa uma camada PXE para solicitar um nome padrão.

Como obter informações de endereço IP

Quando o elilo é iniciado pela rede, o módulo do sistema de arquivos da rede inicializa algumas variáveis do elilo com as informações recebidas do servidor DHCP. No mínimo, recebeu o endereço IP.

As seguintes informações são armazenadas nas variáveis indicadas abaixo:

assigned IP address -> %I
assigned netmask    -> %M
assigned domainname -> %D
assigned gateway    -> %G

Estas variáveis podem ser usadas para ajustar dinamicamente os argumentos da linha de comando passados ao kernel.

Para mais informações, consulte PXE Linux e Implementando o Boot PXE

Fonte: HP

    
por Mitch 27.07.2013 / 13:00
0

Apenas significava perguntas de "despertar":

A UEFI nesses clientes é obrigatoriamente necessária? -

Você não pode desativar o UEFI em cada cliente e ativar apenas o EFI neles? -

Provavelmente, seria mais fácil inicializar todas as instalações com o grub2.

Você pode considerar o ajuste das configurações do BIOS para EFI-boot em vez de UEFI-boot - porque o dual-boot com UEFI não é totalmente confiável, por exemplo, Windows 7 ou Windows 8. Eu sei de algumas instalações, que o Ubuntu com o Win7 de boot duplo com UEFI caiu frequentemente de volta no gdm.

    
por dschinn1001 27.07.2013 / 02:40

Tags