[Como] Clonar instalación de linux a un usb o disco duro mas pequeño

Imagen de pandacriss
0 puntos

Clonar instalación de linux a un usb o disco duro mas pequeño

Muchas veces he estado en la situación
de necesitar reparar una pc, usar una cabina publica , un cibercafe,
meterse a una conexión wifi en casa de un amigo, querer impresionar
a mis amigos con las cosas que me permite hacer linux. así que
comense a llevar conmigo un liveusb instalado en la memoria SD de mi
celular. Me salvo de muchas. Pero no es suficiente. Así me puse a
buscar una manera de copiar mi ubuntu 10.04 a un usb stick. Y tener
todas las herramientas y actualizaciones que tengo ya en mi pc.
Hacer una instalación nueva en el usb llevaría mucho tiempo y
maltrataría el aparato, además me enterque con la idea.. . Termine
enredándome y haciendo experimentos con virtualbox, hasta me preste
un disco duro. Ahora que funciono pensé escribir mi primer tutorial
para que el próximo no tenga que resolver un problema ya
solucionado....

En mi caso tengo ubuntu 10.04 64 Bit
en una particion de 40 GB (con solo 10GB usados).

Mi carpeta /home esta en el mismo disco
raíz y solo tengo un usb de 16GB... entonces necesite usar todo lo
que aprendí en mis casi dos año desde que migre a linux (y me
olvide de los demás sistemas operativos jijiji , no los volví a
necesitar XD)

Estos trucos también funcionan muy
bien para clonar de un disco a otro mas pequeño y a maquinas
virtuales.

Espero que dejarme entender en mi primer tutorial.
No esta tan difícil... animen se a crear un usb-linux, es muy útil

Que necesitamos
Que herramientas conviene conocer
Preparar el sistema
Preparar un usb stick/memory/key/drive
Clonar....

Si mi usb es mas grande que la partición de mi pc
Des-fragmentar ( no, no me volví loco )
Si mi partición es mas grande que mi usb (aquí comienza lo
interesante)
Usando un disco duro adicional o una partición vacía
Usando discos y maquinas virtuales ( .vdi virtualbox)
Que hago si no tengo una VM instalada y no tengo
tiempo/espacio/paciencia para eso
Instalar GRUB2 (arranque)
Toques finales

Que necesitamos:
Super Grub2 Disk es un disco arrancable que permite arrancar
casi cualquier sistema operativo.
http://download2.berlios.de/supergrub/super_grub_disk_hybrid-1.98s1.iso
Como reinstalar GRUB2
http://www.guia-ubuntu.org/index.php?title=Recuperar_GRUB
LiveCD o LiveUSB ... es muy útil tener un .iso de ubuntu siempre a la mano
Un disco duro adicional ayuda mucho
Virtualbox...si no hay disco extra
Gparted y saber usarlo en un nivel básico
Obviamente un usb de 16GB o mas

Que herramientas conviene conocer
Aquí les quería explicar algunas cosas que nos serán útiles y no
esparcir mis explicaciones por todo el tutoríal.
Pueden leerlo luego cuando lo necesiten

Clonar particiones
Usaremos el comando DD para copiar las
particiones de un disco a otro, a una partición vacía, o a un
archivo imagen. Debemos usarlo en modo root
dd if=/dev/sdb1 of=/media/disco/imagen.raw
Para crear una archivo imagen. Muy útil.

dd if=/dev/sdb1 of=/dev/sda3
Para copiar de una particion a otra o de un disco a otro

dd if=/media/disco/imagen.raw of=/dev/sdc2
Para usar copiar una imagen a un disco real

Donde
if= partición de origen
of= partición destino o archivo destino

Recuerden
No montar la partición que copian
Deben estar seguros de los nombres de las particiones, tener cuidado
Esto no muestra el progreso, así que mucha paciencia
Al terminar nos mostrara unos resultados, como el numero de GB copiados

