O TL; DR é que você esqueceu de fornecer o parâmetro inst.stage2 para a imagem de resgate. o initrd e o kernel não são suficientes para inicializar o Fedora no modo de recuperação, ele requer o segundo estágio do Anaconda. Substitua sua coisa root=nfs
por inst.stage2=nfs:192.168.16.252:/pxedev/fedora25/
e você deve ir para as corridas.
Resposta mais longa:
A inicialização via PXE é um desafio, já que requer muitas partes móveis:
- Servidor DHCP capaz de distribuir o parâmetro do próximo servidor.
- Um servidor TFTP em funcionamento
- Cópias da imagem do kernel e do ramdisk inicial
- Servidor HTTP funcional que serve o conteúdo da imagem ISO montada (o NFS pode ser usado como uma alternativa)
O que segue é como eu faço funcionar.
Instalação de software
dnf -y install dhcp-server tftp-server httpd syslinux-tftpboot
Seção do ISC DHCPd
n.b .: YMMV com outros servidores DHCP.
O parâmetro next-server
é o IP do seu servidor TFTP.
Subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.200;
option routers 192.168.0.1;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 192.168.0.2;
filename "pxelinux.0";
}
}
seção TFTPd
O Fedora coloca a raiz TFTP em /var/lib/tftpboot
, que é onde você precisa criar alguns diretórios para conter suas imagens de inicialização e configuração de pxe.
Eu costumo fazer meus subdiretórios algo assim:
$OSVER/$ARCH
para que eu possa ter várias versões do Fedora PXE inicializáveis a qualquer momento.
Depois, como você, copio os arquivos initrd
e vmlinuz
do diretório images/pxelinux
da imagem ISO para os subdiretórios apropriados para o tftpboot.
Em seguida, no diretório tftpboot, crie um diretório chamado pxelinux.cfg
. Dentro deste diretório, você criará seu arquivo de configuração, chamado default
. Neste arquivo, você produzirá entradas semelhantes a esta:
default vesamenu.c32
prompt 0
timeout 100
label local
menu label Boot from ^local drive
localboot 0xffff
label f25_x86_64
menu label Fedora 25 x86_64 (Generic)
kernel f25/x86_64/vmlinuz
append initrd=f25/x86_64/initrd.img repo=http://192.168.0.2/os/fedora/25/x86_64/ ks=http://192.168.0.2/ks/f25-x86_64-ks.cfg
label f25_rescue
menu label Fedora 25 ^Rescue Mode
kernel f25/x86_64/vmlinuz
append initrd=f25/x86_64/initrd.img inst.stage2=http://192.168.0.2/os/fedora/25/x86_64 rescue
As imagens do estágio 2 são grandes o suficiente para que entregá-las sobre o PXE seja ocasionalmente problemático, então eu as entrego através de HTTP.
Em seguida, você desejará mover todos os arquivos *.c32
de /tftpboot/
para /var/lib/tftpboot
, pois o syslinux-tftpboot não está ciente do diretório raiz diferente do servidor tftp por algum motivo.
seção HTTPD
Obtenha a imagem ISO disponível via HTTPD:
A maneira mais fácil de fazer isso é mkdir /var/www/html/os/fedora/$FEDORAVERSION/$ARCH
e, em seguida, mount -o loop,uid=48,gid=48,mode=0755 /path/to/fedora-server.iso /var/www/html/os/fedora/$FEDORAVERSION/$ARCH
Uma vez que todos os daemons estejam configurados e habilitados, boom, simplesmente funciona.
Se você quiser inicializar o Fedora 27, você pode basicamente sed -r -e s/25/27/g
em todas as configurações acima, e isso funcionará.