sábado, 4 de julio de 2009

Iniciar una instalación de Debian por red

Iniciar una instalación de Debian por red
(
fuente)
Es un proceso bastante sencillo, aunque necesitaremos una cierta infraestructura en otro sistema ya instalado del que el sistema a instalar obtendrá todo lo necesario.

La máquina a instalar ha de soportar arrancar desde la red por PXE, una combinación de DHCP y TFTP que permite asignar una dirección IP al sistema cliente y a continuación pasarle los ficheros necesarios para que lo haga. En mi caso, como el router ADSL que uso ya es servidor de DHCP, es deseable evitar posibles interferencias al montar un nuevo servidor DHCP a pesar de que, según la Wikipedia, esto en teoría se podría evitar: The PXE Client/Server Protocol was designed so it can be used in the same network as an existing DHCP environment without interference
Conectamos con un cable cruzado la interfaz, estamos listos para comenzar la configuración del sistema.

Como la red del router es la 192.168.1.0/255.255.255.0, vamos a usar una distinta, la 10.0.0.0/255.255.255.0 para la red entre el servidor de instalación y el sistema a instalar.
Así que configuramos el interfaz en el fichero /etc/network/interfaces:

auto eth0
iface eth0 inet static
address 10.0.0.1
netmask 255.255.255.0
gateway 10.0.0.1

y lo levantamos con “ifup eth0“.

A continuación, instalamos el servidor de DHCP y el de TFTP (nos preguntará si queremos que funcione bajo el inetd o independiente, en nuestro caso, es mucho mejor lo primero):
# apt-get install dhcp3-server

# apt-get install tftp-hpa

El siguiente paso es editar el fichero /etc/dhcp3/dhcpd.conf y poner una configuración similar a la siguiente (estas son todas las líneas sin comentar en mi caso):
ddns-update-style none;

default-lease-time 3600;
max-lease-time 86400;

allow booting;
allow bootp;

subnet 192.168.1.0 netmask 255.255.255.0 {
}

subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.2 10.0.0.254;
option broadcast-address 10.0.0.255;
option routers 10.0.0.1;
option domain-name-servers 80.58.61.250;
option domain-name-servers 80.58.61.254;
}

group {
next-server 10.0.0.1;
host peggy {
hardware ethernet 00:41:64:ED:29:D3;
filename "pxelinux.0";
}

}

En ella, le decimos que ignore las peticiones de la red 192.168.1.0/24 y que atienda las de la red 10.0.0.0/24 concediendo IPs en el rango 10.0.0.2-10.0.0.254. También especificamos la IP del servidor de instalación (10.0.0.1) y dentro del grupo de opciones específicas de la máquina a instalar (peggy), la dirección MAC del sistema (00:41:64:ED:29:D3). Si no la sabemos, hay que tener en cuenta que la MAC suele aparecer en la pantalla mientras hace intentos de arranque (que en este punto deberían ser infructuosos).
El fichero pxelinux.0 que le especificamos es el gestor de arranque PXELINUX (como LILO o GRUB), del mismo autor que el SYSLINUX, con el que ya trabajamos en Arrancar Knoppix desde una memoria USB usando SYSLINUX.

Reiniciamos el servidor para que use la nueva configuración.
# /etc/init.d/dhcp3-server restart
Stopping DHCP server: dhcpd3.

Starting DHCP server: dhcpd3.

Ahora tenemos que preparar los ficheros necesarios para arrancar la instalación. Para ello, vamos al directorio de imágenes de arranque del TFTP: cd /var/lib/tftpboot/ y nos bajamos a este directorio todos los archivos necesarios (entre los que está, el pxelinux.0):

wget -erobots=off -np -r -l 0 -nH --cut-dirs=8 -R 'index.html*'

http://http.us.debian.org/debian/dists/etch/main/installer-i386/current/images/netboot/

Sólo falta un detalle, y es que necesitamos que el sistema a instalar pueda acceder a Internet para poder descargarse los paquetes necesarios de Debian y de momento está en la red aislada 10.0.0.0/24. Para ello, configurar NAT en el servidor de instalación para que todo lo que sea enviado de salida por el interfaz eth1 sea disfrazado (MASQUERADE) como proveniente de eth0 al igual que hace el router con los paquetes de nuestra red
echo "1" > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

En este punto, al encender nuestro sistema debería de recibir una IP y luego la imagen de arranque pxelinux.0 y el pxelinux.cfg/default, tras lo cual comenzará el programa de instalación totalmente estándar de Debian. Por cierto, el fichero de configuración del PXELINUX, el pxelinux.cfg/default es totalmente comprensible y tiene una apariencia similar a la que pueden tener el lilo.conf, el grub/menu.lst o el syslinux.cfg:
DISPLAY debian-installer/i386/boot-screens/boot.txt

F1 debian-installer/i386/boot-screens/f1.txt
F2 debian-installer/i386/boot-screens/f2.txt
F3 debian-installer/i386/boot-screens/f3.txt
F4 debian-installer/i386/boot-screens/f4.txt
F5 debian-installer/i386/boot-screens/f5.txt
F6 debian-installer/i386/boot-screens/f6.txt
F7 debian-installer/i386/boot-screens/f7.txt
F8 debian-installer/i386/boot-screens/f8.txt
F9 debian-installer/i386/boot-screens/f9.txt
F0 debian-installer/i386/boot-screens/f10.txt

DEFAULT install

LABEL install
kernel debian-installer/i386/linux
append vga=normal initrd=debian-installer/i386/initrd.gz --
LABEL linux
kernel debian-installer/i386/linux
append vga=normal initrd=debian-installer/i386/initrd.gz --

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

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

LABEL auto
kernel debian-installer/i386/linux
append auto=true priority=critical vga=normal initrd=debian-installer/i386/initrd.gz --

PROMPT 1
TIMEOUT 0



No hay comentarios:

Publicar un comentario