¿Qué es PXE? Preboot eXecution Environment (PXE) (Entorno de ejecución de prearranque), es un entorno para arrancar e instalar el sistema operativo en ordenadores a través de una red, de manera independiente de los dispositivos de almacenamiento de datos disponibles (como discos duros) o de los sistemas operativos instalados. (Según la Wikipedia) Vamos a ver cómo instalar y configurar un servidor PXE en un sistema operativo Debian. Iniciar sesión como root en nuestro servidor Debian. 1.- Instalar las herramientas requeridas (DHCP, TFTP, Syslinux, NFS): apt-get install isc-dhcp-server tftpd-hpa syslinux nfs-kernel-server La instalación del paquete tftpd-hpa nos preguntará qué directorio utilizaremos como directorio raíz, lo dejaremos tal cuál está (/srv/tftp). DHCP es un protocolo encargado de proporcionar configuraciones de red a los equipos de la misma, dotando de acceso a la red a los equipos cliente que lo soliciten; TFTP es un protocolo con una funcionalidad semejante a la de FTP sólo que mucho más sencillo, de ahí su nombre (Trivial File Transfer Protocol) , se encargará de descargar los ficheros requeridos por PXE; Syslinux nos proporciona los cargadores de arranque que se servirán cuando se solicite, mientras que NFS enviará los ficheros del sistema operativo al cliente. 2.- Configurar el servicio DHCP: Para configurar el servicio DHCP hay que añadir lo siguiente al final del fichero /etc/dhcp/dhcpd.conf: subnet 192.168.x.x netmask 255.255.255.0{ range 192.168.x.x 192.168.x.x; option broadcast-address 192.168.x.x; filename "pxelinux.0"; } La sentencia filename indicará a los clientes cuál es el fichero ejecutable que deberá ser cargado por el protocolo PXE. En la imagen siguiente puede verse cómo quedaría la configuración en el propio fichero, puede verse una sentencia a mayores next-server, esta sólo es necesario añadirla en caso de que el servicio TFTP no se encuentre en el mismo servidor que el servicio DHCP, siendo así habría que poner mediante la cláusula next-server la dirección del servidor TFTP Para terminar con la configuración del servicio DHCP hay que indicarle cuál será la interfaz encargada de escuchar las peticiones de los clientes, para ello editamos el fichero /etc/default/isc-dhcp-server dejándolo así (en caso de que la interfaz sea eth0): INTERFACES="eth0" Reiniciamos el servicio con: service isc-dhcp-server restart 3.- Configurar TFTP: Lo primero es crear el directorio pxelinux.cfg dentro de /srv/tftp para ello: mkdir /srv/tftp/pxelinux.cfg Después tenemos que crear el fichero default dentro de la carpeta creada en el paso anterior, el fichero default digamos que será el encargado de crear el menú de arranque que se mostrará una vez cargado PXE. touch /srv/tftp/pxelinux.cfg/default Más adelante rellenaremos el fichero default, ahora vamos a obtener los cargadores de arranque que se entregarán por PXE a los clientes. Estos cargadores de arranque nos los proporciona syslinux y sólo tenemos que copiarlos de su carpeta a la raíz del servidor TFTP: cp /usr/lib/syslinux/vesamenu.c32 /srv/tftp cp /usr/lib/syslinux/menu.c32 /srv/tftp cp /usr/lib/syslinux/chain.c32 /srv/tftp cp /usr/lib/syslinux/mboot.c32 /srv/tftp cp /usr/lib/syslinux/pxelinux.0 /srv/tftp 4.- Ejemplo de una configuracion: Dentro de /srv/tftp creamos un directorio llamado "test" para meter ahí todo lo de este sistema operativo que se valla a configurar mkdir /srv/tftp/test cd /srv/tftp/test Montar (.iso) la imagen en una carpeta del equipo y copiamos todos los ficheros dentro de la carpeta: mkdir /mnt/test mount -o loop /srv/tftp/test/testt.iso /mnt/test cp -R /mnt/test/* /srv/tftp/test Ahora podemos desmontar la imagen y eliminarla para reducir el tamaño de espacio ocupado: umount /mnt/test rm /srv/tftp/test/testt.iso Y para finalizar le damos permisos de escritura, lectura y ejecución para todos a la carpeta "test": chmod -R 777 /srv/tftp/test 5.- Configurar el fichero default de PXE: Ahora que tenemos cada cosa en su sitio podemos proceder con la configuración del fichero default que deberá contener lo siguiente: default vesamenu.c32 prompt 0 timeout 300 ONTIMEOUT test menu rows 5 menu vshift 6 menu color border 0 #ffffffff #ee000000 std menu color title 0 #ffffffff #ee000000 std menu color sel 0 #ffff0000 #85000000 std menu color unsel 0 #ffffffff #ee000000 std menu color pwdheader 0 #ff000000 #99ffffff rev menu color pwdborder 0 #ff000000 #99ffffff rev menu color pwdentry 0 #ff000000 #99ffffff rev menu color hotkey 0 #ff00ff00 #ee000000 std menu color hotsel 0 #ffffffff #85000000 std menu resolution 800 600 LABEL test MENU LABEL ^1) Arrancar test KERNEL test/xxx/vmlinuz // hay que buscar la carpeta en que esta vmlinuz APPEND boot=xxx netboot=nfs nfsroot=192.168.x.x:/srv/tftp/test initrd=test/xxx/initrd.lz splash – 6.- Por último sólo nos queda configurar NFS: La configuración del sistema NFS es muy sencilla, sólo debemos añadir la siguiente linea al final del fichero /etc/exports: /srv/tftp/test Esto hará que dicha carpeta sea compartida mediante NFS por la red, por tanto será accesible para PXE y de ahí es de donde cargará todo lo necesario. Ponemos la carpeta a compartir con el comando: exportfs -av Y ya habremos terminado con la configuración del servidor PXE y todo lo requerido para empezar a distribuir el sistema operativo por nuestra red, de forma que sea accesible para todos y cada uno de los equipos que en ella se encuentren y tengan una tarjeta de red compatible con PXE (todas hoy en día).