martes, 18 de octubre de 2011

Booteo servidor PXE en Debian Squeeze

A continuación, les redacto un breve tutorial sobre el booteo en un servidor PXE, muy útil, cuando queremos tener varias ISO disponibles en dicho servidor.

Antes que nada, aclarar que un servidor PXE(Preboot Execution Environment) es el servidor que trata de encontrar un cliente cualquiera cuando arranca por red, y cuyo servicios que ofrecemos son ISO de sistemas operativos para que arranquen por red.

Para que dicho booteo se pueda ejecutar correctamente, debemos configurar previamente un servidor DHCP(para que le de una ip válida al cliente), y un servidor tftp(
Trivial file transfer Protocol) que no es mas, que un protocolo de transferencia muy simple que se utiliza para transferir pequeños archivos entre ordenadores en una red.

Para empezar, instalamos los paquetes necesarios:
Instalación del servidor DHCP
root@bobesponja:~# aptitude install dhcp3-server

Para configurar el servidor DHCP, editamos el fichero de configuración que se encuentra en el directorio /etc/dhcp/dhcpd.conf
root@bobesponja:~# nano /etc/dhcp/dhcpd.conf


Una vez que tenemos definido los parámetros de configuración del DHCP, debemos especificar en el fichero de configuración /etc/default/isc-dhcp-server la interfaz de red por la cuál, vamos a ofrecer nuestro servicio DHCP, para ello haremos un "ifconfig" previamente, en mi caso la interfaz es la "eth0":
root@bobesponja:~# nano /etc/default/isc-dhcp-server
INTERFACES="eth0"

Para que se ejecuten los cambios, reiniciamos el servicio DHCP:
root@bobesponja:~# /etc/init.d/isc-dhcp-server


Instalación del servidor TFTP
root@bobesponja:~# aptitude install tftpd-hpa

Para configurar el directorio en el cuál, va a buscar el cliente el fichero "pxelinux.0", debemos modificar la variable "TFTP_DIRECTORY" del fichero "tftpd-hpa" del servidor.
root@bobesponja:~# nano /etc/default/tftpd-hpa

Las ISO que usamos en los servidores PXE son ISO especiales, modificadas para arrancar por red, en mi caso he utilizado una ISO de Debian Squeeze y otra de Debian Lenny, para ello:

Me bajo la ISO de Debian Squeeze y la descomprimo:
root@bobesponja:~# wget http://ftp.debian.org/debian/dists/squeeze/main/installer-i386/current/images/netboot/netboot.tar.gz
root@bobesponja:/srv/tftp# tar -xzvf /home/juanlu/netboot.tar.gz

Al descomprimirlo me crea los siguientes archivos y directorios:


Hago lo mismo con la ISO de Debian Lenny:
root@bobesponja:~# wget http://ftp.debian.org/debian/dists/lenny/main/installer-i386/current/images/netboot/netboot.tar.gz
root@bobesponja:/srv/tftp# tar -xzvf /home/juanlu/netboot.tar.gz

Al descomprimirlo me da exactamente los mismos archivos y directorios, en mi caso, solo me interesa el directorio "lenny" que se encuentra dentro del directorio "debian-installer" que es diferente al de Debian Squeeze, ya que el resto de los archivos(pxelinux.0,pxelinux.cfg,....)son iguales.

Una vez descomprimidas las ISO, las muevo o copio(cuestión de gustos), al directorio "/srv/tftp/". De la ISO de Debian Lenny, sólo copio el directorio "lenny" a "/srv/tftp/debian-installer" quedando el directorio "/srv/tftp" con la siguiente estructura:

Si hago un "ls" dentro del directorio "debian-installer" podemos ver los dos directorios distintos "squeeze" y "lenny"

Debemos crear un fichero con extension ".msg" en el cuál, vamos a redactar nuestro menú de booteo, y lo debemos de colocar en el directorio "/srv/tftp/", en mi caso lo he nombrado con el nombre "explicacion.msg", y dicho fichero contiene lo siguiente:

Para que cuando pulse F1, me muestre un submenú de ayuda, he creado otro fichero con extensión ".msg", que en mi caso lo he llamado "explicacion2.msg", que debemos colocarlo en el directorio "/srv/tftp" y que contiene lo siguiente:


Ahora edito el fichero de configuración "default" que se encuentra en el directorio "pxelinux.cfg" con los siguientes parámetros:
root@bobesponja:~# nano /srv/tftp/pxelinux.cfg/default


Donde "DISPLAY" hace referencia al fichero que hace de booteo, en mi caso "explicacion.msg"
"DEFAULT" es el sistema operativo que va arrancar por defecto si no seleccionamos ninguno.
"LABEL" son las etiquetas, es decir, si escribimos la etiqueta "Debian_Lenny", hace lo que viene en kernel, si elegimos la otra etiqueta, pues arranca el otro kernel.
"F1" es para que cuando pulsemos F1, nos salga el menú de ayuda, en mi caso, el fichero es explicacion2.msg.


Antes de iniciar el cliente, debemos reiniciar el servicio TFTP, para ello:
root@bobesponja:~# /etc/init.d/tftpd-hpa

Finalmente para comprobar que esto funciona, arranco una máquina virtual, y selecciono que arranque por red:


Y como muestra final, un cliente arrancando por red, en la cuál, le sale el menú:

Ahora una muestra de la pantalla cuando pulsamos F1:

Por último, agredecer la documentación en inglés de:
http://www.novell.com/communities/node/5777/setting-pxe-boot-server

Saludos

3 comentarios:

  1. El archívo "pxelinux.0" ya viene en la carpeta "/dhcp" o hay que crearlo a mano?

    ResponderEliminar
  2. El archivo "pxelinux.0" viene en el .rar que me bajo.
    Saludoss

    ResponderEliminar
  3. una pregunta y si quiero bootear una iso por ejemplo de window u otra distribución como hago para modificar el archivo /srv/tftp/pxelinux.cfg/default porque si quiero poner un sistema operativo de cada cosa tengo que saber como se deberia de agregar gracias por el tuto muy bueno saludos xD

    ResponderEliminar