¡ Por favor active Javascript! / Please turn on Javascript!
Foro general para tratar temas sobre distribuciones Linux: CEntOS, RedHat, Debian, SUSE....
Avatar de Usuario
Cazador
Colaborador
Mensajes: 1593
Registrado: 16 Abril 2015, 19:16
C. Prof.: Analista de Sistemas
Contactar:

Tutorial para instalar y configurar PXE en Linux

Mensajepor Cazador » 28 Abril 2017, 17:48

Imagen

Este pequeño tutorial pretende ayudaros a instalar un servidor PXE en Linux y permitir que los dispositivos de la red arranquen gracias a este.
Preboot eXecution Environment (PXE) (Entorno de ejecución de prearranque), es un entorno para arrancar e instalar el sistema operativo en equipos a través de una red, prescindiendo de soportes de almacenamiento, como disquetes, CD-Roms, DVDs, memorias USB (como discos duros) o de los sistemas operativos instalados.

Configurar un servidor PXE en Linux nos permite iniciar los equipos a través de la red e instalar su sistema operativo

PXE suele utilizarse mucho a nivel de infraestructuras de red, ya que permite la instalación simultanea en varios equipos a la vez, y reducir los tiempos de espera si disponemos de una buena infraestructura de red configurada.

Para facilitar su configuración vamos configurar las diferentes partes necesarias: el servicio DHCP, el servicio tftp y la carpeta tftpboot que contendrá los ficheros necesarios:

Configurar el servicio DHCP en linux

Lo primero que necesitamos para configurar PXE en Linux es disponer del servicio DHCP instalado. Para instalar en CentOS el servicio DHCP podemos utilizar el siguiente comando:

Código: Seleccionar todo

yum install dhcp


A continuación ponemos un ejemplo del fichero de configuración dhcpd.conf (/etc/dhcpd.conf) que se utilizará para asignar las direcciones DHCP a los dispositivos que se conecten a través del servidor PXE.

El rango de red de este ejemplo es 192.168.1.0/255.255.255.0 que asigna un rango de ips desde la 192.168.1.100 a la 192.168.1.200, para que utilicen la puerta de enlace 192.168.1.1 y usen como servidor de DNS el 192.168.1.2

A su vez en dicha configuración se especificará el servidor PXE con el parametro next-server

Código: Seleccionar todo

#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
#

ddns-update-style interim;
ignore client-updates;

subnet 192.168.1.0 netmask 255.255.255.0 {
        # --- default gateway
        option routers 192.168.1.1;
        option subnet-mask 255.255.255.0;
        # option domain-name              "domain.org";
        option domain-name-servers 192.168.1.2;
        option time-offset -18000;
        range dynamic-bootp 192.168.1.100 192.168.1.200;
        default-lease-time 21600;
        max-lease-time 43200;
        class "pxeclients" {
                match if substring(option vendor-class-identifier , 0 , 9) = "PXEClient";
                next-server 192.168.1.2;
                filename "pxelinux.0";
                }
        }


Ex importante indicar en el apartado class "pexeclients" el servidor donde el servicio DHCP redirigirá las peticiones, y además indicarle el fichero a cargar, en este caso el pxelinux.0.

En el ejemplo anterior se crea una condición para que los clientes que se identifiquen en el servidor DHCP con una cadena PXEClient se les aplique esa configuración, y no al resto de equipos de la red cada vez que se les asigne una IP.


Instalar el servicio tftp-server

La instalación del servicio PXE pasa por tener instalado el servicio tftp-server en nuestro servidor Linux. El comando de instalación para una distribución RedHat o CentOS sería el siguiente:

Código: Seleccionar todo

yum install tftp-server


Una vez instalado deberemos editar su fichero de configuración. El archivo de configuración de tftp-server se encuentra /etc/xinetd.d/tftp y tendremos que editarlo para activarlo. A continuación os mostramos un fichero de ejemplo de este fichero tftp, en el que se indica la ruta de la carpeta tftpboot que posteriormente configuraremos con todos los ficheros necesarios ( Esto lo indicamos en el argumento server_args , donde también le indicamos que utilice el fichero de mapeo de carpetas tftp.remap )

Código: Seleccionar todo

# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/tftpboot -m /var/tftpboot/tftp.remap -vvv
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
~


Configurar carpeta tftpboot

Una vez configurado el servicio DHCP correctamente es necesario configurar una carpeta que contenga los ficheros necesarios para el arranque de los equipos, esta carpeta se suele denominar como tftpboot, y es necesario que tenga unos permisos +x (de paso/ejecución) para todos los grupos, puesto que los clientes que intenten cargar o leer los ficheros no pueden identificarse en dicho recurso.

El contenido de la carpeta tftpboot debería de ser el siguiente:

Fichero pxelinux.0

El fichero pxelinux.0 contiene el arranque y es el fichero al que apuntamos en la configuración de nuestro servidor DHCP. Este archivo es necesario y se encuentra en el paquete SYSLINUX en el archivo de imagen ISO de nuestra distribución de Linux empleada.

Fichero: vesamenuc32

Para generar el menú gráfico es necesaria la librería gráfica vesamenuc32


Fichero fondo.png

Para mostrar un menu más elegante utilizaremos una imagen png como fondo de pantalla gráfico para nuestro menú

Carpeta de configuración pxelinux.cfg

