Instale varias distribuciones de Linux mediante el arranque de red PXE en RHEL / CentOS 8


Servidor PXE: el entorno de ejecución de prearranque es una arquitectura cliente-servidor estandarizada que le indica a un sistema cliente que arranque, ejecute o instale varios sistemas operativos Linux utilizando una interfaz de red compatible con PXE en su infraestructura de red.

  • En este artículo, aprenderá a instalar y configurar un servidor de arranque de red PXE en CentOS/RHEL 8 con repositorios de instalación locales reflejados proporcionados por CentOS 8 y RHEL 8 ISO Images.

    Para esta configuración de arranque de red PXE, instalaremos los siguientes paquetes en el sistema:

    Paso 1: instalar y configurar el servidor DNSMASQ

    1. Es importante recordarle que una de sus interfaces de red debe estar configurada con una dirección IP estática del mismo rango de IP de red que proporciona servicios PXE.

    Una vez que haya configurado una dirección IP estática, actualice los paquetes de software del sistema e instale el demonio DNSMASQ.

    # dnf install dnsmasq
    

    2. Una vez instalado DNSMASQ, encontrará su archivo de configuración predeterminado en el directorio /etc/dnsmasq.conf , que se explica por sí mismo pero es más difícil de configurar, debido a sus explicaciones muy comentadas.

    Primero, asegúrese de hacer una copia de seguridad de este archivo en caso de que necesite revisarlo más tarde y luego, cree un nuevo archivo de configuración usando su editor favorito como se muestra.

    # mv /etc/dnsmasq.conf  /etc/dnsmasq.conf.backup
    # nano /etc/dnsmasq.conf
    

    3. Ahora, copie y pegue las siguientes configuraciones en el archivo /etc/dnsmasq.conf y cambie los parámetros de configuración de acuerdo con la configuración de su red.

    interface=enp0s3,lo
    #bind-interfaces
    domain=tecmint
    # DHCP range-leases
    dhcp-range= enp0s3,192.168.1.3,192.168.1.253,255.255.255.0,1h
    # PXE
    dhcp-boot=pxelinux.0,pxeserver,192.168.1.2
    # Gateway
    dhcp-option=3,192.168.1.1
    # DNS
    dhcp-option=6,92.168.1.1, 8.8.8.8
    server=8.8.4.4
    # Broadcast Address
    dhcp-option=28,10.0.0.255
    # NTP Server
    dhcp-option=42,0.0.0.0
    
    pxe-prompt="Press F8 for menu.", 60
    pxe-service=x86PC, "Install CentOS 8 from network server 192.168.1.2", pxelinux
    enable-tftp
    tftp-root=/var/lib/tftpboot
    

    Se siguen las declaraciones de configuración que necesita cambiar:

    • interface – A network interfaces of the server should listen and provide services.
    • bind-interfaces – Uncomment to bind the interface to a given network card.
    • domain – Replace it with your domain name.
    • dhcp-range – Change it with your network IP range.
    • dhcp-boot – Replace it with your network interface IP Address.
    • dhcp-option=3,192.168.1.1 – Replace it with your network Gateway.
    • dhcp-option=6,92.168.1.1 – Replace it with your DNS Server IP.
    • server=8.8.4.4 – Add your DNS forwarders IPs Addresses.
    • dhcp-option=28,10.0.0.255 – Replace it with your network broadcast IP address optionally.
    • dhcp-option=42,0.0.0.0 -Add your network time servers (0.0.0.0 Address is for self-reference).
    • pxe-prompt – Keep it as default.
    • pxe=service – Use x86PC for 32-bit/64-bit architectures and add a menu description prompt under string quotes.
    • enable-tftp – Enables the built-in TFTP server.
    • tftp-root – Add network booting files location /var/lib/tftpboot.

    Para conocer otras opciones avanzadas relacionadas con los archivos de configuración, no dude en leer el manual de dnsmasq.

    Paso 2: Instale los cargadores de arranque SYSLINUX

    4. Una vez realizada la configuración principal de DNSMASQ, instale el paquete del cargador de arranque Syslinx PXE con el siguiente comando.

    # dnf install syslinux
    

    5. Los cargadores de arranque Syslinx PXE se instalan en /usr/share/syslinux , puede confirmarlo ejecutando el comando ls como se muestra.

    # ls /usr/share/syslinux
    

    Paso 3: Instale TFTP-Server y cópielo con los cargadores de arranque SYSLINUX

    6. Ahora, instale TFTP-Server y copie todos los cargadores de arranque de Syslinux desde /usr/share/syslinux/ a /var/lib/tftpboot como se muestra.

    # dnf install tftp-server
    # cp -r /usr/share/syslinux/* /var/lib/tftpboot
    

    Paso 4: Configurar el archivo de configuración del servidor PXE

    7. De forma predeterminada, el servidor PXE lee su configuración de un conjunto de archivos específicos que se encuentran en pxelinux.cfg , que se deben encontrar en el directorio descrito en la configuración tftp-root del archivo de configuración DNSMASQ anterior. .

    Primero, cree un directorio pxelinux.cfg y cree un archivo predeterminado emitiendo los siguientes comandos.

    # mkdir /var/lib/tftpboot/pxelinux.cfg
    # touch /var/lib/tftpboot/pxelinux.cfg/default
    

    8. Ahora abra y edite el archivo de configuración PXE default con las opciones de instalación de distribución de Linux correctas. Además, asegúrese de recordar que las rutas establecidas en este archivo deben ser relativas al directorio /var/lib/tftpboot .

    # nano /var/lib/tftpboot/pxelinux.cfg/default
    

    El siguiente es un archivo de configuración de ejemplo que puede usar, pero asegúrese de cambiar las imágenes de instalación, los protocolos y las direcciones IP para reflejar los repositorios de origen de instalación de red y las ubicaciones en consecuencia.

    default menu.c32
    prompt 0
    timeout 300
    ONTIMEOUT local
    
    menu title ########## PXE Boot Menu ##########
    
    label 1
    menu label ^1) Install CentOS 8 x64 with Local Repo
    kernel centos8/vmlinuz
    append initrd=centos7/initrd.img method=ftp://192.168.1.2/pub devfs=nomount
    
    label 2
    menu label ^2) Install CentOS 8 x64 with http://mirror.centos.org Repo
    kernel centos8/vmlinuz
    append initrd=centos8/initrd.img method=http://mirror.centos.org/centos/8/BaseOS/x86_64/os/ devfs=nomount ip=dhcp
    
    label 3
    menu label ^3) Install CentOS 8 x64 with Local Repo using VNC
    kernel centos8/vmlinuz
    append  initrd=centos8/initrd.img method=ftp://192.168.1.2/pub devfs=nomount inst.vnc inst.vncpassword=password
    
    label 4
    menu label ^4) Boot from local drive
    

    En la configuración anterior, puede observar que las imágenes de arranque de CentOS 8 (kernel e initrd) residen en un directorio centos7 relativo a /var/lib/tftpboot (es decir, /var/lib/tftpboot/centos7 ) y se puede acceder a los repositorios del instalador utilizando el protocolo FTP en 192.168.1.2/pub (dirección IP del servidor PXE).

    Además, la etiqueta de menú 2 describe los repositorios espejo de las fuentes de instalación oficiales de CentOS 8 (la conexión a Internet es obligatoria en el sistema cliente) y la etiqueta de menú 3 describe que la instalación del cliente debe realizarse a través de un VNC remoto (aquí reemplace la contraseña de VNC con una contraseña segura).

    Importante: como puede ver en la configuración anterior, hemos utilizado la imagen de CentOS 8 con fines de demostración, pero también puede utilizar imágenes de RHEL 8.

    Paso 5: Agregar imágenes de arranque de CentOS 8 al servidor PXE

    9. Para agregar imágenes de CentOS 8 al servidor PXE, debe descargar la imagen ISO de DVD de CentOS 8 localmente usando el comando wget y montarla.

    # wget http://centos.mirrors.estointernet.in/8.2.2004/isos/x86_64/CentOS-8.2.2004-x86_64-dvd1.iso
    # mount -o loop CentOS-8.2.2004-x86_64-dvd1.iso /mnt
    

    10. Una vez que haya descargado CentOS 8, debe crear un directorio centos7 y copiar el kernel de arranque y las imágenes initrd.

    # mkdir /var/lib/tftpboot/centos8
    # cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/centos8
    # cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/centos8
    

    La razón detrás de este enfoque es que más tarde puede tener directorios separados para cada nueva distribución de Linux en /var/lib/tftpboot sin estropear toda la estructura de directorios.

    Paso 6: Cree la fuente de instalación de réplica local de CentOS 8

    11. Hay una variedad de protocolos (HTTP, HTTPS o NFS) que están disponibles para configurar espejos de origen de instalación local de CentOS 8, pero he elegido el protocolo FTP porque es fácil de configurar usando el servidor vsftpd.

    Instalemos el servidor Vsftpd y copiemos todo el contenido del DVD de CentOS 8 en el directorio FTP /var/ftp/pub como se muestra.

    # dnf install vsftpd
    # cp -r /mnt/*  /var/ftp/pub/ 
    # chmod -R 755 /var/ftp/pub
    

    12. Ahora que se completó toda la configuración del servidor PXE, puede iniciar, habilitar y verificar el estado de los servidores DNSMASQ y VSFTPD.

    # systemctl start dnsmasq
    # systemctl status dnsmasq
    # systemctl start vsftpd
    # systemctl status vsftpd
    # systemctl enable dnsmasq
    # systemctl enable vsftpd
    

    13. A continuación, debe abrir puertos en su firewall para que los sistemas cliente accedan y arranquen desde el servidor PXE.

    # firewall-cmd --add-service=ftp --permanent  	## Port 21
    # firewall-cmd --add-service=dns --permanent  	## Port 53
    # firewall-cmd --add-service=dhcp --permanent  	## Port 67
    # firewall-cmd --add-port=69/udp --permanent  	## Port for TFTP
    # firewall-cmd --add-port=4011/udp --permanent  ## Port for ProxyDHCP
    # firewall-cmd --reload  ## Apply rules
    

    14. Para verificar la ubicación de red de la fuente de instalación FTP, abra su navegador y escriba la dirección IP del servidor PXE con el protocolo FTP seguido de la ubicación de red /pub .

    ftp://192.168.1.2/pub
    

    Paso 7: configurar los clientes para iniciar desde la red

    15. Ahora configure los sistemas cliente para que arranquen e instalen CentOS 8 en sus sistemas configurando Network Boot como dispositivo de arranque principal desde el menú BIOS.

    Después de que el sistema se inicie, obtendrá un mensaje PXE, donde debe presionar la tecla F8 para ingresar a la presentación y luego presionar la tecla Enter para avanzar al menú PXE.

    Eso es todo para configurar un servidor PXE mínimo en CentOS/RHEL 8.