Instalação de rede do Fedora via inicialização PXE

4

Como instalo o Fedora na rede usando o boot PXE?

Motivação: O BIOS do sistema de destino simplesmente não consegue inicializar a partir de dispositivos de armazenamento em massa USB. Uma motivação alternativa é que a inicialização pela rede é apenas mais conveniente.

Desafio: A LAN já tem um servidor DHCP que não pode ser alterado, por exemplo, um que não suporte a configuração de opções relacionadas ao PXE (ele faz parte de um roteador Fritz Box).

    
por maxschlepzig 22.02.2015 / 23:27

1 resposta

4

Também é possível configurar um serviço DHCP Proxy para o PXE. Assim, o servidor DHCP existente não precisa ser alterado. Um sistema Linux normal (por exemplo, uma estação de trabalho) pode ser usado para hospedar o ambiente de execução de pré-inicialização (PXE).

As seguintes etapas são necessárias para configurar um PXE para inicialização via rede Imagem de instalação de rede do Fedora (assumindo também um Fedora host):

Verifique a imagem

$ gpg --verify Fedora-Server-21-x86_64-CHECKSUM
$ sha256sum --check Fedora-Server-21-x86_64-CHECKSUM
Fedora-Server-netinst-x86_64-21.iso: OK

Monte a imagem

mkdir /mnt/iso
mount -o loop Fedora-Server-netinst-x86_64-21.iso /mnt/iso

Configuração do DHCP

yum install dnsmasq tftp-server syslinux-tftpboot

O pacote tftp-server é apenas para criar o diretório /var/lib/tftpboot , o dnsmasq já tem um servidor tftp integrado.

A configuração:

cat > /etc/dnsmasq.conf
interface=enp0s25
# and don't bind to 0.0.0.0
bind-interfaces
# extra logging
log-dhcp
dhcp-range=192.168.178.0,proxy
# first IP address is the one of the host
dhcp-boot=pxelinux.0,192.168.178.34,192.168.178.0
pxe-service=x86PC,"Automatic Network Boot",pxelinux
# Specify the IP address of another tftp server
enable-tftp
# default location of tftp-server on Fedora
tftp-root=/var/lib/tftpboot
# disable DNS
port=0

Comece:

systemctl start dnsmasq.service

Configurar o diretório TFTP

Copie todos os arquivos necessários:

cp /mnt/iso/images/pxeboot/initrd.img /var/lib/tftpboot
cp /mnt/iso/images/pxeboot/vmlinuz /var/lib/tftpboot
cp /tftpboot/pxelinux.0 /var/lib/tftpboot
cp /tftpboot/vesamenu.c32 /var/lib/tftpboot
cp /tftpboot/ldlinux.c32 /var/lib/tftpboot
cp /tftpboot/libcom32.c32 /var/lib/tftpboot
cp /tftpboot/libutil.c32 /var/lib/tftpboot

Adicionar configuração:

mkdir /var/lib/tftpboot/pxelinux.cfg
cat > /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
prompt 0
# disable timeout
timeout 0
#timeout 600

# if file is missing, this is ignored
display boot.msg

label linux
  menu label Install Fedora 21 Server x86-64
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=http://workstation.example.org/

Configurar o servidor HTTP

yum install nginx

Configurar instância:

cat > /etc/nginx/conf.d/iso.conf
  server {
      listen       80 default_server;
      server_name  localhost;
      root         /mnt/iso ;
      include /etc/nginx/default.d/*.conf;
  }

Desative a instância padrão / mova-a para uma porta diferente:

--- a/nginx/nginx.conf
+++ b/nginx/nginx.conf
@@ -43,7 +43,7 @@ http {
     include /etc/nginx/conf.d/*.conf;

     server {
-        listen       80 default_server;
+        listen       8080 default_server;
         server_name  localhost;
         root         /usr/share/nginx/html;

inicie o servidor:

systemctl start nginx.service

O instalador do Fedora (dracut) basicamente precisa apenas pegar um arquivo daquele servidor http:

LiveOS/squashfs.img

Configurar o Firewalld

firewall-cmd --add-service=http
firewall-cmd --add-service=dhcp
firewall-cmd --add-service=tftp
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=dhcp --permanent
firewall-cmd --add-service=tftp --permanent

Clientes de inicialização

É isso. Os clientes são capazes de inicializar em rede via PXE e obter a imagem da netinstall do Fedora.

As variações podem ser: Adicionar um arquivo de kickstart (e definir um tempo limite) para uma instalação de rede totalmente automática, configurando diferentes configurações de PXE para diferentes clientes (com base no endereço MAC), etc.

Limpeza

Os daemons podem ser parados e a imagem de loopback pode ser desmontada:

systemctl stop nginx.service
systemctl stop dnsmasq.service
umount /mnt/iso

Nota de segurança

Este método só deve ser executado em uma intranet confiável, porque o cliente netboot obtém sua configuração e várias imagens absolutamente inseguras sobre TFTP e HTTP.

    
por 22.02.2015 / 23:27