Todo mundo parece estar usando o GRUB para inicializar máquinas UEFI via PXE da rede. Embora funcione, falta um recurso importante para poder direcionar imediatamente determinados clientes conhecidos. GRUB apenas solicita grub/grub.cfg
imediatamente.
O PXELINUX possui a seguinte funcionalidade: antes de carregar a configuração "default", ele tenta alguns nomes especiais, derivados do endereço MAC e do endereço IP do cliente. Por exemplo, para um cliente que possui IP 172.31.1.38
(que é hexadecimal AC1F0126
) e MAC BC:24:11:21:4D:14
ele tentará carregar uma configuração do servidor TFTP na seguinte ordem:
pxelinux.cfg/01-bc-24-11-21-4d-14
pxelinux.cfg/AC1F0126
pxelinux.cfg/AC1F012
pxelinux.cfg/AC1F01
pxelinux.cfg/AC1F0
pxelinux.cfg/AC1F
pxelinux.cfg/AC1
pxelinux.cfg/AC
pxelinux.cfg/A
pxelinux.cfg/default
Portanto, com o PXELINUX posso criar arquivos de configuração dedicados para determinados clientes conhecidos, onde posso incluir uma referência a um script de pré-configuração ou kickstart que foi especialmente criado para esse cliente. Ele realizaria uma instalação totalmente autônoma do sistema, e tudo isso seria usado na automação (tanto para gerar VMs quanto para preparar servidores bare metal). Quando a instalação é iniciada, ele apenas remove a configuração do bootloader dedicado, então da próxima vez a máquina inicializará pela rede, mas agora irá acessar o default
arquivo de configuração que instrui a inicializar a partir de um disco rígido local. Na verdade, administrei essa infraestrutura por mais de 10 anos e foi incrível.
Mas hoje em dia precisamos ter o mesmo para clientes UEFI, e o PXELINUX parece não funcionar com UEFI.
Existe uma maneira de ter funcionalidade semelhante ao GRUB PXE, para poder fazer a mesma coisa com clientes UEFI, para solicitar um arquivo de configuração dedicado ou para usar uma opção de menu de inicialização "padrão" específica do cliente de um comum arquivo de configuração?
Ou talvez exista outro bootloader UEFI PXE que seja capaz de fazer isso assim?
Na verdade, o GRUB suporta o mesmo esquema de arquivo de configuração do PXELinux . Está descrito no manual do GRUB .
Acontece que não o vi funcionando porque usei uma compilação aleatória do GRUB do Ubuntu que parece omitir esse recurso. Além disso, há uma discrepância no manual: diz que temos que nomear o arquivo
grub.cfg-<MAC>
, e pelo exemplo fica claro que deve ser substituído pelo endereço MAC, onde os dois pontos:
são substituídos por traços-
e todas as "letras" no hexadecimal alterado para minúsculas, assim:grub.cfg-52-54-00-ec-33-81
. Mas, na realidade, o GRUB solicitou o arquivogrub.cfg-01-<MAC>
(pelo menos, meu GRUB construído no Gentoo com sinalizadores USE padrão), por exemplo, no meu caso, eragrub.cfg-01-bc-24-11-5b-65-e5
, muito parecido com o que o PXELinux faz. Além disso, apesar de anunciado no manual, meu GRUB não solicitou o arquivogrub.cfg-<UUID>
. Mas solicitou todas asgrub.cfg-<IP_part>
variantes exatamente como descritas no manual (grub.cfg-AC1F0134
,grub.cfg-AC1F013
e assim por diante, para172.31.1.52
).