martes, 13 de marzo de 2012


MONTAJE DE UN SERVIDOR PXE PARA CLONEZILLA.

Introducción 

Como administradores de una red de ordenadores donde tenemos varios tipos de PC y varios S.O. Necesitamos tener un sistema donde podamos con el realizar copias de seguridad y restaurar otros equipos. Para ello lo vamos a realizar mediante la red que tenemos montado.
1.- Necesitar un ordenador que nos haga de servidor donde nos va a dar servicio para guardar las imágenes de los SO , este ordenador puede ser un servidor o puede ser uno que tengamos para realizar copias de seguridad, como va a almacenar varios imágenes seria conveniente tener bastante capacidad (disco duro de gran tamaño).
2.- DHCP para poder dar direcciones ip, este podemos utilizar el servidor nfs o tener otro nuestro, Ojo con este ultimo porque tendríamos que aislar dicha red por donde enviar imganes para que no haya conflictos de dhcp o ip
3.- Servicio de PXE (DHCP + FTP )
Podemos descargarnos también el documento en pdf Clonezilla y pxe


Instalación

Directorios que necesitamos

Necesitamos un ordenador no vamos a utilizar los servidores que tenemos (NFS y LDAP), este pude ser cualquiera que tenga una distribución basa en debían y que tenga una IP fija.
Vamos a utilizar la carpetas siguientes.
En la raiz, la carpeta /tftpboot. Dentro, las carpetas:

/tftpboot/pxelinux.cfg → configuración del arranque pxe

/tftpboot/clonezilla ---> imagen de clonezilla para montar en RAM (solo se usará si el equipo tiene 512Mb o mas, es mas lenta en carga, ya que la imagen completa se envia por red, pero luego funciona mejor)

/tftpboot/clonezillanfs ---> imagen de clonezilla para montar en por NFS (para equipos con poca RAM o por si queremos cargar mas rápido) yo es el que utilizo por que me va mejor que el otro, y asi no tengo que compilar nada cada vez que modifico algo del SO que le envío a los equipos.
Dar permisos de lectura y ejecución a todas las carpetas para todos (755).
chmod -R 755 /tftpboot
(Sin esto no arrancara bien el servidor tftpd)

Programas que tenemos que instalar

Servidor FTP

Necesitamos un servidor de FTP pero tiene que ser para el arranque por red por lo que tiene que ser anónimo y posible para el arranque por red el que utilizaremos sera el tftpd-hpa

apt-get -f install tftpd-hpa

El fichero de configuración esta en /etc/default/tftpd-hpa

#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -s /tftpboot"


Reiniciamos el servicio para tenerlo operativo.

/etc/init.d/tftpd-hpa restart

Servidor NFS

Para almacenar las imagens la podemos hacer de muchas formar, si esta en Local (no es nuestro caso), por NFS, SSH, Samba, …. yo voy a utilizar el NFS por ser de los más sencillos y por utilizarlo para enviar la imagen a los PC. Para esto necesitamos tener el servicio activo y un directorio compartido
Instalamos el servicio de nfs-common, nfs-kernel-server sino los tenemos.
apt-get -f install nfs-common, nfs-kernel-server

La configuración la hacemos mediante el fichero de /etc/exports

/tftpboot/clonezillanfs *(ro,sync) → para el sistema de clonezilla
/home/partimag *(rw,sync,no_subtree_check) → donde están las imagenes
Reiniciar servicio

/etc/init.d/nfs-kernel-server

Para confirmar que el proceso esta corriendo corremos:
# ps aux | grep tftpd
root 9446 0.0 0.0 2200 308 ? Ss 15:33 0:00 /usr/sbin/in.tftpd -v -l -s /tftpboot

Como vemos, el demonio in.tftpd esta corriendo con las opciones que especificamos en el archivo:
/etc/default/tfptd-hpa

Y para confirmar que el demonio tfptd abrio el puerto para conexiones, es decir, esta en modo listening, usamos netstat así:
 # netstat -plun | grep tftp
 udp  0  0  0.0.0.0:69 0.0.0.0:*  3646/in.tftpd
 udp6 0 0 :::69  :::*  3646/in.tftpd
