Lo hice y lo entendí

El blog de Vicente Navarro
06 sep

Configurar un sistema Debian diskless

En la entrada anterior, Iniciar una instalación de Debian por red, introducíamos los sistemas diskless. Basándonos en la infraestructura detallada en dicha entrada, el arrancar una Debian completa desde la red sólo supone unos sencillos pasos más.

En concreto, si ya somos capaces de arrancar la instalación de Debian por la red, alterando el fichero de configuración del PXELINUX podemos lograr que el sistema que arranca de la red use el kernel que nos interese y, a continuación, montar por NFS el sistema de ficheros que tendremos preparado en otra máquina.

El primer paso es crear una instalación de Debian dentro de un directorio del servidor de arranque (en mi caso /exports/peggy, donde peggy es el nombre del sistema que arrancará Debian de la red) usando el útil comando debootstrap

# mkdir -p /exports/peggy
# debootstrap --arch i386 etch /exports/peggy http://ftp.es.debian.org/debian/

El debootstrap no instala un kernel por defecto, así que entramos en la nueva instalación con chroot para instalar uno:

# chroot /exports/peggy
# apt-get install linux-image-686 libc6-i686
# exit

Ahora vamos a crear un nuevo fichero de configuración para el PXELINUX. Como podemos leer en la documentación del PXELINUX, el fichero default, que es el que ya tenemos, es el último que se intenta cargar. Antes de eso, el gestor de arranque por red trata de usar un fichero con un nombre como 01-<direccion MAC en minúsculas y con guiones como separadores de bytes>. Por ejemplo, si la dirección de nuestro sistema es 00:41:64:ED:29:D3, necesitaremos un fichero con el nombre 01-00-41-64-ed-29-d3 en /var/lib/tftpboot/pxelinux.cfg/.

Por tanto, vamos a crear un fichero /var/lib/tftpboot/pxelinux.cfg/01-00-41-64-ed-29-d3 con el siguiente contenido:

DEFAULT linux

LABEL linux
        kernel diskless/vmlinuz
        append vga=normal initrd=diskless/initrd.img root=/dev/nfs ip=dhcp rw --

Y copiamos los ficheros del kernel al directorio diskless que acabamos de especificar en el fichero de configuración:

# cd /var/lib/tftpboot
# mkdir diskless
# cd diskless
# cp /exports/peggy/boot/vmlinuz-2.6.18-5-686 vmlinuz
# cp /exports/peggy/boot/initrd.img-2.6.18-5-686 initrd.img

En este punto cabe dar las gracias a las personas que mantienen Debian y que hacen posible cosas tan geniales como que el initrd que lleva Debian por defecto esté perfectamente preparado para arrancar de un sistema de ficheros NFS sin más preocupaciones por nuestra parte.

El siguiente paso es hacer un pequeño cambio en el /etc/dhcp3/dhcpd.conf que ya teníamos para especificar dónde está el sistema de ficheros a montar por NFS:

group {
  next-server 10.0.0.1;
  host peggy {
  #tftp client hardware address
    hardware ethernet  00:40:63:EC:28:D2;
    filename "pxelinux.0";
    option root-path "/exports/peggy";
  }
}

Releemos la configuración:

# /etc/init.d/dhcp3-server restart

Instalamos el servidor de NFS (el cliente nos puede ser útil para verificar que podemos montar los directorios correctamente):

# apt-get install nfs-kernel-server nfs-client

Editamos el fichero /etc/exports y especificamos el directorio a exportar y qué rango de IPs pueden usarlo:

/exports/peggy        10.0.0.0/255.255.255.0(rw,no_root_squash,no_subtree_check)

A continuación, ejecutamos un exportfs para exportar el directorio que hemos especificado antes:

# exportfs -a

Y por fin, comprobamos que el sistema de ficheros está bien exportado:

# showmount -e
Export list for servidorinstalacion:
/exports/peggy 10.0.0.0/255.255.255.0

En este punto, sólo con enceder el sistema sin disco, deberíamos de ser capaces de arrancar una Debian recién instalada. Eso sí, como la hemos instalado con debootstrap, estará todo sin configurarar: el hostname, la zona horaria, la distribución del teclado, los usuarios, etc. Así que, para dejarla a nuestro gusto, ¡aún nos queda una buena tarea por delante!

Referencia: Diskless Debian: Phase 1 – Debian over NFS

Entradas relacionadas

Tema LHYLE09, creado por Vicente Navarro