Hoy vamos a hablar de como instalar un sistema operativo , en este caso Debian, de forma remota gracias a los beneficios que nos ofrece debian installer . Por mi experiencia personal han sido muchos los casos donde me he tenido que desplazar para reinstalar servidores debido a que la actualización ha fallado y he perdido la comunicación, y la verdad que es un engorro, horas de desplazamiento, llevar el equipamiento adecuado para la reinstalación y horas muertas sin saber que hacer. Pues bien, se me ocurrió buscar un método con el cual pudiera reinstalar este tipo de servidores de forma remota desde mi puesto de trabajo. Buscando un poco en la wiki de Debian encontré un documento donde se explica como preparar un Kernel para poder instalar de forma remota, este Kernel principalmente lo que hace es montar un servidor ssh en debian-installer, por tanto el cliente que ataque a la maquina por ssh le aparecerá inmediatamente el menú de instalación. Como tengo varios servidores para actualizar pense que hacer esta imagen en cada maquina podria ser algo pesado, asi que pense que desde una maquina central, facilitando los datos del servidor a reinstalar, podria generar imagenes de una forma mas sencilla, asi que este how-to esta hecho para montar este servidor en una Debian squeeze. Vamos con ello: 1. Preparar el sistema El sistema necesita tener en el sources.list el repositorio fuente de Debian:

echo -e "deb-src http://ftp.debian.org/debian/ squeeze main" >> /etc/apt/sources.list
Además de realizar esta modificación los siguientes paquetes deben estar instalados para poder compilar la imagen, estos son:
apt-get install debian-archive-keyring dpkg-dev build-essential
2. Descargar las fuentes de Debian installer
apt-get source debian-installer
apt-get build-dep debian-installer
3. Modificaciones Fichero: build/pkg-lists/netboot/i386.cfg Añadir al inicio de este fichero lo siguiente (en el caso de arquitectura amd64 sería fichero amd64.cfg):
#include "network-console"
Fichero temporal de preseed: /tmp/debian-installer.cfg El fichero de preseed nos configura varios aspectos de la instalación de Debian, aqui podriamos incluir todos los aspectos de la instalación incluso el esquema de particiones. En este caso he creado el preseed con los parametros básicos y he dejado el esquema de particiones de forma manual (ya que no todos los servidores tienen la misma configuración)
d-i debian-installer/locale string es_ES
d-i debconf/priority select critical
d-i auto-install/enabled boolean true
d-i netcfg/choose_interface select < INTERFAZ DE RED PRINCIPAL >
d-i netcfg/disable_dhcp boolean true
d-i netcfg/get_nameservers string < DNS >
d-i netcfg/get_ipaddress string < DIRECCIÓN IP DEL SERVIDOR >
d-i netcfg/get_netmask string < MASCARA DE RED DEL SERVIDOR >
d-i netcfg/get_gateway string < PUERTA DE ENLACE DEL SERVIDOR >
d-i netcfg/confirm_static boolean true
d-i netcfg/get_hostname string < NOMBRE DE HOST >
d-i netcfg/get_domain string < DOMINIO >
d-i network-console/password password < PASSWORD DE ACCESO >
d-i network-console/password-again password  < PASSWORD DE ACCESO >
IMPORTANTE: El password de acceso no va a ser la contraseña para entrar en el sistema, sino la contraseña para acceder al menú de instalación!! Fichero: build/config/local Crear (o editar en el caso de que se encuentre) el fichero con el siguiente contenido:
PRESEED=/tmp/debian-installer.cfg
USE_UDEBS_FROM=< DISTRIBUCION >
En el caso que se quiera instalar cualquier distribución de Debian, no incluir la variable USE_UDEBS_FROM. Fichero: build/sources.list.udeb.local Crear el fichero con el siguiente contenido:
deb http://ftp.debian.org/debian squeeze main/debian-installer
4. Compilar la imagen Una vez se han realizado los cambios habrá que proceder a compilar la imagen. Para ello accedemos al directorio build/ y ejecutamos:
fakeroot make rebuild_netboot
Esto generará dos ficheros ubicados en "build/dest/netboot/debian-installer/i386/initrd.gz" y "build/tmp/netboot/vmlinuz". 5. Modificaciones en initrd.gz
IMPORTANTE : Esta parte es exclusiva de este caso, si la imagen la estas creando directamente en la maquina a reinstalar puedes omitir este paso
La imagen initrd que ha sido creada debe modificarse para añadir la información perteneciente al servidor objetivo, concretamente las direcciones MAC de las diferentes interfaces del servidor asociadas a los dispositivos ethX. Esto asegura que el esquema de red que tiene el servidor objetivo no deba de modificarse debido a una nueva instalación. Para modificar el initrd.gz, accedemos al directorio donde se encuentra ubicado y una vez posicionados ejecutamos lo siguiente:
mkdir initrd
cp initrd.gz initrd/
cd initrd/
gunzip initrd.gz
mkdir salida
cd salida
cpio -i --no-absolute-filenames < ../initrd
echo -e "< INTERFAZ_1 > < DIRECCION MAC >\n\n < INTERFAZ_2 > < DIRECCION MAC >\n\n ..... < INTERFAZ_X > < DIRECCION MAC >" > etc/mactab
rm ../initrd
find . | cpio -o -H newc > ../initrd
cd .. && gzip -c initrd > initrd.gz
Con estos comandos se genera dentro de la imagen el fichero /etc/mactab donde se albergan las interfaces relacionadas con sus direcciones MAC, un ejemplo de este comando para que se entienda mejor sería:
echo -e "eth0 00:0D:61:A5:D2:C9\n\neth1 00:07:E9:1A:DB:F2\n\neth2 00:07:E9:1A:DB:F3\n\neth3 00:07:E9:1A:DD:5A" > etc/mactab
6. Alojar los ficheros en la maquina objetivo El ultimo paso sería copiar el nuevo initrd.gz modificado y el fichero vmlinuz a la maquina objetivo. El procedimiento que se ha generado copia los ficheros por scp a la maquina objetivo modificando los nombres de fichero originales. Para ello se realizan los siguientes comandos:
scp initrd.gz root@< IP_OBJETIVO >:/boot/debian-installer-rd.gz
scp vmlinuz root@ < IP_OBJETIVO >:/boot/debian-installer-vmlinuz
7. Modificar GRUB en la maquina objetivo El último paso que hay que realizar es modificar el fichero de configuración de grub "/boot/grub/menu.lst" y agregamos un nuevo "title" al inicio de la sección para que sea el que coja por defecto (default 0):
title Remote Debian Installer
root (hd0,0)
kernel /boot/debian-installer-vmlinuz rw ramdisk_size=24000 root=/dev/rd/0
initrd /boot/debian-installer-rd.gz
8. Reinicio de servidor Ya el último paso es reiniciar el servidor. En el momento en el que grub accede a este Kernel, nos aparecerá un mensaje en la maquina objetivo donde indica que está la sesión de ssh abierta a la espera de comunicación. Desde el cliente accedemos para la instalación de la siguiente forma:
ssh installer@< IP_OBJETIVO >
Y.....voilá!! Ya tenéis el menú de instalación de vuestra Debian.