Para um pouco de contexto, sou um estudante de administração de sistemas, tentando expandir meu conhecimento de rede, já que não é meu ponto mais strong.
Atualmente, estou experimentando com o PXE. Há alguns dias, configurei algumas máquinas virtuais ESXi, uma delas sendo um servidor DHCP e TFTP, e as outras duas sendo clientes BIOS e UEFI. Eu consegui inicializar um debian através do PXE, em máquinas BIOS e UEFI.
Eu ouvi sobre o iPXE e as possibilidades que ele traz (como inicializar em HTTP, iSCSI, ...) e decidi tentar. Por enquanto, ainda estou tentando inicializar meu instalador debian netboot local, achei que testaria os arquivos remotos depois de ter certeza de que a instalação estava correta.
Neste ponto, é assim que meu conf DHCP se parece (menos qualquer coisa que não seja realmente de interesse):
option arch code 93 = unsigned integer 16;
class "pxe-clients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
option tftp-server-name "192.168.0.5";
next-server 192.168.0.5;
if option arch = 00:00 {
if exists user-class and option user-class = "iPXE" {
filename = "pxelinux.0";
} else {
filename = "undionly.kpxe";
}
} elsif option arch = 00:02 or option arch = 00:06 or option arch = 00:07 or option arch = 00:08 or option arch = 00:09 {
if exists user-class and option user-class = "iPXE" {
filename = "bootnetx64.efi";
} else {
filename = "ipxe.efi";
}
} else {
filename = "UNKNOWN_VCI";
}
}
192.168.0.5
é o IP da LAN do servidor DHCP / TFTP.
Quanto ao diretório raiz do meu servidor TFTP:
root@vmpxe:/srv/tftp# ls -l
total 968
lrwxrwxrwx 1 root root 37 Sep 22 14:01 bootnetx64.efi -> debian-installer/amd64/bootnetx64.efi
drwxrwxr-x 3 root root 4.0K Sep 22 00:21 debian-installer
-rw-r--r-- 1 root root 896K Sep 22 16:00 ipxe.efi
lrwxrwxrwx 1 root root 47 Sep 22 00:21 ldlinux.c32 -> debian-installer/amd64/boot-screens/ldlinux.c32
lrwxrwxrwx 1 root root 33 Sep 22 00:21 pxelinux.0 -> debian-installer/amd64/pxelinux.0
lrwxrwxrwx 1 root root 35 Sep 22 00:21 pxelinux.cfg -> debian-installer/amd64/pxelinux.cfg
-rw-r--r-- 1 root root 64K Sep 22 16:00 undionly.kpxe
-rw-rw-r-- 1 root root 64 Sep 22 00:21 version.info
Mais uma vez, insisto no fato de que, antes do iPXE, tudo funcionava bem em ambas as arquiteturas.
As únicas alterações que fiz foram baixar os arquivos undionly.kpxe
e ipxe.efi
do site do iPXE e editar o conf DHCP para agrupar as configurações do nome do arquivo nas condições if exists user-class and option user-class = "iPXE" {...} else {...}
.
Agora, a máquina da BIOS faz o PXE - > iPXE - > O instalador do netboot do Debian. Tudo funciona bem.
No entanto, a máquina UEFI faz o PXE - > iPXE - > casca de larva.
Eu tentei tcpdump o processo, mas que não deu em nada: todo o tráfego parece normal e esperado. Não difere muito do que eu tinha antes do iPXE.
Alguma ideia do que pode estar acontecendo aqui?
EDIT: Outros testes do tcpdump mostram que sem o iPXE, minha máquina EFI envia pacotes RRQ para o carregador de inicialização e um monte de outros arquivos que, eu suponho, são referenciados pelo próprio bootloader. No entanto, com o iPXE, somente o bootloader eu só vejo o bootloader.
Então eu acho que a pergunta correta é: o que acontece com o iPXE para não recuperar todos os arquivos que foram baixados corretamente por um PXE padrão?