Con esto ya tenemos el servicio funcionado ahora necesitamos el SO que le vamos a enviar a los PC, este lo vamos a coger del clonezilla, para esto necesitamos el CD, ISO o ZIP que nos descargaremos de la direccion de http://clonezilla.org/

SO que enviamos a los PC:

Necesitamos copiar del clonezilla
En /tftpboot:
pxelinux.0
chain.c32
menu.c32
vesamenu.c32

Estos ficheros están se pueden obtener desde /usr/lib/syslinux. Si no están, instalar el paquete syslinux-common 

En /tftpboot/pxelinux.cfg (directorio)

Crear un fichero llamado “default” con el siguiente contenido (hay que cambiar en el fichero la IP para que coincida con la de tu equipo servidor de PXE, la mia es la 172.23.52.7, sustitutuyela por la tuya): Este fichero lo podemos copiar del clonezilla esta en el directorio syslinux y el archivo syslinux.cfg

# Created by generate-pxe-menu! Do NOT edit unless you know what you are doing!
# Keep those comment "MENU DEFAULT" and "MENU HIDE"! Do NOT remove them.
# Note!!! If "serial" directive exists, it must be the first directive
default vesamenu.c32
timeout 70
prompt 0
noescape 1
MENU width 80
#MENU height 20
#filas en el menu
MENU ROWS 8
MENU TABMSGROW 8
#la distancia de arriba
MENU VSHIFT 6
MENU MARGIN 5
MENU HELPMSGROW 14
MENU TIMEOUT_MSGROW 24
MENU TIMEOUTROW 24
MENU TABMSGROW 24
MENU CMDLINEROW 24
#MENU HSHIFT 40
MENU BACKGROUND luischamizo.png
# Set the color for unselected menu item and timout message
MENU COLOR UNSEL 8;30;41 #c0000090 #00000000
MENU COLOR TIMEOUT_MSG 8;30;41 #c0000090 #00000000
# MENU COLOR TIMEOUT_MSG 8;30;41 #c0000090 #00000000
MENU COLOR TIMEOUT 8;30;41 #c0000090 #00000000
MENU COLOR HELP 8;30;41 #c0000090 #00000000


# MENU MASTER PASSWD


say **********************************************
say Bienvenidos al sistema de Arranque
say IES Arroyo Harnina
say http://maguylinex.blogspot.com
say **********************************************


# Allow client to edit boot parameters
ALLOWOPTIONS 0


# simple menu title
MENU TITLE Sistema de Clonacion del IES Arroyo Harnina por Clonezilla


label Clonezilla
# MENU DEFAULT
# MENU HIDE
MENU LABEL Clonezilla
# # MENU PASSWD
kernel clonezilla/vmlinuz
append initrd=clonezilla/initrd.img boot=live union=aufs noswap noprompt vga=788 ocs_live_keymap="/usr/share/keymaps/i386/qwerty/es.kmap.gz" ocs_lang="es_ES.UTF-8" fetch=tftp://172.23.52.7/clonezilla/filesystem.squashfs keeppxe
TEXT HELP
Arranque Clonezilla, para ordenadores con mucha memoria ram
ENDTEXT


label Clonezilla NFS
MENU DEFAULT
# MENU HIDE
MENU LABEL Clonezilla NFS
# # MENU PASSWD
kernel clonezillanfs/live/vmlinuz
#El append en una linea empieza aqui
append initrd=clonezillanfs/live/initrd.img boot=live union=aufs noswap vga=788 config ocs_live_keymap="/usr/share/keymaps/i386/qwerty/es.kmap.gz" netboot=nfs nfsroot=172.23.52.7:/tftpboot/clonezillanfs ocs_lang="es_ES.UTF-8"
#Termina aqui
TEXT HELP
Arranque Clonezilla por NFS para equipos con poca memoria RAM (Recomendado)
ENDTEXT


label Restauracion IBM Ciclo
#   MENU DEFAULT
#  MENU HIDE
  MENU LABEL Restauracion IBM Ciclo
#  # MENU PASSWD
  kernel clonezillanfs/live/vmlinuz