Compartir carpetas en Virtualbox
Esto nos permite usar los archivos y carpetas de los discos físicos desde una VM

Abrir virtual box manager , ir a settings, shared folders, al signo +
Recomiendo compartir /media/ y /home/usuario/ .
Así disponemos rápidamente de cualquier disco montado al sistema.
Es necesario instalar guest-aditions para usar esta función.

Ejecutar como root este comando en la máquina virtual

$ mkdir /home/usuario/medios
# mount.vboxsf medios /home/usuario/media

Listo tenemos los archivos a la mano

Usar una particion real con virtualbox

Virtualbox permite crear un fichero .vmdk especial que «apunta» a
una partición real de un disco duro.
De ese modo es posible arrancar un sistema operativo instalado
realmente en la máquina pero virtualizado dentro de otro S.O.
El comando para lograrlo es:
$ VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda -relative -register

Montas el archivo como cualquier disco virtual a la VM
Tal ves tengas que ejecutar la VM como root
Jamas monten le disco en la maquina virtual y real al mismo tiempo
Ni se les ocurra usar esto con su directorio raíz mientras linux esta corriendo

Convertir una partición real en un disco virtual .vdi

Primero creamos una imagen de la particion. Podemos usar el livecd
dd if=/dev/una-particion of=/media/un/disco/grande/imgen.raw

Luego creamos un disco virtual
VBoxManage convertfromraw /media/algo/imagen.raw /media/algo/imagen.vdi --format VDI

Tardara...
Este disco virtual no podrá ser manipulado desde la maquina virtual con Gparted.
No reconoce la tabla de particiones.
No nos sirve para este caso pero puede ser útil en algún momento

ANTES DE TOCAR NUESTO CASE MAINBOARD DISCO DURO ETC
Apaguen la pc,
Desenchufen todo
Espera a que se descargue o usen un cable para hacer tierra tocando
el case y la pared con los extremos
Toque la pared o el case con las palmas de las manos unos segundos
Ahora si pueden tocar adentro

Preparar el sistema
Antes de disponernos a copiar nuestro querido sistema pongamos en orden unas cosas
Borrar los kernel antiguos.
Conviene dejar dos por si el mas nuevo nos da problemas.
Borrar todo de /home/ todo lo que podamos
Borrar los thumbnails... están en /home/usuario/.thumbnails
Instalar algunas herramientas que nos salvaran mas de una vez
Gparted, macchanger, aircrack,testdisk, algún antivirus, nmap, tor.....

Preparar un usb stick/memory/key/drive
Yo solo tengo uno de 16Gb a la mano
Solo lo conectamos y abrimos Gparted
Creamos una nueva tabla de particiones
Dejamos los primeros 8 MB libres para que el GRUB (arranque) tenga espacio
Sigue el SWAP. como tengo poco espacio le daré 512MB.
Podemos olvidarlo pero podría ayudar en una pc con poca RAM
Ahora dejo el resto de espacio para el sistema ext2, luego marcarlo como boot (arrancable)
Click derecho sobre la particion, manage flags, marcar BOOT
Si tienes un usb mas grande puedes hacer una partición mas y formatearla en FTA32
para que aun puedas usar el usb para lo de siempre.

Si mi usb es mas grande que la partición de mi pc, el caso mas fácil.....
Conectamos el usb
Conectamos nuestro liveusb o liveCD
Encendemos la pc y presionamos F8.
Cuando salga el cuadro para elegir medio de arranque o BOOT le damos al liveusb/liveCD
Abrimos una terminal y tecleamos
palimpsest
Nos fijamos le nombre de la partición de nuestro linux, por ejemplo /dev/sda6,
y de nuestro usb, por ejemplo /dev/sdb2
Nos aseguramos que sdb2 sea mas grande que sda1
sudo su
dd if=/dev/sda1 of=/dev/sdb2 (leer explicación arriba)
Ir por un cafe
Instalar el GRUB2 en el usb

