Crear/restaurar Windows/Linux desde el arranque


  • 0

    A continuación explico como hacer lo mismo que el Norton Ghost pero con unas cuantas mejoras. No es nada nuevo, simplemente he cogido de aquí y de allí y le he dado forma. Yo ya no sé vivir sin esto y he pensado que os podría ser útil.

    Introducción
    Cada vez que quiero restaurar una imagen con el ghost tengo que:

    • Reiniciar con el Hiren's CD metido.
    • Navegar por el menú hasta ejecutar el Ghost.
    • Navegar por el menú hasta seleccionar restaurar desde un fichero.
    • Seleccionar el disco y la partición destino.
    • Esperar y confirmar el reinicio.
    • Sacar el CD.

    Es un proceso sencillo, pero laborioso y repititivo. Vamos, que paso. Lo que yo quiero es:

    • Reiniciar
    • Seleccionar opción
    • Esperar unos minutos hasta que aparezca el escritorio de windows

    Y eso es lo que vamos a hacer…

    En principio cualquier LiveCD vale, pero mejor si ya tiene instalado el partimage. Mejor incluso si ese LiveCD es el System Rescue CD http://www.sysresccd.org/Main_Page , ya que en él participa el desarrollador de partimage :)

    Necesitamos también particionar el disco para alojar el contenido del CD, así como espacio para guardar la imagen.

    hda1 10GB Windows
    hda2 100GB datos
    hda3 1GB/5GB LiveCD/LiveDVD

    La partición de datos se puede formatear con ext2/3 y leerse desde Windows con Ext2 IFS (http://www.fs-driver.org/) sin que se aprecie que vaya más lento y pudiendo compartirla y todo lo demás. También se puede formatear con fat32, pero no con ntfs, al menos la última vez que lo probé la escritura era insufriblemente lenta. Otra opción es hacer la partion del LiveCD lo suficientemente grande como para alojar la imagen.

    Usaremos GRUB como gestor de arranque. Es, de lejos, el más potente, flexible y bonito que conozco.

    Antes de empezar tengo que aclarar que no voy a explicar como particionar un disco. Con el Partition Magic está tirado, prueba a bajar el Hiren’s BootCD. Desde linux se puede hacer con el cfdisk que se incluye en el sysresccd. En todos los comandos que siguen me basaré en el anterior esquema de particiones.

    Empezamos
    Tuesta el CD del sysresccd y reinicia el ordenador. Cuando aparezca “boot: ” pon “menu”. Selecciona la resolución, el idioma y arranca linux. Empieza la fiesta:

    root@sysresccd /root % mkfs.ext2 /dev/hda3
    root@sysresccd /root % mkdir /mnt/hda3
    root@sysresccd /root % mount /dev/hda3 /mnt/hda3
    root@sysresccd /root % mkdir /mnt/hda3/boot
    root@sysresccd /root % cp –a /boot/* /mnt/hda3/boot
    root@sysresccd /root % rm –rf /mnt/hda3/boot/grub/menu.lst
    

    Formateando con ext2 nos cubrimos las espaldas asegurándonos de que está incluido el soporte en el núcleo (tanto en esta distribución como en cualquier otra). Copiamos /boot, que contiene el núcleo así como el fichero de configuración del grub que dejaremos así:

    root@sysresccd /root % nano /mnt/hda3/boot/grub/menu.lst
    
    timeout	3
    default		0
    
    title		Windows XP
    rootnoverify	(hd0,0)
    makeactive
    chainloader	+1
    
    title		System Rescue CD
    root		(hd0,2)
    kernel		/boot/srcd/vmlinuz1 root=/dev/ram0 init=/linuxrc vga=788 setkmap=13 usbstick autoruns=0
    initrd		/boot/srcd/initrd1
    boot
    
    title		Guardar Windows
    root		(hd0,2)
    kernel		/boot/srcd/vmlinuz1 root=/dev/ram0 init=/linuxrc vga=788 setkmap=13 usbstick autoruns=0,1
    initrd		/boot/srcd/initrd1
    boot
    
    title		Recuperar Windows
    root		(hd0,2)
    kernel		/boot/srcd/vmlinuz1 root=/dev/ram0 init=/linuxrc vga=788 setkmap=13 usbstick autoruns=0,2
    initrd		/boot/srcd/initrd1
    boot
    

    Ya está configurado el arranque, ahora copiamos el núcleo y la imagen de inicio:

    root@sysresccd /root % mkdir /mnt/hda3/boot/srcd
    root@sysresccd /root % cp /mnt/cdrom/isolinux/vmlinuz1 /mnt/cdrom/isolinux/initrd1 /mnt/hda3/boot/srcd
    

    Ahora tenemos que modificar la imagen de inicio para que busque el sistema de ficheros comprimido (que copiaremos más adelante) en el disco duro además de en memorias usb. Es algo que casi ningún LiveCD tiene.

    root@sysresccd /root % cd /mnt/hda3/boot/srcd
    root@sysresccd /mnt/hda3/boot/srcd % mv initrd1 initrd1.gz
    root@sysresccd /mnt/hda3/boot/srcd % gunzip initrd1.gz
    root@sysresccd /mnt/hda3/boot/srcd % mkdir /mnt/iso
    root@sysresccd /mnt/hda3/boot/srcd % mount –o loop initrd1 /mnt/iso
    root@sysresccd /mnt/hda3/boot/srcd % nano /mnt/iso/linuxrc
    

    Y ahora con CTRL + W buscamos “sda” y comentamos/añadimos unos líneas. Sal con CTRL. + X, guarda los cambios con Y y confirma la sobreescritura del fichero. Debería quedar algo así:

    findusbmount()
    {
    #    for i in uba ubb ubc ubd ube ubf ubg ubh sda sdb sdc sdd sde sdf sdg sdh sdi sdj 
    #    do
    #        for j in 1 2 3 4 
    #        do
    #            devname="/newroot/dev/$i$j"
    #	    if mount -t vfat -r $devname /newroot/mnt/cdrom 2>/dev/null
    devname="/newroot/dev/hda3"
    if mount -t ext2 -r $devname /newroot/mnt/cdrom 2>/dev/null
                then
    		    if [ ! -e /newroot/mnt/cdrom/sysrcd.dat ]; then
    			    #echo -e "${HILITE}---- $devname is not a Live-USB Stick; skipping...${NORMAL}"
    			    umount /newroot/mnt/cdrom
    	            else
                                mounted=$devname
                                echo -e "${HILITE}---- USB medium found on $devname${NORMAL}"
                                return 1;
                        fi
                fi
    #         done
    #    done
        return 0;
    }
    
    root@sysresccd /mnt/hda3/boot/srcd % umount /mnt/iso
    root@sysresccd /mnt/hda3/boot/srcd % gzip initrd1
    root@sysresccd /mnt/hda3/boot/srcd % mv initrd1.gz initrd1
    

    Ahora volcamos el sistema de ficheros comprimido (el / de la distro) al disco duro:

    root@sysresccd /mnt/hda3/boot/srcd % cp /mnt/cdrom/sysrcd.dat /mnt/hda3
    

    Ya tenemos el sistema listo. Ahora tenemos que crear los scripts que se cargarán en el arranque y que realizarán automáticamente la creación / restauración de imágenes:

    root@sysresccd /mnt/hda3/boot/srcd % cd /mnt/cdrom
    root@sysresccd /mnt/cdrom % nano autorun0
    root@sysresccd /mnt/cdrom % nano autorun1
    root@sysresccd /mnt/cdrom % nano autorun2
    

    Que contienen, respectivamente:

    autorun0

    #!/bin/bash
    mount -o remount,rw /mnt/cdrom
    

    autorun1

    #!/bin/bash
    partimage -z1 -o -d -b -f2 save /dev/hda1 /mnt/cdrom/NOSEASUSTE-winxpsp2
    

    autorun2

    #!/bin/bash
    partimage -b -f2 restore /dev/hda1 /mnt/cdrom/NOSEASUSTE-winxpsp2.000
    

    Ahora todo está dónde y cómo tiene que estar. Podemos ejecutar pues, el único comando crítico, que sustituirá el gestor de arranque de windows por el GRUB:

    root@sysresccd /mnt/cdrom % grub-install –root-directory=/mnt/hda3 /dev/hda
    root@sysresccd /mnt/cdrom % reboot
    

    Se acabó
    Ahora ya sin el CD, cuando arrancas el ordenador debería aparecer un menú durante 3 segundos. La segunda opción es como si arrancaras desde el CD pero más rápido, claro. El resto se explican solas… Al que no le haya quedado claro aquí tiene una foto con el grub de Debian Sid que permite cargar una imagen de 640x480 y 14 colores :)



  • 1

    Uoo, un manual muy bien hecho, felicidades.

    Saludos!



  • 2

    ¡Gracias! Si a tí te ha valido ya puedo dormir tranquilo :)
    Esta guía es solo el primer paso para una convivencia con windows más agradable:

    • Facilitar el formateo
    • Entretener en la espera
      Para el segundo punto estoy planeando hacer un livecd basado en dreamlinux que configure el disco él solito con solo seleccionar una opción en el arranque del livecd, y mientras esperas puedes jugar al Quake. Si "formateas" desde internet tendrás que jugar en modo texto ;) Aquí tienes un par de capturas :)




Has perdido la conexión. Reconectando a Hardlimit.