#El append en una sola linea 
#Empieza
 append initrd=clonezillanfs/live/initrd.img boot=live union=aufs noswap config  vga=788 nolocales edd=on nomodeset ocs_live_keymap="/usr/share/keymaps/i386/qwerty/es.kmap.gz"
netboot=nfs nfsroot=172.23.52.7:/tftpboot/clonezillanfs ocs_lang="es_ES.UTF-8" noprompt ocs_prerun="dhclient -v eth0" ocs_prerun1="sleep 2"  
  ocs_prerun3="mount -t nfs 172.23.52.7:/home/partimag /home/partimag"
  ocs_prerun4="sleep 2" ocs_live_run="ocs-sr -g auto -e1 auto -e2 -c -r -j2 -p true restoredisk 2011-10-19-ibm-win-ciclo sda" ip=frommedia nosplash
#termina
  TEXT HELP
  Restaura el ordenador IBM con la Imagen preparada para el Ciclo
  ENDTEXT


label local
kernel chain.c32
append hd0
TEXT HELP
Arranque desde el disco local
ENDTEXT


# Note! *.bin is specially purpose for syslinux,
# Do NOT use memtest86.bin, use memtest86 instead of memtest86.bin
label memtest
# MENU DEFAULT
# MENU HIDE
MENU LABEL Memory test using Memtest86+
# MENU PASSWD
kernel clonexilla/memtest86
TEXT HELP
Run memory test using Memtest86+ 4.00
ENDTEXT


# ref: http://syslinux.zytor.com/memdisk.php
label fdos
# MENU DEFAULT
# MENU HIDE
MENU LABEL FreeDOS
# MENU PASSWD
kernel clonezilla/memdisk
append initrd=clonezilla/fdos1440_drbl.img
TEXT HELP
Ejecuta el FreeDos
ENDTEXT


MENU END

En /tftpboot/clonezilla Sacados del CD de Clonezilla (cambiar el nombre a initrd1.img y vmlinuz1 si es necesario).
initrd.img
vmlinuz
filesystem.squashfs
parameters.txt

En /tftpboot/clonezillanfs Copiado TODO el contenido del CD de Clonezilla (carpetas isolinux, live, y cualquier otra que hubiese) nos fijamos que en el fichero isolinux.cfg hemos añadido la carpeta de clonezillanfs delante del kernal y del initrd
De esta forma si queremos actualizar el contenido del clonezilla solo tendremos que copiar de nuevo toda las carpetas en nuestro directorio de clonezillanfs, siempre y cuando en el pxeconfig.cfg/defuaults tengamos puesto bien el enlaze como comento arriba.

Ahora nos queda hacer que esto este integrado en nuestra red y que cuando un equipo se encienda por red y pida una ip también le enviemos la imagen que tenemos preparada con el Clonezilla, esto se hace enlazando en la configuración del dhcp (se hace desde phpldapadmin en el ldap) con el clonezilla que tenemos en este equipo.
Hay dos alternativas:( en la red del Centro o una que nosotros montamos con unservidor de dhcp)

  1. Montar un servidor dhcp diferente en otro equipo, solo para arranques por PXE.
      Ventaja: no tocamos la configuración del servidor del centro
      Inconveniente: si coexisten dos servidores dhcp a la vez en la misma red habrá problemas, solo uno puede estar arrancado a la vez, lo cual es problemático.
  2. Modificar la configuración del dhcp del centro para que mande los datos necesarios para arrancar por PXE.
      Ventaja: solo hay un servidor dhcp en el centro, que sirve tanto IP como parametros para arrancar por PXE.
      Inconveniente: hay que tocar la configuración del servidor DHCP en el arbol ldap.

Yo he elegido la segunda opción. El cambio en ldap es mínimo y no interfiere con el funcionamiento normal del centro. Hay que abrir phpldapadmin (haz una copia de seguridad de ldap antes por si acaso) y navegar hasta el nodo: DHCPConfig->Internal->group1 y añadir este atributo:

dhcpStatements
next-server 172.23.52.7
filename "pxelinux.0"

