17 mar 2012

Autorestaurar discos/particiones con clonezilla

En ocasiones, nos interesa tener entradas que nos permitan restaurar un disco o particiones con tan sólo seleccionar una opción en el menú de arranque de nuestro pendrive o disco duro usb.

En mi caso, tengo un pendrive con varias herramientas (clonezilla, drbl, system rescue cd, wifiway...) Como todas ellas usan isolinux/syslinux como sistema de arranque, he unido los ficheros de configuración en uno sólo con el fin de poder elegir cualquiera de estas herramientas en el inicio.

Además, he creado entradas que me permiten autorestaurar imágenes almacenadas en el pendrive.

Para explicar como preparar una entrada de autorestauración en el fichero de configuración syslinux.cfg, vamos a ver de forma detallada una de mis entradas:

label Restaurar workstation
  # MENU DEFAULT
  # MENU HIDE
  MENU LABEL Restaurar equipo Workstation general
  # MENU PASSWD
  kernel /live-hd/vmlinuz
  append initrd=/live-hd/initrd.img boot=live config live-media-path=/live-hd noswap nolocales edd=on nomodeset noprompt ocs_live_run="ocs-live-restore" ocs_live_extra_param="-g auto -e1 auto -e2 -c -r -j2 -p true restoredisk workstation-squeeze-ies-20120120 sda"  ocs_live_keymap="NONE" ocs_live_batch="yes" ocs_lang="es_ES.UTF-8" vga=788 ip=frommedia  nosplash
  TEXT HELP
  * Clonezilla live version: 1.2.9-19-i486. (C) 2003-2011, NCHC, Taiwan
  * Disclaimer: Clonezilla comes with ABSOLUTELY NO WARRANTY
  ENDTEXT
 

Con la opción MENU LABEL indicamos lo que se va a mostrar en el menú:

MENU LABEL Restaurar equipo Workstation general


Así, cuando arranque un equipo con mi pendrive usb, habrá una opción en el menú que diga "Restaurar equipo Workstation general".

Como podéis ver, por las opciones que he resaltado en color rojo, tengo el sistema de clonezilla dentro del directorio live-hd. Eso es tan sólo porque también tengo drbl en el mismo pendrive.

En cuanto a las opciones de autorestauración que he usado, son las siguientes:
  • ocs_live_run="ocs-live-restore"
  • ocs_live_extra_param=" -g auto -e1 auto -e2 -c -r -j2 -p true restoredisk workstation-squeeze-ies-20120120 sda"
  • ocs_live_batch="yes"

La opción por defecto de ocs_live_run es "ocs-live-general", que nos permite salvar o restaurar. Como queremos automatizar la restauración cambiamos esta opción por "ocs-live-restore".

La opción "ocs_live_extra_param" nos permite pasar parámetros al comando indicado en ocs_live_run. Estos parámetros le van a indicar a ocs-live-restore qué es lo que tiene que hacer:

ocs_live_extra_param=" -g auto -e1 auto -e2 -c -r -j2 -p true restoredisk workstation-squeeze-ies-20120120 sda"

Veamos de forma detallada para qué sirve cada opción:
  • -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. El parámetro -p tiene tres opciones:
    • -p true -> No hacer nada cuando termine la clonación.
    • -p reboot -> Reiniciar el cliente cuando termine la clonación.
    •  -p poweroff -> Apagar el cliente cuando termine la clonación.
Por último, la opción ocs_live_batch="yes" nos permite indicarle a clonezilla que haga la restauración en modo batch.

clonezilla y drbl en el mismo pendrive/disco duro

Habitualmente uso clonezilla para clonar equipos de forma individual en modo unicast y drbl cuando quiero clonar un conjunto de equipos a la vez en modo multicast.

Me es muy cómodo tener ambas herramientas en mi pendrive o en el disco duro externo. El problema que hay es que tanto clonezilla como drbl guardan sus archivos en el mismo directorio: live.

Para poder tener ambas herramientas en el mismo dispositivo usb, instalamos una de ellas, por ejemplo drbl, de forma normal. 

Luego, descargamos, clonezilla en formato zip y lo descomprimimos, por ejemplo en /mnt:

# unzip clonezilla-live-1.2.12-10-i486.zip -d /mnt


Al descomprimirlo tendremos todo estos archivos en el directorio /mnt:

/mnt
├── Clonezilla-Live-Version
├── COPYING
├── isolinux
│   ├── boot.cat
│   ├── chain.c32
│   ├── drblwp.png
│   ├── isolinux.bin
│   ├── isolinux.cfg
│   ├── memdisk
│   ├── menu.c32
│   ├── ocswp.png
│   └── vesamenu.c32
├── live
│   ├── eb.zli
│   ├── filesystem.packages
│   ├── filesystem.squashfs
│   ├── freedos.img
│   ├── gpxe.lkn
│   ├── initrd.img
│   ├── memtest
│   ├── parameters.txt
│   └── vmlinuz
├── syslinux
│   ├── chain.c32
│   ├── drblwp.png
│   ├── memdisk
│   ├── menu.c32
│   ├── ocswp.png
│   ├── syslinux.cfg
│   └── vesamenu.c32
└── utils
    ├── linux
    │   ├── makeboot.sh
    │   ├── syslinux
    │   └── VERSION.txt
    ├── mbr
    │   └── mbr.bin
    ├── README.txt
    └── win32
        ├── makeboot.bat
        ├── syslinux.exe
        └── VERSION.txt



Renombramos el directorio live:

# mv /mnt/live /mnt/live-hd


Una vez hecho ésto, copiamos el directorio live-hd a nuestro pendrive o disco duro usb. Imaginemos que tenemos montado nuestro disco usb en /media/usb. Para copiar el directorio live-hd al disco usb haríamos:

# cp /mnt/live-hd /media/usb

A continuación, añadimos el contenido del fichero /mnt/syslinux/syslinux.cfg al fichero syslinux.cfg de nuestro pendrive. Suponiendo que en el pendrive ya tenemos drbl y que el fichero syslinux de éste se encuentra montado en /media/usb/syslinux/syslinux.cfg, haríamos lo siguiente:

# cat /mnt/syslinux/syslinux.cfg >> /media/usb/syslinux/syslinux.cfg

Bien. Pues ahora, ya tendríamos en el pendrive un fichero syslinux.cfg con las entradas de drbl y clonezilla. 

Puesto que hemos cambiado la ubicación de los ficheros de clonezilla de live a live-hd, tan sólo nos quedaría modificar, en este fichero, las entradas de clonezilla para que se pueda iniciar. Veamos cómo modificar una, ya que el resto se harían del mismo modo. 

Tomemos la siguiente como ejemplo:

label Clonezilla live
  MENU DEFAULT
  # MENU HIDE
  MENU LABEL Clonezilla live (Default settings, VGA 800x600)
  # MENU PASSWD
  kernel /live/vmlinuz
  append initrd=/live/initrd.img boot=live     noswap nolocales edd=on nomodeset noprompt ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_keymap="" ocs_live_batch="no" ocs_lang="" vga=788 ip=frommedia  nosplash
  TEXT HELP
  * Clonezilla live version: 1.2.5-35-i686. (C) 2003-2010, NCHC, Taiwan
  * Disclaimer: Clonezilla comes with ABSOLUTE NO WARRANTY
  ENDTEXT


Cambiamos los valores resaltados en rojo por los que resalto a continuación en azul y añadimos el parámetro live-media-path=/live-hd, que he resaltado en color verde:

label Clonezilla live
  MENU DEFAULT
  # MENU HIDE
  MENU LABEL Clonezilla live (Default settings, VGA 800x600)
  # MENU PASSWD
  kernel /live-hd/vmlinuz
  append initrd=/live-hd/initrd.img boot=live  live-media-path=/live-hd   noswap nolocales edd=on nomodeset noprompt ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_keymap="" ocs_live_batch="no" ocs_lang="" vga=788 ip=frommedia  nosplash
  TEXT HELP
  * Clonezilla live version: 1.2.5-35-i686. (C) 2003-2010, NCHC, Taiwan
  * Disclaimer: Clonezilla comes with ABSOLUTE NO WARRANTY
  ENDTEXT