Blackhold

Servidor PXE con tftp, sin DHCP y Kickstart

Posted on desembre 21st, 2009 by Blackhold

Hace apenas un par de días posteaba el manual que hizo cbk de como montar un servidor PXE con GNU/Linux, así que ahora vamos a hacer lo mismo pero diferente y con un par de cosillas mas ;)

Nos encontramos que estamos en una red que ya hay un servidor de DHCP y no queremos que nuestra maquina sea quien ofrezca las IP.
Al final se cuenta como hacer autodeploys de los sistemas que tendremos disponibles a instalar.

La instalación se ha hecho en una debian lenny (stable).


Primero instalamos todos los paquetes

# apt-get install tftpd-hpa lftp

Si habéis seguido el anterior manual, se ha omitido la instalación de inetutils-inetd, ya que vamos a ejecutar el tftpd como un servicio independiente.

A continuación modificamos el fichero /etc/default/tftpd-hpa y le decimos que deseamos que sea posible habilitar el servicio.

# vi /etc/default/tftpd-hpa
#Defaults for tftpd-hpa
RUN_DAEMON=”yes”
OPTIONS=”-l -s /var/lib/tftpboot”

e inciamos el servicio:

# /etc/init.d/tftpd-hpa start

y comprobamos que está funcionando:

# netstat -lanp |grep tftp
udp        0      0 0.0.0.0:69              0.0.0.0:*                           2513/in.tftpd
unix  2      [ ]         DGRAM                    11553    2513/in.tftpd

Si estamos en una red con otro servidor DHCP en otra maquina, el paso del manual de cbk de configurar el DHCP nos lo saltamos, simplemente tendremos que añadir los parámetros filename (pxelinux.0 en este caso) y next-server (y la ip del servidor PXE) en el servidor DHCP previamente activo.

filename “pxelinux.0″
next-server “ipdelservidorPXE”

A continuación descargaremos las imágenes.

# cd /tmp
# lftp -c “open http://ftp.de.debian.org/debian/dists/lenny/main/installer-i386/current/images/; mirror netboot/”

Ahora ya tenemos la imagen descargada. Solo faltará mover la imagen al directorio de arranque del PXE.

# mv netboot/* /var/lib/tftpboot
# rm -R netboot

Ahora editaremos el fichero de configuración del pxe (vendría a ser como el menu.lst del grub)

# vi /var/lib/tftpboot/pxelinux.cfg/default
# D-I config version 1.0
include debian-installer/i386/boot-screens/menu.cfg
default debian-installer/i386/boot-screens/vesamenu.c32
prompt 0
timeout 0

El fichero menu.cfg que viene por defecto de los ficheros que nos hemos descargado antes, nos configurará el tftp para que sólo se instale aquella versión de linux, ofreciéndonos posiblemente un instalador especifico de la distribución linux.
Si ponemos timeout, a la que pase el tiempo indicado (en ms), empezará la instalación por defecto.

tftp hpa permite además en un solo servidor PXE tener mas de una instalación disponible. Para ello modificaremos el fichero default que se encuentra dentro de pxelinux.cfg.

Antes pero vamos a descargarnos alguna otra distribución para poder crear un menú de distribuciones a instalar :)

# cd /var/lib/tftp
# mkdir -p debian/testing
# mv * debian/testing/
# cp -R debian/testing/pxelinux* .


Ubuntu 32bits:

# cd /tmp
# lftp -c “open http://archive.ubuntu.com/ubuntu/dists/karmic/main/installer-i386/current/images/; mirror netboot/”
# mkdir -p /var/lib/tftp/ubuntu/karmic/
# mv netboot/* /var/lib/tftp/ubuntu/karmic/
# rm -R netboot

Ubuntu 64bits:

# cd /tmp
# lftp -c “open http://archive.ubuntu.com/ubuntu/dists/karmic/main/installer-amd64/current/images/; mirror netboot/”
# mkdir /var/lib/tftp/ubuntu/karmic/ubuntu-installer/amd64
# mv netboot/ubuntu-installer/amd64/* /var/lib/tftp/ubuntu/karmic/ubuntu-installer/
# rm -R netboot

Si nos fijamos sólo hemos copiado el directorio de dentro de ubuntu-installer amd64, ya que el resto no son necesarios. De esta forma podemos llegar a crear un buen repositorio de distribruciones perfectamente ordenaditas :)

Seguimos…

Debian 32bits:

# cd /tmp
# lftp -c “open http://ftp.de.debian.org/debian/dists/lenny/main/installer-i386/current/images/; mirror netboot/”
# mkdir -p /var/lib/tftp/debian/lenny/
# rm -R netboot
# mv netboot/* /var/lib/tftp/debian/lenny/

Vamos a hacer lo mismo con las otras distribuciones que queramos instalar. Estos ficheros se encuentran también dentro de los cds, bastará en copiar el cd entero de la distribución en nuestro disco y vincularlo de la misma forma que vinculamos las distribuciones aquí mostradas. Un poco de imaginación :)

El tema del menú es bastante simple, si tenemos dudas podemos tirarnos a la red a navegar en búsqueda de ejemplos de ficheros de configuración o mirar los propios menu.cfg que traen las distribuciones que nos hemos descargado. Así que el menú del PXE es configurable a tu anotjo :D

A continuación un ejemplo de menu para cargar algunas de las distribuciones que hemos cargado:

# vi /var/lib/tftp/pxelinux.cfg/default
default ubuntu-installer/i386/boot-screens/vesamenu.c32
prompt 0
timeout 0

MENU TITLE PXE Boot Menu

label Boot from Harddisk
menu default
LOCALBOOT 0
Type 0×80

label Debian Lenny (stable) 32bit
kernel debian/lenny/debian-installer/i386/linux
append initrd=debian/lenny/debian-installer/i386/initrd.gz –

label Ubuntu 9.10 32bit Desktop
kernel ubuntu/karmic/ubuntu-installer/i386/linux
append initrd=ubuntu/karmic/ubuntu-installer/i386/initrd.gz –

label Ubuntu 9.10 64bit Desktop
kernel ubuntu/karmic/ubuntu-installer/amd64/linux
append initrd=ubuntu/karmic/ubuntu-installer/amd64/initrd.gz –

En este fichero le decimos que tenemos 3 instalaciones, 1 debian y 2 ubuntu, una de 32bit y la otra de 64. Los — al final de la línea no son obligatorios, pero le indican al programa que se ha terminado la línea.

Pero hay más aun! es posible decirle la configuración por defecto de una instalación, con el kickstart. El kickstart no es nada mas que un fichero de texto que le pasas al servidor PXE con los parametros de idioma, teclado, usuario, etc. además puedes definir unos comandos a ejecutar antes de la instalación (como por ejemplo la instalación de drivers de la tarjeta de red, del raid, etc.) o después de la instalación (programas a instalar, modificación de ficheros, modificar los perfiles por defecto de los usuarios, y hasta donde llegue la imaginación!).

Podemos navegar por la red otra vez buscando ficheros de configuración o darnos un pequeño caprichito gráfico con system-config-kickstart (si estamos en ubuntu).

# apt-get install system-config-kickstart

En debian no está en los repositorios (aunque podemos tomárselo prestado a ubuntu, buscando el .deb y haciendo un dpkg -i system-config-kickstart.deb), pero en los de redhat si.

Con este programa vamos saltando los distintos menús que aparecen en la instalación y sus configuraciones por defecto.

A continuación sólo tendremos que añadir una nueva opción en la línea que nos interese autoconfigurar en el fichero pxelinux.cfg/default, por ejemplo:

label Ubuntu 9.10 32bit (Preseed)
kernel ubuntu/karmic/ubuntu-installer/i386/linux
append initrd=ubuntu/karmic/ubuntu-installer/i386/initrd.gz ks=rutafichero_kickstart.cfg –

Modificamos la label para indicar que se trata de una instalación automática. ¡Alerta! en menos que cante un gallo vas a tener una distribución instalada en todo el ancho y largo de tu disco duro… mwhahaha (ehem… :P), por esto que es altamente recomendable dejar el timeout a 0 si vas a usar esta opción.
La ruta al fichero de configuración puede ser un fichero local o remoto (http, ftp, etc).

Para mas información sobre instalaciones automáticas:

http://www.ubuntu.com/system/files/u1/AutomatedDeploymentsWP-20090126.pdf

Gracias permalac

« »