DHCPConfig->Internal->group1 es la rama de donde cuelgan los equipos que quiero arrancar por PXE. Si tus equipos están en otra rama, tendrás definir el atributo en dicha rama.
next-server tenrá la IP del equipo donde hemos montado todo (en mi caso, el tercer servidor del centro)

Y ya está. Los equipos del group1 que arranquen por pxe mostrarán un menú en pantalla con 3 opciones: cargar desde disco duro, clonezilla y clonezilla-nfs, seleccionas la que quieras y arrancas el clonezilla. Te olvidas de CD y de pendrives para siempre.

Otra cosa: los equipos del group1 que no arranquen por pxe no notarán nada. Piden una IP y el servidor se la dará sin problemas, ignorando el dhcpStatements que hemos añadido.

Queda el phpldapadmin de la siguiente forma:


Ejemplo de como clonar desde el menú de arranque

Para clonar desde el menú de arranque sin que nosotros tengamos que tocar nada en el ordenador que queremos clonar lo que tendremos que hacer es añadir una nueva entrada en el menú de arranque seria en el fichero /tftpboot/pxeconfig.cfg/defualt la entrada seria parecida a esta.
Si queremos clonar equipos que están con WindowsXP y son del ciclo, yo los he llamado IBM Ciclo, porque son equipos de la marca IBM y son para el Ciclo formativo y tiene instalado el Windows XP.

Label Restauracion IBM Ciclo
#   MENU DEFAULT
#  MENU HIDE
  MENU LABEL Restauracion IBM Ciclo
#  # MENU PASSWD
  kernel clonezillanfs/live/vmlinuz
#El append en una sola linea 
#Empieza
 append initrd=clonezillanfs/live/initrd.img boot=live union=aufs noswap config  vga=788 nolocales edd=on nomodeset ocs_live_keymap="/usr/share/keymaps/i386/qwerty/es.kmap.gz"
netboot=nfs nfsroot=172.23.52.7:/tftpboot/clonezillanfs ocs_lang="es_ES.UTF-8" noprompt ocs_prerun="dhclient -v eth0" ocs_prerun1="sleep 2"  
  ocs_prerun3="mount -t nfs 172.23.52.7:/home/partimag /home/partimag"
  ocs_prerun4="sleep 2" ocs_live_run="ocs-sr -g auto -e1 auto -e2 -c -r -j2 -p true restoredisk 2011-10-19-ibm-win-ciclo sda" ip=frommedia nosplash
#termina
  TEXT HELP
  Restaura el ordenador IBM con la Imagen preparada para el Ciclo
  ENDTEXT

Cuando queremos ejecutar un comando, se lo indicamos a clonezilla mediante el parámetro ocs_live_run, este es el parámetro que le debemos dar para la Salvar o Restaurar las imágenes, pero antes de este comando tenemos que preparar algunas cosas, como coger ip, montar el directorio donde están las imágenes. Para esto utilizaremos los comandos ocs_prerun que es el comando que se ejecuta antes de la script de ocs_live_run, como en cada ocs_prerun solo podemos ejecutar un comando si necesitamos ejecutar varias veces a cada uno le tenemos que dar un numero que es el orden de ejecución por ejemplo el ocs_prerun1, ocs_prerun2, y así todo los que necesitemos, entre un comando y otro hay veces que debemos esperar algún tiempo por lo tenemos que poner un ocs_prerunX=”sleep 2” que espere 2 segundos antes de ejecutar el siguiente comando.
Veamos un ejemplo, de como coger dirección IP y de como montar un directorio que esta compartido por nfs donde tenemos las imágenes, esto también podría ser por sshnfs, ssh , samba o como lo tengamos en montado, yo lo tengo montado ahora mismo por nfs, por lo que antes de clonar lo que voy a hacer es coger ip y montar el sistema de imágenes.
ocs_prerun="dhclient -v eth0" → Cojo ip si no esta en eth0 ponemos la interfaz
ocs_prerun1="sleep 2" → Espero 2 segundos para que termine bien el comando
ocs_prerun2="mount -t nfs 172.X.X.X:/home/partimag /home/partimag" → monto el directorio de la imagenes
ocs_prerun3="sleep 2” → espero 2 segundos antes de empezar con la Salvaguarda o Restauración.

