CÓMO CLONAR UN ORDENADOR DE FORMA AUTOMÁTICA USANDO UN DVD. INFORME TÉCNICO. Basado en la experiencia al clonar los portátiles de préstamo de Biblioteca En resumen, estos son los pasos a dar: 1. Instalar, preparar y configurar perfectamente un ordenador. Probarlo hasta la náusea. Este es qui­ zá el paso más importante, y sin duda el más largo y más tedioso. 2. Tener un medio de almacenamiento como zona de trabajo. Este medio de almacenamiento debe ser distinto de donde esté el sistema del ordenador prototipo, como una partición vacía de su dis­ co duro, un disco duro externo, etc. 3. En ese medio de almacenamiento, volcar en un fichero el MBR del disco duro del prototipo. 4. En dicho medio, volcar en un fichero la tabla de particiones. 5. En el mismo medio, poner los archivos con las imágenes de las particiones del disco duro del prototipo. Estas imágenes se pueden hacer con el programa partimage que se incluye en el CD de rescate y recuperación System Rescue CD o abreviadamente sysresccd. 6. Personalizar sysresccd: se vuelca al medio de almacenamiento de los puntos anteriores, se le aña­ den a la raíz los ficheros con el MBR, la tabla de particiones y las imágenes de ellas con los da­ tos, y se crea un shell script llamado autorun que se encargue de formatear y restaurar los datos. 7. Se recrea el CD o DVD (en caso de que no quepa en un CD) con el sysresccd personalizado y con los archivos antes mencionados, y se tuesta. 8. Se prueba en otro ordenador, porque lo más probable es que nos hayamos equivocado en alguna cosa y nos carguemos el prototipo. Tras la prueba, se vuelve a los pasos anteriores hasta la total satisfacción. Es normal que haya que repetir el proceso unas cuantas veces, porque errare humanum est. A continuación se detalla cada punto tomando siempre como ejemplo mi trabajo con los portátiles de préstamo de Biblioteca. 1 Instalación y configuración del sistema prototipo Como ya queda dicho, este es quizá el paso más importante; empero, aquí no voy a tratarlo ya que depende de lo que se quiera instalar. No creo que haya ningún inconveniente en que el sistema sea cualquier GNU/Linux o cualquier Windows o incluso ambos en particiones separadas, siempre que las imágenes de las particiones quepan en un DVD. Sí debe quedar muy claro que hay que configu­ rar el sistema y probarlo perfectamente, ya que cualquier cambio, por mínimo que sea, hará que haya que perder dos horas rehaciendo casi todo el proceso posterior. En mi caso, instalé una distribución de GNU/Linux en la primera partición primaria del único disco duro y una partición de intercambio (swap) en la segunda partición primaria. Como gestor de arran­ que, instalé GRUB en el MBR (master boot record, el primer sector del disco). 1 2 Elección del área de trabajo Se necesita una zona de disco duro con bastante sitio para trabajar, es decir para poner la imagen de la partición (o las imágenes si tenemos, por ejemplo, MS Windows y GNU/Linux), la imagen ISO del DVD, etc. En mi caso, creé en el mismo disco duro una tercera partición primaria, formateada con ext3. Otra buena opción si nuestro disco no tiene sitio es un disco duro portátil USB, o un disco montado por red mediante NFS o SMB. 3 Creación de una copia del MBR Aunque partimage puede copiar el MBR, lo más fácil y seguro es usar el viejo método con dd. Aunque este y el siguiente punto se pueden hacer desde la instalación de GNU/Linux que ya tene­ mos, podemos ya arrancar el ordenador con el CD de System Rescue CD (o sysresccd de ahora en adelante). mount /dev/hda3 /mnt/custom cd /mnt/custom dd if=/dev/hda of=backup­hda.mbr count=1 bs=512 Esto copia en el fichero backup­hda.mbr un bloque de tamaño quinientos doce bytes del disco /dev/hda. O sea, el primer sector, que es el ocupado por el MBR. 4 Creación de una copia de la tabla de particiones Aquí empleamos uno de los fdisk existentes, y que viene incluido en sysresccd: sfdisk. Estamos en el mismo directorio de antes. sfdisk ­­dump /dev/hda > tp­hda Esto vuelca en el fichero tp­hda la tabla de particiones del disco /dev/hda en un formato tal que el propio sfdisk podrá leer posteriormente para establecer la misma tabla de particiones en otro disco igual. 5 Creación de la imagen de la partición a clonar La partición a clonar, que en nuestro ejemplo es /dev/hda1, no debe estar montada, así que este paso hay que hacerlo desde sysresccd. Llamamos al programa partimage, que tiene una interfaz semi­ gráfica, alfanumérica. En la primera pantalla seleccionamos la partición a clonar (Partition to save/restore). El sistema Linux (Gentoo) de sysresccd nos la presenta como ide/host0/bus0/target0/lun0/part1, que corresponde a /dev/hda1. Como archivo imagen a crear (Image file to create/use) escribimos /mnt/custom/ppb (el nombre ppb es arbitrario, por supuesto, aquí hace referencia a Portátil de Préstamo de Biblioteca). El programa partimage le añadirá como extensión .000, ya que si no cupiera entero lo dividiría y lo nombraría dándole números consecutivos. Acción a realizar (Action to be done): marcaremos evidentemente la primera, guardar partición en 2 un nuevo archivo de imagen (Save partition into a new image file). Pulsamos F5 para pasar a la segunda pantalla, titulada save partition to image file (guardar partición en archivo de imagen). El nivel de compresión (compression level) tiene que ser uno que permita meter en un CD o DVD la imagen más el propio software de sysresccd. En mi caso la partición tenía ocupada unos 5 GB, con lo que tenía que usar compresión. Escogí Gzip, ya que con ella la imagen ocupaba 2 GB, que cabe en un DVD, y no es tan lenta como Bzip2. En opciones (Options) escogí la comprobación de la partición (Check partition before saving), lento pero seguro, e introducir descripción (Enter description). En el modo de división de la imagen (Image split mode) escogí la división automática cuando no queda espacio (Automatic split (when no space left)), y, por último, en qué hacer en caso de termi­ nación con éxito (If finished successfully) escogí esperar (Wait), para seguir trabajando. De nuevo se pulsa ahora F5 para la tercera pantalla, donde simplemente se escribe una descripción y se pulsa OK. Ahora se deja que el programa haga su trabajo, lo cual tardará bastante, pero sólo hay que hacer esto una vez (a menos que haya que modificar el sistema instalado, por eso es tan importante verificarlo exhaustivamente). Al final tendremos el archivo con la imagen en /mnt/custom/ppb.000. 6 Personalización de sysresccd Seguimos con el sistema arrancado desde sysresccd y con la partición de trabajo montada, se re­ cuerda que en nuestro caso era /dev/hda3 y está montada en /mnt/custom. Este nombre no es arbitra­ rio, tiene que llamarse así el punto de montaje. Lo primero es extraer el contenido del CD de sysresccd, que evidentemente tenemos montado. sysresccd­custom extract Si no hay error, que no debe, todos los ficheros del CD se habrán copiado al directorio llamado /mnt/custom/customcd/files. Ahora podríamos modificar los ficheros que quisiéramos para persona­ lizar nuestra copia de sysresccd, pero para lo que nos interesa no merece la pena. Lo siguiente es crear la imagen cloop. Ésta es una imagen de CD con los ficheros comprimidos que hace que se pueda arrancar del CD y trabajar con él en modo vivo. Es la técnica que se emplea en este tipo de distribuciones, como Linex, Guadalinex, Knoppix, Guadalinex_uca, etc. En definitiva, la orden que hay que dar es: sysresccd­custom cloop 270 20000 donde 270 es el número de megabytes que usará el sistema de ficheros, y 20 000 el número máximo de ficheros admitidos en él. Estos números son suficientes para nuestro propósito: la imagen de la partición, de unos 2 GB, irá fuera de este sistema de ficheros cloop. Ahora es cuando añadimos los ficheros creados en los primeros pasos: la copia del MBR, la de la tabla de particiones y la imagen de la partición del sistema. Para que estén fuera del ya creado cloop y en el directorio raíz del DVD hay que copiarlos o moverlos a /mnt/custom/customcd/isoroot, así: mv backup­hda.mbr tp­hda ppb.000 /mnt/custom/customcd/isoroot El paso más importante viene ahora: crear un script o guion que se ejecute automáticamente en el 3 arranque y se encargue de la automatización del proceso de restauración. Este guion debe llamarse obligatoriamente autorun, y lo pondremos en el mismo sitio de antes. Una vez creado con nuestro editor favorito, le daremos permiso de ejecución, por ejemplo así: chmod 755 /mnt/custom/customcd/isoroot/autorun El contenido del fichero se presenta en el apéndice de este documento. Aunque para lo que sirve el DVD que vamos a hacer no hará mucha falta ya que supuestamente no tendremos que escribir nada, tampoco cuesta hacer que se cargue automáticamente una distribución de teclado, así evitaremos la pregunta correspondiente en el arranque del DVD. Así pues, para car­ gar la del español: sysresccd­custom setkmap es 7 Creación de la imagen y del DVD El último paso antes de rearrancar es crear por fin la imagen ISO del CD o DVD: sysresccd­custom isogen RESPPB El parámetro (obligatorio) RESPPB es el nombre del volumen, que por supuesto es arbitrario y debe ser descriptivo; en este caso significa REStauración de un Portátil de Préstamo de Biblioteca. Este paso, como se comprende, tarda lo suyo. Al acabar, sólo nos resta quemar un DVD grabable con la imagen. Al principio, mejor un regrabable por si acaso. Pero a menos que tuviéramos dos unidades, una lectora y otra grabadora, tenemos que sacar primero el CD de sysresccd, pero no podemos porque está montado, así que hay que rearran­ car. Antes, por conveniencia y seguridad, conviene desmontar el disco de trabajo y sincronizar el disco con la memoria del búfer caché. cd ; umount /mnt/custom ; sync Ya es momento de rearrancar, lo que podemos hacer con la orden reboot o simplemente pulsando Ctrl­Alt­Del. El tueste de la imagen ISO se puede hacer ya desde el sistema operativo original, sea GNU/Linux con el k3b por ejemplo, o Windows con el famoso Nero u otro programa similar. También desde sysresccd, pero al arrancar ahora habría que darle la opción de copiar todo el CD a memoria (opción Cache CD del menú de sysresccd), lo que nos permitirá desmontar y quitar el CD (orden eject) para dejar libre la grabadora. Por no dejar este documento a medias, se pone a continuación cómo se daría la orden para crear el DVD desde la línea de órdenes. Por supuesto, antes hay que volver a montar el disco de trabajo, que es donde tenemos la imagen. En el ejemplo se supone que /dev/hdc es el dispositivo de la grabadora. mount /dev/hda3 /mnt/custom growisofs ­­dvd­compat ­Z /dev/hdc=/mnt/custom/customcd/isofile/sysresccd­new.iso 4 8 La prueba final No hay mucho que decir aquí. Quitar el DVD del ordenador origen y probarlo en el destino. Si todo funciona bien, éste quedará como el original. Por supuesto es importante que todos los orde­ nadores sean iguales. Es posible de todas formas que haya que hacer algún retoque final, posible­ mente relacionado con la configuración de red, ya que, como se sabe, cada interfaz de red tiene un número MAC o hardware único. Por ejemplo, en SUSE Linux la configuración de la interfaz de red Ethernet se guarda en un fichero que puede llamarse /etc/sysconfig/nework/ifcfg­eth­id­XX:XX:XX:XX:XX:XX siendo XX... la dirección MAC de la tarjeta. Al clonarse, evidentemente se clona también este fiche­ ro, con lo que el ordenador destino no tiene el fichero con el nombre correcto con su MAC, sino con la del prototipo. Esto puede arreglarse eliminando la tarjeta y volviéndola a crear, o simplemente renombrando el fichero. Otra cosa que puede tener que cambiarse es el nombre del ordenador, si no se obtiene por DHCP. Apéndice: el shell­script “autorun” #!/bin/bash # autorun v1.0 (octubre­2005) # Este shell­script se ejecutará automáticamente al arrancar desde # este DVD. Restaurará el sistema a su estado original. # (c)2005 Gerardo Aburruzaga García. Oficina del Software Libre de la # Universidad de Cádiz. Área de Informática de la Dirección General de # Tecnologías de la Información y Comunicaciones # Diseñado para los portátiles de préstamo de Biblioteca. # Distribuido bajo los términos de la Licencia General Pblica GNU # (GPL) versión 2 ó posterior. # Configuración: DIR_BASE=/mnt/cdrom MBR=$DIR_BASE/backup­hda.mbr TABLA_PARTICIONES=$DIR_BASE/pt­hda IMAGEN=$DIR_BASE/ppb.000 HD=/dev/hda DVD=/dev/hdc PART_LNX=${HD}1 PART_SWP=${HD}2 # 0) Preparación. Intentamos acelerar el acceso a disco y DVD # 5 hdparm ­c1 ­d1 $HD $DVD # 1) Restauración del MBR. Se puede hacer mejor con dd que con partimage. # Previamente se hizo: dd if=/dev/hda of=backup­hda.mbr count=1 bs=512 if [ ­f $MBR ]; then dd if=$MBR of=$HD else echo "ERROR: no existe el fichero con el MBR $MBR" echo "No se hace nada más, no se restaura nada." exit 1 fi # 2) Restauración de la tabla de particiones # Previamente se hizo: sfdisk ­­dump /dev/hda > pt­hda if [ ­f $TABLA_PARTICIONES ]; then sfdisk ­­force $HD < $TABLA_PARTICIONES else echo ­n "ERROR: no existe el fichero con la tabla de particiones" echo "$TABLA_PARTICIONES" echo "No se va a restaurar el sistema, lo siento." exit 2 fi sync # 3) Activación de swap mkswap $PART_SWP sync # 4) Restauración de la partición de GNU/Linux # Al acabar, rearranca el ordenador. # Previamente se creó la imagen con partimage (interactivamente). if [ ­f $IMAGEN ]; then partimage ­­batch ­­finish=2 restore $PART_LNX $IMAGEN else echo "No existe el archivo de imagen $IMAGEN" echo "No se puede restaurar GNU/Linux." exit 3 fi # Aquí no se debe llegar ya. exit 0 6 Referencias La más importante de las referencias en que se basa este documento es el manual de sysresccd, in­ cluido en el propio CD. El sitio de este magnífico sistema de rescate es http://www.sysresccd.org . La página de partimage es http://www.partimage.org . En la revista LinuX FREE Magazine N.º 8 (año 2, 4.º trimestre), pp. 75 y ss., viene un artículo de Antonio Sánchez León titulado Copiar particiones o discos duros enteros que me ha sido de mucha ayuda. ©2005 Gerardo Aburruzaga García <gerardo.aburruzaga(at)uca.es> Oficina del Software Libre de la Universidad de Cádiz: http://softwarelibre.uca.es Área de Informática de la Dirección General de Tecnologías de la Información y Comunicaciones Servicio de Equipamiento y Operación Este documento puede distribuirse bajo los términos de la GNU Free Documentation License. Por descontado, ni el au­ tor ni la Universidad de Cádiz se hacen responsables de que por seguir las indicaciones de este documento, alguien pier­ da datos o estropee su ordenador. Además, este documento puede no estar libre de fallos; si descubren alguno, por favor comuníquenselo al autor. 7