La motivación de montar un PXE surgió porque quería revivir un viejo Servidor al cual usaría para Video Vigilancia con Motion que dicho sea de paso luego creare otra entrada donde explicare como Instalar Motion con dos Pico 2000 y con mas de una cámara.
Luego surgió un ultimo desafío y es que mi viejo Server no trae el firmware para bootear por Red con lo cual para este en particular tuve que crear un Disco de Arranque de Red con el driver apropiado para la NIC del Server.
Nota: Ya que si bien están todos los pasos para configurar el CentOS y tener operativo un PXE Server esta guia supone que usted tenga conocimientos de Linux.
En esta guia veremos:
- Como configurar un PXE Server en CentOS
- Como crear el Menu del PXE Boot
- Como configurar el Network Boot del DHCP Server de pfSense
- Como crear un Disco de Arranque de Red gPXE con ROM-o-matic (Opcional)
Lo que vamos a necesitar para el Deploy:
- CentOS 6 Instalado para el PXE Server
- pfSense
- Las imagenes .iso de 32 y 64 bits de CentOS
- La imagen .iso del SystemRecuCD
- Un Desktop, Notebook, Server o Virtual Machine para pruebas
- Un diskette de 1.44 (Opcional)
Pasos:
Instalar en el CentOS Apache, tftp server y el paquete syslinux:
# yum install -y httpd tftp-server syslinux
Agregar a los runlevels y encender el Servicio de Apache:
# chkconfig httpd on
# service httpd start
Crear en la raíz del sistema los siguientes directorios:
# mkdir -p /tftpboot/pxelinux.cfg
Copiar los siguientes archivos al directorio creado:
# cp /usr/share/syslinux/{pxelinux.0,menu.c32,memdisk,mboot.c32,chain.c32} /tftpboot/
Crear el Menú para el PXE Boot:
# vim /tftpboot/pxelinux.cfg/default
El Siguiente es un ejemplo del archivo default, los label 1-7 son las opciones que saldrán en el Menú de PXE, en la guia daré los pasos para el funcionamiento del label 1, 2 y 5:
default menu.c32
prompt 0
timeout 300
ONTIMEOUT 7
MENU TITLE ########## PXE Boot Menu ##########
label 1
menu label ^1) Install CentOS 6 i386
kernel centos/6/i386/vmlinuz
append initrd=centos/6/i386/initrd.img method=http://172.16.1.142/pxe/centos/6/i386 devfs=nomount
label 2
menu label ^2) Install CentOS 6 x86_64
kernel centos/6/x86_64/vmlinuz
append initrd=centos/6/x86_64/initrd.img method=http://172.16.1.142/pxe/centos/6/x86_64 devfs=nomount
label 3
menu label ^3) Install Fedora 16 x86_64
kernel fedora/16/x86_64/vmlinuz
append initrd=fedora/16/x86_64/initrd.img repo=http://172.16.1.142/pxe/fedora/16/x86_64 xdriver=vesa nomodeset
label 4
menu label ^4) Install Fedora 19 x86_64
kernel fedora/19/x86_64/vmlinuz
append initrd=fedora/19/x86_64/initrd.img repo=http://172.16.1.142/pxe/fedora/19/x86_64
label 5
menu label ^5) SystemRescueCD 3.7.1
kernel SystemRescueCD/3.7.1/isolinux/rescue32
append initrd=SystemRescueCD/3.7.1/isolinux/initram.igz netboot=tftp://172.16.1.142/SystemRescueCD/3.7.1/sysrcd.dat
label 6
menu label ^6) Windows 7 PE (x64)
KERNEL Boot/startrom.0
label 7
menu label ^7) Boot from local drive
localboot
Hay que modificar el archivo de configuración del tftp server para que tome nuestro directorio de tftpboot y como el servicio de tftp funciona on-demand luego hay que reiniciar el servicio del que depende... xinetd
# vim /etc/xinetd.d/tftp
Modificar las siguientes variables:
server_args = -s /tftpboot
disable = no
Reiniciar el xinetd
# service xinetd restart
Como ya se habran dado cuenta el metodo de instalacion es por http para la Instalacion de los CentOS con lo cual el Instalador buscara los paquetes en la url de nuestro servidor y para lograr eso vamos a crear algunos directorios dentro del Documento Root del Apache para finalmente montar las imagenes .iso
# mkdir -p /var/www/html/pxe/centos/6/{i386,x86_64}
Creamos algunos direcotrios en el root del tftpboot a fin de organizar las distribuciones:
# mkdir -p /tftpboot/centos/6/{i386,x86_64}
# mkdir -p /tftpboot/SystemRescueCD/3.7.1
Agregamos las siguientes entradas al final del fstab para que tengamos siempre disponible los paquetes para la instalacion de los CentOS.
# vim /etc/fstab
/<Path>/CentOS-6.4-i386-minimal.iso /var/www/html/pxe/centos/6/i386 udf,iso9660 ro,loop 0 0
/<Path>/CentOS-6.4-x86_64-minimal.iso /var/www/html/pxe/centos/6/x86_64 udf,iso9660 ro,loop 0 0
/<Path>/systemrescuecd-x86-3.7.1.iso /tftpboot/SystemRescueCD/3.7.1 udf,iso9660 ro,loop 0 0
Montamos los cambios del fstab:
# mount -a
Copiamos el Kernel y el Init Ram Disk a los directorios creados anteriormente estos archivos son los que cargara por tftp el PXE luego de cargar el Menu.
cp /var/www/html/pxe/centos/6/i386/isolinux/{vmlinuz,initrd.img} /tftpboot/centos/6/i386/
cp /var/www/html/pxe/centos/6/x86_64/isolinux/{vmlinuz,initrd.img} /tftpboot/centos/6/x86_64/
Si tenemos activo el firewall de linux modificamos el iptables para que que acepte las conexiones de tftp y http:
# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m udp -p udp --dport 69 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
Configuracion de pfSense:
Para configurar el DHCP hay que ir a Services, DHCP Server:
Tildar Enables network booting, en Enter the IP of next-server poner la IP del CentOS con PXE, y en the file name poner: /pxelinux.0
Crear un Disco de Arranque de Red gPXE con ROM-o-matic:
Cuando llego el momento de probar el PXE en mi Server me di cuenta que no contaba con ninguna opción para bootear por Red así que tuve que buscar una solución y me encontré con el sitio web de rom-o-matic que se trata de un proyecto open para bootear por Red, la web es bastante intuitiva asi que solo me faltaba identificar cual era el modelo de la NIC de Red, para eso ejecute el comando lspci.
# lspci | grep -i ethernet
00:04.0 Ethernet controller: Intel Corporation 82557/8/9/0/1 Ethernet Pro 100 (rev 08)
En la web de rom-o-matic seleccionamos el link del ultimo release en producción, luego seguír los pasos 1, 2 y 4.
Con el archivo ya descargado ejecutamos lo siguiente para copiar la imagen a un diskette:
# cat gpxe-1.0.1-eepro100.bin > /dev/fd0
Algunos screenshots del PXE Boot y del PXE Menu:
Saludos!
Hernan
El problema pasado ya lo solucione solo me gustaría que me explicaras la configuración para instalar un windows Gracias
ResponderEliminarEstimado disculpe la demora en responder, ser esposo, padre, estudiante y empleado demanda mucho tiempo.
EliminarSeguro que para esta altura usted ya descubrio como lograrlo, caso contrario le recomiendo probar el UDA www.ultimatedeployment.org que de manera sencilla lo guiara en lo que usted necesita.
Saludos