Si mi partición es mas grande que mi usb

Usando un disco duro adicional o una partición vacía
Como no queremos poner en riesgo la partición donde tenemos linux instalado usaremos
una partición vacía o en mi caso.. le pedimos prestado el disco a un amigo. Jajaja

Apagamos la pc y descargamos la estática
Conectamos el disco prestado, el liveusb o livecd, el usblinux (aun en blanco)
Encendemos, con F8 elegimos iniciar con el liveUSB/CD
Con Gparted creamos una partición unos GB mas grande que lo que copiaremos y del mismo
formato en el disco extra
Copiamos con el comando dd
dd if=/dev/sda1 of=/dev/sdc1 ......sdc seria el disco extra
Recuerda estar seguro de los nombres de las particiones
Ir a saquear el refrigerador
Cuando termine abrimos Gparted
File,devices,sdb
Ahora a nuestra copia la re-dimensionaremos, elegir un tamaño solo un poco mas grande al
mínimo posible. Puedes usar las flechitas. Ok Y aplicar
Si no nos permite reducirlo lo SUFICIENTE , es decir si solo tenemos X GB en el disco
pero Gparted no deja reducirlo mas de X+n GB y es muy grande para que entre en el
usb vamos a des-fragmentar (explicación abajo)
Ir por un helado
Si no nos da ningún error copiamos al usblinux (asegurarse que tenga espacio)
dd if=/dev/sdc1 of=/dev/sdb2 .............. sdb es el usblinux
Si quiere crear varios usblinux
dd if=/dev/sdc1 of=/media/discogrande/usblinuximage.raw
Si todo va bien podemos probar nuestro usblinux con el super grub disk....
Mejor desconectar todos los discos duros para estar seguros y no meter la pata
Instalar el GRUB2

Des-fragmentar unidad
En linux no necesitamos des-fragmentar salvo en unos pocos casos, como ahora
La razon es que al tener la carpeta /home y raiz en la misma partición tenemos el disco
lleno de archivos que nos parte del sistema. al borrarlos para poder copiar la
unidad en usb mas pequeño dejamos espacios vacíos, es decir puedes tener un archivo discontinuo,
“huérfanito” a mitad del disco duro. Cuando intentes re-dimensionarlo Gparted no te dejara ir mas
atrás del punto donde se encuentra este archivo. Solo podrías re-dimensionar, por ejemplo,
has unos 20 GB aunque solo tengas 10 GB en archivos. Solución, des-fragmentarlo.

Fíjate primero si Gparted te permite reducirlo lo suficiente, si es así salta esta parte.
Si no quieres correr riesgos copia primero al disco extra y luego des-fragmentamos
La verdad yo no lo necesite pues la mayoría de mis archivos los guardo en otro lado, pero solo lo
pude reducir hasta 13 GB aproximadamente (solo tenia 9.9 GB en archivos)

Podemos usar Shake-fs o defrag
Aqui hay algo mas de infromacion

http://triangulolinux.wordpress.com/2010/03/30/como-desfragmentar-tus-di...
http://www.vleu.net/shake/

Instalamos shake:

sudo add-apt-repository ppa:un-brice/ppa
sudo apt-get update && sudo apt-get
install shake-fs
O lo descargamos de
https://launchpad.net/%7Eun-brice/+archive/ppa/+files/shake-fs_0.99_amd6...
https://launchpad.net/%7Eun-brice/+archive/ppa/+files/shake-fs_0.99_i386...
Desmontado el disco que des-fragmentaremos hacemos fsck -nvf /dev/sdc1
Para ver el nivel de fragmentación
Después de la instalación, para usar Shake, necesitas editar tu archivo fstab:
gksu gedit /etc/fstab
Y añadir la opción user_xattr para la partición que desea des-fragmentar
(incluso si sólo desea desfragmentar los archivos).

