Netboot install con dnsmasq

Tengo en mi casa un Pentium III de 800 MHz con 128 MBs de RAM. Es de César y la vamos a utilizar para el proyecto. No tiene lectora de CD y no tiene soporte para bootear por la red. Les muestro en este post lo que tuve que hacer para instalar Ubuntu Server en una máquina así, de esta forma si lo tienen que hacer se ahorran trabajo.

Escenario

La máquina que tendrá el servidor DHCP, TFTP y compartirá Internet es mi notebook, que se llama wasabi (a mí si me gusta el nombre :-)). La PC target se llamará tellus. Desde mi notebook me conecto a un router via wifi (el cual me brinda Internet), y a tellus por cable. La interfaz de la primer conexión es wlan0, y la de la segunda eth0.

Procedimiento

wasabi

  • En wasabi solamente es necesario tener dnsmasq instalado (hará de servidor DHCP y además tiene un server TFTP incluido).
  • La IP de wasabi será 192.168.0.1
  • Editamos las opciones en /etc/dnsmasq.conf. Agregamos las siguientes lineas (asegúrense de que el archivo no tenga otras opciones conflictivas activadas):
listen-address=192.168.0.1
interface=eth0

dhcp-no-override
dhcp-range=192.168.0.30,192.168.0.60,12h

dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/var/ftpd
  • Coloquen el CD de Ubuntu Server (o la versión que sea) en su lectora, y copien los archivos necesarios para realizar la instalación por red:
$ sudo cp -ar /media/cdrom0/install/netboot/* /var/ftpd
  • Otra opción al paso anterior es bajarse los archivos desde Internet, para Intrepid o para Jaunty por ejemplo.
  • # sudo service dnsmasq restart
  • En este punto ya tenemos andando dnsmasq, como servidor DHCP, DNS y TFTP.
  • Activamos IP Masquerading:
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
  • Como les dije, tellus no puede bootear directamente por red, así que es necesario crear un disquette con gPXE. Tienen que elegir el modelo de placa de red exacto de la máquina target (tellus en este caso) para poder bootear, traer la imagen desde wasabi y arrancar la instalación. Una vez bajada, pueden grabarla en un disquette (que difícil conseguir un disquette estos días… y uno que ande) con dd en GNU/Linux o rawwritewin en Windows.

tellus

  • Colocan el disquette creado y bootean desde él. Deberían ver cómo la máquina target pide una IP y arranca el instalador de Ubuntu.

Listo, eso es todo. Un inconveniente que tuve fue resuelto con la opción “dhcp-no-override” que les mostré arriba, para dnsmasq. Resulta que en modo normal no arma paquetes DHCP del todo estándar, y que hacían tellus no pueda encontrar la opción de “archivo de booteo” al recibir el paquete DHCP.