Para separar los ficheros del menú tendremos una carpeta creada llamada pxelinux.cfg[b], que a su vez contendrá los archivos del menú gráfico:
- el fichero: default , que tendra la configuración del menú gráfico

NOTA:- es necesario que exista el fichero vesamenu.c32 en la carpeta raíz de tftpboot

Código: Seleccionar todo

DEFAULT      vesamenu.c32
 PROMPT       0
 NOESCAPE     0
 ALLOWOPTIONS 0
 # Timeout in units of 1/10 s
 TIMEOUT 300
 MENU MARGIN 10
 MENU ROWS 16
 MENU TABMSGROW 21
 MENU TIMEOUTROW 26
 MENU COLOR BORDER 30;44                #20ffffff #00000000 none
 MENU COLOR SCROLLBAR 30;44             #20ffffff #00000000 none
 MENU COLOR TITLE 0             #ffffffff #00000000 none
 MENU COLOR SEL   30;47         #40000000 #20ffffff
 MENU BACKGROUND fondo.png
 MENU TITLE ELSATE.com Menu de Arranque
 MENU TABMSG  http://www.elsate.com
 #---
 LABEL Inicio Local
 MENU DEFAULT
 MENU LABEL ^ 1) Arrancar de disco
 KERNEL chain.c32
 APPEND hd0
 LOCALBOOT 0

 LABEL   Instalar Windows 7/8 (x86) o (x64)
 menu label ^ 2) Instalar Windows 7, Windows 8 (x86) o (x64)
 kernel boot/startrom.0

 LABEL   Instalar CentOS 6.5 via HTTP
 MENU LABEL ^ 3) Instalar  CentOS 6.5 via HTTP
 kernel ISOS/vmlinuz
 append initrd=ISOS/initrd.img ramdisk_size=100000 ksdevice=eth0 ip=dhcp url --url http://mirror.centos.org/centos-6/6.5/os/x86_64/

 LABEL   XenServer 6.2.0 Install
 MENU LABEL ^ 4) XenServer 6.2.0 Install
 KERNEL /memdisk iso
 INITRD /ISOS/XenServer-6.2.0-install-cd.iso raw

# Otros
 LABEL Otros (Grub)
 MENU LABEL ^ 7) Otros arranques y Utilidades
 KERNEL grub.exe
 APPEND --config-file=/pxelinux.cfg/menu.lst


En el ejemplo anterior se especifica un nombre del fichero de imagen de fondo , en nuestro caso [b]fondo.png
, para que el menú resulte más atractivo una vez sea cargado en el cliente mediante PXE.

También se muestra varias opciones dentro del menu, identificadas por LABEL, y que dependiendo el tipo de KERNEL indicado nos permitirá arrancar diferentes entornos (Windows PE, Linux o incluso imagenes ISO)

El fichero [b]tftp.remap

El fichero tftp.remap[b] remapea las rutas del recurso para que se encuentre la carpeta boot ( sobre todo si vamos a usar entornos Windows que utilizan la carpeta /boot/ )

El contenido del fichero tftp.remap utilizado es:

Código: Seleccionar todo

r ^\\Boot\\ boot/
r ^\\boot\\ boot/
r ^Boot/ boot/
r ^/Boot/ boot/
r ^boot/ boot/
r ^/boot/ boot/
rg \\ /


NOTA: En algunos casos pude que sea necesario realizar un enlace simbólico a la carpeta boot, debido a que en linux se diferencias mayusculas de minusculas y muchas veces los clientes que se conectan por tftp no llegan a encontrar la carpeta, produciendose un fallo al leer los ficheros.


[b]La carpeta: Boot


La carpeta Boot contendrá los ficheros de arranque para entornos Windows:

Los ficheros necesarios para la carpeta Boot suelen generarse en la preparación de las imágenes WIndows PE, y a continuación os mostramos algunos de los ficheros que suelen incluir.

Ejemplo contenido carpeta Boot :

abortpxe.com
bootmgr.exe
boot.sdi
boot.wim
hdlscom1.com
hdlscom2.n12
startrom.0
wdsnbp.com
hdlscom1.n12
pxeboot.com
WdsConfig.inf
hdlscom2.com
pxeboot.n12
wdsmgfw.efi

Una vez configurado todo el entorno tan solo tendremos que levantar los servicios que hemos empleado, podremos hacerlo de forma manual o bien reiniciar nuestro servidor.

Iniciamos nuestro servidor DHCP con alguno de los siguientes comandos:

Código: Seleccionar todo

service dhcpd start

ó

Código: Seleccionar todo

/etc/rc.d/init.d/dhcpd start


Posteriormente cargamos la configuración de nuestro tftp con el siguiente comando:

Código: Seleccionar todo

/etc/rc.d/init.d/xinetd reload


Esperamos que este resumen de instalación y configuración de PXE en Linux os ayude a configurar un entorno básico para arrancar equipos a través de la red. Lo que suele hacerse es una vez los clientes se conectan por tftp es descargarse un cliente simple que les permite iniciar la red, para levantar el servicio TCP/IP y permitir la copia de ficheros o instalación más rápida del cliente, en el caso que lo vayamos a usar para instalar equipos por la red.

Ya sabéis que si tenéis cualquier duda podéis comentarlo en este mismo tema. Suerte :satero:
Redactor de ELSATE.com. Aficionado de la Tecnología, los Videojuegos, la Música Electrónica y el Deporte.



MÁS NOTICIAS



Volver a “General”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados