Hace unos días, ante la inminente falta de un CD-R, tuve la necesidad de iniciar una instalación de Debian GNU/Linux por Red. La mayoría de los HowTo’s que encontre, o estan incompletos o para versiones anteriores de Debian (lease etch – sarge), asi que decidí documentar todo el proceso para referencia futura:

Instalación de los paquetes necesarios

Ejecutando como root el siguiente comando

apt-get install dnsmasq tftpd-hpa

Configuración de dnsmaq

dnsmasq cuenta con un archivo de configuración en /etc/dnsmasq.conf, el cual debemos editar de la siguiente manera

listen-address=10.0.10.2
bind-interfaces
dhcp-range=10.0.10.30,10.0.10.50,24h
dhcp-option=option:router,10.0.10.1
dhcp-option=option:dns-server,208.67.222.222
dhcp-boot=pxelinux.0,servidor,10.0.10.2

Siendo 10.0.10.2 la dirección IP del servidor que contendra los archivos de arranque, 10.0.10.30-50 el rango de direcciones que asignaremos por DHCP a los clientes para instalar, y 10.0.10.1 nuestro gateway (que puede o no ser la misma máquina)

Configuración de tftp-hpa

Editamos el archivo /etc/default/tftpd-hpa para que quede de la siguiente manera


#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"

Luego, tendremos que crear los directorios necesarios


mkdir -p /var/lib/tftpboot

mkdir -p  /var/lib/tftpboot/pxelinux.cfg

Y creamos el archivo /var/lib/tftpboot/pxelinux.cfg/default en nuestro editor de texto preferido con el siguiente contenido


DISPLAY boot.txt

DEFAULT lenny_i386_install

LABEL lenny_i386_install
 kernel debian/lenny/i386/linux
 append vga=normal initrd=debian/lenny/i386/initrd.gz  --
LABEL lenny_i386_linux
 kernel debian/lenny/i386/linux
 append vga=normal initrd=debian/lenny/i386/initrd.gz  --

LABEL lenny_i386_expert
 kernel debian/lenny/i386/linux
 append priority=low vga=normal initrd=debian/lenny/i386/initrd.gz  --

LABEL lenny_i386_rescue
 kernel debian/lenny/i386/linux
 append vga=normal initrd=debian/lenny/i386/initrd.gz  rescue/enable=true --

PROMPT 1
TIMEOUT 0

Y el archivo /var/lib/tftpboot/pxelinux.cfg/boot.txt de la siguiente manera:

- Boot Menu -
=============

lenny_i386_install
lenny_i386_linux
lenny_i386_expert
lenny_i386_rescue

Descarga de los archivos necesarios

Necesitamos descargar algunos archivos como por ejemplo un kernel :P para que nuestro cliente pueda arrancar y una imagen de instalación. Podemos cambiar ‘ftp.uk.debian.org’ por cualquier mirror de Debian más cercano

cd /var/lib/tftpboot/
wget http://ftp.uk.debian.org/debian/dists/lenny/main/installer-i386/current/images/netboot/debian-installer/i386/pxelinux.0
mkdir -p /var/lib/tftpboot/debian/lenny/i386
cd /var/lib/tftpboot/debian/lenny/i386
wget http://ftp.uk.debian.org/debian/dists/lenny/main/installer-i386/current/images/netboot/debian-installer/i386/linux
wget http://ftp.uk.debian.org/debian/dists/lenny/main/installer-i386/current/images/netboot/debian-installer/i386/initrd.gz

Reiniciando servicios

/etc/init.d/dnsmasq restart
/etc/init.d/tftpd-hpa restart

Al finalizar con todos estos pasos, cualquier máquina que se encuentre conectada a nuestra misma red física y con capacidad de arranque por PXE, podrá iniciar una instalación de Debian si asi lo desea :)

Fuentes:
http://crysol.org/node/1080
http://www.debian-administration.org/articles/478