Como ya he mencionado en otras oportunidades, arranco desde la red usando PXE prácticamente de todo. Imágenes de CD y DVD, Imágenes de diskette, algunas distribuciones de Linux, etc…

Por masoquismo elección personal, mi única distribución de Linux instalada en todas mis PC es Gentoo así que tenía como asignatura pendiente poder arrancar una instalación de Gentoo desde la red, cosa que de por sí no es nada facil ya que si por algo se caracteriza Gentoo es por su capacidad de personalización en función del hardware.

Como hace unos días me hice con una PC que voy a usar como mediacenter se me ocurrió: ¿Por que no hacerla arrancar desde la red y aprovechar el 100% del disco rígido de la misma para almacenamiento multimedia?

Así que me hice con la guía de Gentoo para terminales diskless y me puse dedos a la obra.

Al menos dos horas estuve dándole cabezasos a la pantalla. El sistema se negaba sistemáticamente a montar la partición raíz en modo R/W (lectura y escritura).

Al no poder montar en modo R/W la partición raíz, la gran mayoría de los servicios quedaban sin iniciarse. Esto me llevó a revisar toda la configuración de punta a punta, a googlear hasta los rincones mas recónditos, a buscar y remilbuscar en los foros de Gentoo y por último a probar soluciones de esas que no tienen ninguna lógica, de las que rayan en lo esotérico.

¿Cual fué la solución?

Pasarle al kernel durante el arranque la opción rw.

Suena lógico, ¿No?

No, no tiene ninguna lógica. La línea de grub que me permitió por último dar con un sistema funcional que cargue / en modo R/W es esta:

kernel /gentoo-2.6.32 ip=dhcp rw root=/dev/nfs nfsroot=192.168.0.1:/diskless/mediacenter

Noten la posición de la opción rw. Esto no está documentado en ningún lugar, lo dejo por aquí para quien pueda necesitarlo el día de mañana con la esperanza de que –google de por medio– alguien llegue hasta este blog y se ahorre un dolor de cabeza.

Como cada vez agrego mas imágenes .iso de CD a las que uso para bootear desde la red y acaba de salir la versión 10 de Ubuntu, quería ponerla en mi lista de distribuciones disponibles en el menú de grub para poder arrancarla usando PXE sin tener que grabar un CD.

Sorpresa: De golpe me encontré con que no hay forma de montar mas de ocho dispositivos de tipo bucle:

~ # mount -o loop ubuntu-10.04-rc-desktop-i386.iso /mnt/ubuntu10/
mount: could not find any free loop device

Mirando la lista de dispositivos tipo bucle me doy cuenta de que solo tengo 8:

~ # ls -d /dev/loop*
/dev/loop /dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3 /dev/loop4 /dev/loop5 /dev/loop6 /dev/loop7

¿Solución?

Pedirle al kernel que genere unos cuantos mas, pasándole la opción max_loop al kernel durante el inicio editando para esto el menú de grub:

title Gentoo Linux 2.6.28-r5
root (hd1,0)
kernel /boot/kernel root=/dev/sdb3 panic=10 max_loop=16

Con eso tengo para un tiempito mas antes de que se me acaben de nuevo.

Por cierto, si a alguien pudiera interesarle como bootear Ubuntu 10.04 por la red usando PXE, mi entrada en el menu.lst de Grub dice:

title Ubuntu 10.04
kernel /ubuntu1004/vmlinuz file=/ubuntu1004/ubuntu.seed boot=casper netboot=nfs nfsroot=192.168.0.12:/mnt/ubuntu10 nox locale=es_ES bootkbd=es console-setup/layoutcode=es quiet splash —
initrd=/ubuntu1004/initrd.lz

Siguiendo la saga del post anterior en donde presentaba a dnsmasq como la navaja suiza del arranque remoto para clientes sin disco rígido – lo que se conoce como diskless o thin clients – completo el artículo con una breve explicación acerca de como poner en funcionamiento este sistema para que nos sirva como DHCP server, TFTP server y PXE server.

Englobando un poco la idea general, lo que se persigue es:

  1. Nunca mas tener que volver a usar un CD o un diskette para arrancar una PC.
  2. Arrancar un ordenador usando únicamente la red (Tenga este disco rígido o no)
  3. Disponer de una serie de imágenes para arrancar desde la red entre las que incluyo:
    • Algunas distribuciones de linux (Cualquier versión de Ubuntu y System Rescue CD)
    • Imágenes ISO de cualquier CD Booteable
    • Windows desde la red.
    • Imágenes de Diskette booteables.

Todo esto se consigue combinando tres piezas que tienen que interactuar entre si:

  • Dnsmasq
  • Grub4Dos
  • PXElinux

Continúa leyendo

O de como reemplazar 4 aplicaciones por una sola:

Prefacio:

Le tengo que dedicar al menos una mención de honor a Dnsmasq, este pequeño DNS Forwarder que con tan solo 269Kb (de código fuente en un .tar.gz) me ha cambiado la vida.

Como bien dicen en su página web oficial, «Dnsmasq is a lightweight, caching DNS proxy with integrated DHCP server«. Osea, un pequeñísimo proxy para cachear peticiones DNS que no resuelve por su cuenta -como lo haría BIND, por ejemplo- si no que se interpone entre la red y el verdadero DNS server almacenando los requests en memoria para servirlos rápidamente y ahorrar minúsculas cantidades de ancho de banda por petición.

Ya con eso solo me bastaría y sobraría si no fuera por que además hace de DHCP server!

Con un archivo de configuración tan bien comentado que ni hace falta leer el manual, además de proxy DNS, puede servir de DHCP server compitíendole a los mejores de su rubro sin ningún esfuerzo en lo que a configurabilidad se refiere, y la cosa no acaba ahi…

Además puede servir de PXE server! De nuevo, sin ningún esfuerzo mas que descomentar dos o tres líneas, puede servir peticiones PXE a la red para hacer arrancar thin clients de cualquier tipo…

No contento con todo esto, su desarrolador además le ha incorporado TFTP Server! No solo puede servir a clientes PXE con su configuración inicial, además puede servir por TFTP la imagen de arranque necesaria!

Todo esto lo he ido descubriendo de a poco, leyendo el archivo de ocnfiguración y haciendo algunas pruebas.

Para mis necesidades, ha reemplazado 4 aplicaciones diferentes que usaba antes con una sola que es tan (o mas) configurable que las anteriores y mucho mas estable en algunos casos… (Por ejemplo, no he vuelto a tener problemas desde que sirvo imagenes por TFTP usando Dnsmasq, cosa que si me pasaba al servirlas con tftp-hpa, un port del TFTP server de OpenBSD para linux)

Resumiendo, Dnsmasq te cambia la vida. En una sola aplicación:

  • DNS Proxy con caché (y control de TXT records si fuera necesario)
  • DHCP Server altamente configurable
  • PXE Server para diskless clients
  • TFTP Server de alta estabilidad y muy buena velocidad de operación.

Una joyita realmente. ¿Que mas se puede pedir de la vida?

Próxima entrega: Como encadené Dnsmasq para que sirva grldr, el bootloader de grub4dos por la red el cual a su vez encadena pxelinux y que me permiten arrancar de todo un poco, livecd de linux, windows, imagenes de diskette y archivos ISO…