Los parámetros que vamos a utilizar ahora para el ocs_live_run, vamos a utilizar el script que tiene el clonezilla para utilizar atravez de linea de comando que es el ocs-sr y los parametros son los siguientes en un ejemplo:
ocs_live_run="ocs-sr -g auto -e1 auto -e2 -c -r -j2 -p true restoredisk 2011-10-19-ibm-win-ciclo sda"

  • -g auto: Reinstala grub en el MBR del disco cliente.
  • -e1 auto: Automáticamente ajusta la geometría del sistema de ficheros de una partición con sistema de arranque NTFS, si existe.
  • -e2: Esta opción es para un cargador no-grub, por ejemplo, para el boot loader de windows. No tiene efecto si el cargador de arranque del disco de destino es grub.
  • -c: Sirve para que el cliente pida confirmación al usuario antes de clonar. Si no queremos que pida confirmación y clone directamente, omitimos esta opción.
  • -r: Intenta redimensionar el sistema de ficheros para adaptarlo a la partición.
  • -j2: Clona los datos ocultos entre el MBR y la primera partición.
  • -p true: Espera a que el usuario realice alguna acción una vez ha terminado el proceso de clonación.
  • Restoredisk [savedisk,restoreparts,saveparts]: Queremos restaurar o salvar disco o partición
  • NombreImagen: indica el nombre de la imagen
  • sda: indica a que disco duro.
Vemos una tabla con los parámetros
  • -g Automático (predeterminado)reinstalar GRUB en el sector de arranque del disco de destino(si apropiado).
  • -e1 Automático (predeterminado)Ajustar la geometría del sistema de archivos.
  • -e2 (por defecto) sfdisk utiliza CHS del disco duro.
  • -j2 (por defecto) Clonar datos ocultos entre el MBR y la primera partición.
  • -r (por defecto) Cambiar el tamaño del Sistema de archivos de la meta para ajustarse al tamaño de la partición.
  • -q1copia sector por sector.
  • -nogui Sólo en modo texto.
  • -m No clonar el gestor de arranque.
  • -rescue Continua leyendo después de los errores de lectura.
  • -irhr No borrar los registro de hardware de Linux udev después de la restauración.
  • -ius No actualizar los archivos relacionados con syslinuxdespués de la restauración.
  • -icds No comprobar el tamaño del disco de destino.
  • -fsck-src-part Chequea y repara el sistema de archivos fuente antes de la clonación.
  • -o fuerza de carga de los valores CHS en el disco
  • -batch Ejecuta la imagen en modo batch. Esto es peligroso.
  • -v Muestra información detallada en cuando la clonación
Vemos una tabla con los parámetros avanzados (extras)
  • (nada) (por defecto) El MBR se restaura a partir de la imagen.
  • -k: La tabla de partición no se restaura (el MBR de disco de destino existente se mantiene).
  • -k1: La tabla de particiones se recupera de la imagen. La partición (s) tamaño (s)será
    ajustarse proporcionalmente si el disco de destino es más grande que la original. Solamente utilice esta opción con el MBR, no con GPT.
  • -k2: Utiliza la línea de comandos para permitir introducir cualquier comando con el fin deestablecer el la tabla de particiones.
  • -c (default) Espera confirmación antes de clonar la imagen, si no se pone no pregunta.
  • -a No fuerza el DMA en el disco
  • -rm-win-swap-hib Excluye de MS-Windows el fichero de swap y de hibernación.
  • -ntfs-ok Salta el chequeo del ntfs
  • -gm Genera el MD5 de la imagen
  • -gs Genera elSHA1 de la imagen
Sobre el método de clonación
  • -q2 (default) partclone > partimage > dd
  • -q1 dd Solamente
  • -q ntfsclone > partimage > dd
  • (none) partimage > dd
  • -j0 fuerza al uso de dd
Cuando termina la clonacion
  • -p reboot: reinicia el equipo
  • -p poweroff : apaga el equipo
  • -p true (default)(espera a que el usuario lo indique)

No hay comentarios:

Publicar un comentario