/dev/sdb6 /media/JOCURI ext3 noatime,nodiratime,user_xattr,errors=remount-ro,data=writeback 0 1
(no te preocupes si en el fstab de tu partición, hay otras opciones).

shake /mi/particion
Si todo va bien ya deberían poder achicarlo mucho mas con Gparted

Usando discos y máquinas virtuales

Usamos el livecd o liveusb para crear una imagen de la partición
dd if=/dev/sda6 of=/media/un/disco/grande/imagen.raw

Luego abrimos el manager de virtual box
Creamos un disco virtual tamaño fijo (fixed) mas grande de la imagen que vamos a copiar
Configuramos nuestra maquina virtual
Compartimos la carpeta donde esta la imagen
Montamos el disco virtual
Arrancamos la maquina
En la maquina virtual abrimos gparted.
Creamos una partición del mismo formato que copiaremos (en el nuevo disco virtual, claro)
Y lo mismo de siempre
dd if=/dev/sda6 of=/home/medios/discogrande/imagen.raw

Ahora se ponen a ver una película por que esto tarda muchísimo. Varias horas.
Definitivamente es mejor usar un diso duro extra
Igual que antes usaremos Gparted ara redimensionar. Ahora vamos a dar un paseo.
Montamos nuestro usb y copiamos con comando dd o hacemos una imagen para luego crear varios usblinux

Que hago si NO tengo una VM instalada y no tengo tiempo/espacio/paciencia para eso
Con el comando VBoxManage
$ VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda -relative -register
Haremos un link a la partición real donde tenemos la imagen
Montamos el link
Montaremos en disco virtual
Copiamos con DD
Redimensionamos
Y finalmente creamos una imagen lista para copiarla en los usblinux

Instalar grub2
Ahora ha instalar el GRUB2 para arrancar nuestro nuevo juguete en cualquier pc.
Hay muchas formas
http://www.guia-ubuntu.org/index.php?title=Recuperar_GRUB

Yo usare Super Grub disk
Ponemos el Super Grub Disk en la lectora
Si quieren desconecten los discos duros dejando solo el usblinux
Encender y presiona F8 elegir la lectora
Se abrirá el menú de SuperGrub Disk, detect any OS, nuestro linux en usb,
Esperar
Una vez iniciado abrir una terminal

sudo su
grub-install /dev/sda

(sda lo debemos substituir por el disco duro que utilizamos para arrancar los sistemas
operativos, casi siempre es sda. Ojo!! no poner el número de partición, solo sda).
update-grub2
Si el comando no te funciona, quizás necesites instalar el paquete grub2:
aptitude install grub2
Bien ya casi terminamos

Toques finales
Arrancamos desde nuestro usb-linux y:

Desinstalar los driver de las tarjetas de video y cualquiera otro que nos pueda dar
problemas al llevarlo a otra pc. Yo quite el driver flgrx para tarjetas ATI
Borrar todo lo que hay en downloads, home etc... todo lo comprometedor .
Por si cae en malas manos....
Borrar los historiales de los webbrowser
Recomiendo borar de /home/usuario/ algunas cosas:
home/usuario/.mozilla .thumbnails .config/chromium .dvd-rip ...
Todo lo que ocupa espacio y pueda ser comprometedor jejejeje
Deshabilitar la previsualización (preview) de nautilus.
Para no perder tiempo creando los thumbnails en el lentísimo usb.
Comprar una calcomanía de TUX y pegarla en el usblinux

Conclusion
La velocidad de lectura y escritura es mucho mas lenta que el disco duro así que el usb linux
me resulto mas lento de lo que pensé (con un puerto USB 2.0) pero no esta mal .
Creo que servirá (al menos hasta que sea común el arranque desde USB 3.0)Si saben como hacer
cuando /home esta en otra partición avisenme.
Espero que se entienda todo este rollo y lo intenten.

Pandacriss Enero del 2012
@pandacriss T