"Después del juego es antes del juego"
Sepp Herberger

viernes, 17 de octubre de 2014

Sistema de clonado remoto (parte 2 de 3)

Bueno, ya tenemos nuestro servidor PXE en marcha, ahora vamos a añadirle más cosas para darle vidilla. En Internet hay multitud de manuales y herramientas para añadir a un arranque por PXE: el SystemRescueCD, el Clonezilla, otros CD de rescate, instalaciones de red de sistemas operativos, el PartedMagic, antivirus (como Avira, por ejemplo), imágenes de disquetes con utilidades e incluso WinPE con una versión reducida de Windows XP.

En nuestro caso sólo queremos SystemRescueCD y Clonezilla. En principio habría que poner una opción de menú para cada uno de ellos, pero en su día me ocupé de fusionar ambos en una sola imagen de CD que será la que usemos para tener nuestra navaja suiza por PXE.

Antes de seguir recordemos que cuando arranca cualquier Linux, ya sea por Grub, PXE u otro método, lo que se necesita es:

  • Un kernel.
  • Un initramfs, que es un fichero comprimido que contiene dentro un sistema de archivos reducido (con su /etc, /bin, /lib, ....) con las utilidades mínimas y los drivers necesarios para empezar a funcionar.
  • Un sistema de archivos raíz (nuestro querido "/" con todo lo que contiene debajo), que puede cargarse desde muchos sitios: desde una partición del disco duro, desde una imagen comprimida en CD o USB en formato squashfs, o a través de la red local (compartido mediante NFS , NBD y/o http.)

En el arranque PXE, que es el que nos ocupa, el kernel y el initramfs se envían por protocolo TFTP, estando para ello colocados dentro /var/lib/tftp. El sistema de archivos raíz puede enviarse completo por red para cargarse en memoria (por http) o bien compartirse por NFS y/o NBD. En nuestro caso, al ser una imagen bastante grande la compartiremos por NBD, que es más sencillo de configurar y tiene mejor rendimiento que NFS.

Para ello debemos instalar el paquete nbd-server la misma máquina (o no) donde está el servidor TFP y configurarlo tal que asi:

#cat /etc/nbd-server/config

[generic]
user = nbd
group = nbd
listenaddr = <ip-donde-esta-el-servidor-nbd>
oldstyle = true
[clonezilla-sysrcd]
exportname = /var/lib/tftpboot/sysrcd-clonezilla/sysrcd.dat
port = 2000

Con esto decimos que exportamos el contenido del fichero /var/lib/tftpboot/sysrcd-clonezilla/sysrcd.dat (que es el sistema de ficheros completo del cd de SystemRescue-Clonezilla) mediante NBD por el puerto 2000 del servidor.

Ahora hay que crear el directorio /var/lib/tftpboot/sysrcd-clonezilla/ y meter dentro el fichero sysrcd.dat, el cual obtendremos al descomprimir la imagen ISO descargada de aquí. Una vez descargada la ISO el contenido se extrae con el botón derecho del ratón->extraer, como de cualquier otro fichero comprimido en Linux.

Una vez hecho esto, procedemos a reiniciar el servicio NBD:

/etc/init.d/nbd-server restart

Y nos aseguramos de que está arrancado con:

ps aux | grep nbd

Bueno, pues lo último que queda es configurar el PXE para que sirva está imagen, nos vamos al fichero pxelinux.cfg/default y añadimos:

......................
MENU BEGIN
MENU TITLE Herramientas Sysadmin
   MENU PASSWD
   LABEL rescuecd-clonezilla
      MENU LABEL SystemRescueCD + Clonezilla + Scripts (NBD)
      kernel sysrcd-clonezilla/rescue32
      append initrd=sysrcd-clonezilla/initram.igz  setkmap=es netboot=nbd://<ip-del-servidor-nbd>:2000 rootpass=2tazasdelinux  keeppxe
    LABEL freedos
       MENU LABEL Freedos (con memtest)
       kernel disks/memdisk
       append initrd=disks/freedos.img floppy keeppxe
    LABEL anterior
       MENU LABEL Volver
       MENU EXIT
MENU END

Veamos que significa cada cosa:

  • kernel sysrcd-clonezilla/rescue32: kernel usado en el arranque. El fichero rescue32 se saca de la ISO de SystemRescuecd-Clonezilla bajada antes y se coloca en /var/lib/tftpboot/sysrcd-clonezilla/
  • append: aquí pondremos los parámetros a pasar al kernel durante el arranque para la configuración inicial del entorno.
  • initrd=sysrcd-clonezilla/initram.igz                 : initram para el arranque. Se obtiene y se coloca igual que el kernel.
  • setkmap=es                                                   : teclado en español.
  • netboot=nbd://<ip-del-servidor-nbd>:2000    : decimos al kernel que el sistema raiz se carga por nbd desde el servidor que hemos montado antes.
  • rootpass=2tazasdelinux                                 : password de root que tendrá nuestro sistema SystemRescueCD
  • keeppxe                                                         : este parámetro es útil ponerlo siempre para evitar bloqueos en el arranque PXE con determinadas tarjetas de red.

Tras el append podemos poner además multitud de parámetros a pasar durante el arranque para configurar aún mas detalladamente nuestro sistema de rescate: configuración de red, ejecución automática de scripts en el arranque y mucho mas. Aquí hay una lista con todo, en el apartado 3.

Y ya está, nuestro menú quedará ahora así:

├── Arranque desde disco duro
└── Herramientas Sysadmin (protegido el acceso con contraseña)
      ├── SystemRescueCD + Clonezilla + Scripts (NBD)
      ├── Freedos (con memtest)
      └── Volver

Si arrancamos un cliente por PXE y seleccionamos la nueva opción tendremos al poco rato arrancado un sistema completo con SystemRescueCD y Clonezilla, sin necesidad de usar CD y sin tocar el disco duro de la máquina. 

Y ya está. En la próxima entrega veremos cómo conectar remotamente con la imagen arrancada y lanzar desde allí cualquier comando del SystemRescueCD o usar Clonezilla para restaurar el disco.

 

No hay comentarios:

Publicar un comentario