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