Uniendo 2 herramientas fabulosas


Ok, primeramente debo agradecer al amigo Alfonso Pastor del Blog 2 Tazas de Linux por haber publicado la idea original
Ahora si, Manos a la Obra:
IMPORTANTE: Todo debemos hacerlo en una consola de «root»
Ingredientes las iso’s de clonezilla y systemrescue que las podemos bajar de AQUI y de AQUI
– Necesitamos tener instaladas las squashfs-tools
En caso que usemos debian o una de sus hijas sería:

aptitude install squashfs-tools

Una vez que tenemos todo creamos los puntos de montaje con el siguiente comando

mkdir -p /tmp/clonezilla /tmp/srcd /tmp/trabajoA /tmp/trabajoB

(Yo Trabajo en /tmp/ porque así no quedan residuos luego, el detalle está en que si trabajas en una PC y se te corta la luz luego hay que volver a empezar)
Montamos las isos

mount -o loop systemrescuecd*.iso /tmp/srcd/
mount -o loop clonezilla*.iso /tmp/clonezilla/

Cambiamos a la carpeta donde extraeremos las «cositas» del clonezilla:

cd /tmp/trabajoA/

Extraemos el sistema de fichero comprimido (que se encuentra en formato squashfs) de la siguiente manera:

unsquashfs /tmp/clonezilla/live/filesystem.squashfs

Repetimos la operación con el systemrescue:

cd /tmp/trabajoB/
unsquashfs /tmp/srcd/sysrcd.dat

Y nos quedamos en este directorio ya que todos los cambios se realizarán aca.
Como no podemos simplemente meter un sistema dentro del otro (al mezclar un ubuntu con un gentoo así sin más pueden tener la seguridad que algo explota)

cp -avfdpR /tmp/trabajoA/squashfs-root/usr/share/drbl squashfs-root/usr/share/
cp -avfdpR /tmp/trabajoA/squashfs-root/usr/sbin/clonezilla squashfs-root/usr/sbin/clonezilla
cp -avfdpR /tmp/trabajoA/squashfs-root/usr/sbin/drbl* squashfs-root/usr/share/sbin/
cp -avfdpR /tmp/trabajoA/squashfs-root/etc/drbl squashfs-root/etc/

(Acá viene una parte tomada textualmente de Blog 2 Tazas de Linux)

Durante la restauración de las imágenes Linux, se producen errores indicando que no existe partclone.ext3. Si husmeamos con find | grep en SystemRescueCD vemos que tiene un partclone.extfs, pero no partclone.ext3. Mirando en Clonezilla, en su directorio usr/sbin vemos:

partclone.ext2 −> partclone.extfs
partclone.ext3 −> partclone.extfs
partclone.ext4 −> partclone.extfs
partclone.ext4dev −> partclone.extfs
partclone.extfs

Vamos, que Clonezilla tiene partclones variados, pero todos acaban apuntando a partclone.extfs. Lo único que hay que hacer en SystemRescueCD es imitar esta estructura:

cd squasfhs-root/usr/sbin
ln -sf partclone.extfs partclone.ext2
ln -sf partclone.extfs partclone.ext3
ln -sf partclone.extfs partclone.ext4
ln -sf partclone.extfs partclone.ext4dev
cd ../../

Clonezilla necesita un directorio /home/partimag como punto de montaje para las imágenes. El SystemRescueCD no lo tiene, asi que hay que crearlo a mano:

mkdir -p squashfs-root/home/partimag

Por último, también nos da problemas la restauración de imágenes Linux al intentar utilizar el comando mkswap-uuid para restaurar la partición de swap. Si buscamos este comando en SystemRescueCD vemos que no existe. ¿Qué hacemos?. Pues copiarlo de Clonezilla a SystemRescueCD, así, tal cual.

cp -avfdpR /tmp/trabajoA/squashfs-root/sbin/mkswap-uuid squashfs-root/sbin/mkswap-uuid

(Fin de la Cita)

En mi experiencia particular me di cuenta un par de detalles:
Hay cosas que busca en /opt y otras que busca en /usr/share ¿que hacemos? ¿copiamos todo en ambos directorios? ¿Para qué? ¡Podemos crear enlaces!

mount -o bind /proc squashfs-root/proc/
mount -o bind /dev squashfs-root/dev/
mount -o bind /sys squashfs-root/sys/
chroot squashfs-root/ /bin/bash
ln -s /usr/share/drbl /opt
exit
umount -l squashfs-root/proc/
umount -l squashfs-root/dev/
umount -l squashfs-root/sys/
rm -Rfv squashfs-root/tmp/*

Si queremos que clonezilla esté accesible desde el menú (en caso que necesitemos arrancar systemrescue en modo gráfico) podemos hacer lo siguiente:

nano squashfs-root/usr/share/applications/clonezilla.desktop

y colocar allí dentro el siguiente texto:

#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[es_VE]=background
Name[es_VE]=Clonezilla
Name[en_US]=Clonezilla
Name=Clonezilla
Exec=clonezilla
Icon=background

Metida de pata de última hora: Al intentar correr unas opciones del clonezilla, me dió un par de errores por unos scripts propios del drbl que no conseguía, por lo tanto me tocó hacer un cp de los mismos:

cp -avfdpR /tmp/trabajoA/squashfs-root/usr/sbin/*-ocs-* squashfs-root/usr/sbin/
cp -avfdpR /tmp/trabajoA/squashfs-root/usr/sbin/ocs-* squashfs-root/usr/sbin/

Ahora volvemos a comprimir el sistema de ficheros:

mksquashfs squashfs-root sysrcd.dat

Generamos la suma md5:

md5sum sysrcd.dat > sysrcd.md5

Y ahora podemos usar este nuevo sistema de ficheros para re-crear una iso con isomaster. No explico el uso de isomaster porque es bastante gráfico e intuitivo

aptitude install isomaster

Sólo reemplazando los ficheros sysrcd.* y guardar la nueva iso para el uso que deseemos, grabarla a un cd o escribirla a un usb con unetbootin.

Para quien quiera ahorrarse el trabajo y desee descargar la iso creada mediante el procedimiento antes descrito lo puede hacer desde ACA.

Para finalizar comparto un video donde intento explicar graficamente lo escrito líneas atras:

PD: si queremos que clonezilla forme parte de nuestro menu de arranque en la iso o pendrive podemos modificar el mismo y añadir el siguiente texto:

(Lo podemos ubicar justo después del ENDTEXT de la etiqueta 7 para continuar el orden)

LABEL rescuecd_clonezilla
MENU LABEL 8) SystemRescueCd: directly start clonezilla
KERNEL ifcpu64.c32
APPEND rescue64 doclonezilla −− rescue32 doclonezilla
TEXT HELP
Boot standard kernel and start the clonezilla tool directly.
You can also get in this toll by typing «clonezilla» from
the console.
ENDTEXT

PPD: Si usamos unetbootin a lo mejor querramos tener el menú original de arranque, esto lo podemos lograr si borramos el menú creado por unetbootin (syslinux.cfg) y renombramos la carpeta «isolinux» por «syslinux» y dentro de esta carpeta renombramos el archivo «isolinux.cfg» por «syslinux.cfg».

Gracias por la atención, la colaboración y se agradece cualquier sugerencia para mejorar; igualmente si notan algún error al intentar usar la herramienta por favor hacerlo saber en los comentarios.

¿cuantas distros puedo poner en un pendrive de 8Gb? (o una tarde de ocio)


Bueno, esta tarde me dispuse a re-crear un experimento que hice hace cerca de 6 años, en el cual logré hacer funcionar un liveUSB con 16 distros usando GRUB Legacy, en esta oportunidad trabajaré con BURG.

Ingredientes:

Isos de sistemas operativos:

en mi caso tengo por los momentos:

System Rescue CD

NanoLinux

MacPup

OpenElec

Debian Netinst multi arch

Un sistema GNU/Linux corriendo (yo lo hice con Jessie, pero incñuso puede ser un livecd siempre que tenga la opción de instalar el burg; EJ. Canaima GNU/Linux)

Obviamente un Pendrive (el mío es de 8Gb) por razones obvias no es recomendable usar un de capacidad inferior a 4Gb

Preparación:

Primeramente hacemos un total respaldo del contenido de nuestro pendrive porque es necesario formatearlo:

Iniciamos gparted, eliminamos TODAS las particiones del pendrive (por lo general es una sola XD) luego creamos una partición nueva en FAT32, dejando 520Mb libres al final ¿para que? luego lo veremos. Le ponemos el nombre/etiqueta de nuestra preferencia.

En el espacio libre dejado al final crearemos una partición (aca no importa el formato, podemos dejar por defecto ext2) usando el total del espacio disponible.

Desconectamos y volvemos a montar el pendrive para que se actualice por completo y procedemos a instalar el burg:

NOTA: TODAS ESTAS OPERACIONES DEBEN HACERSE CON EL USUARIO ROOT

# burg-install −−no-floppy −−root-directory=/media/(ETIQUETA) /dev/sdX

Donde: /media/(ETIQUETA) es la carpeta donde se monta el pendrive y /dev/sdX es el dispositivo del pendrive (por lo general sdb)

HAY QUE SER EXAGERADAMENTE CUIDADOSO CON ESTO ya que si que nos equivocamos de dispositivo podemos dejar sin arranque nuestro disco, para saber donde esta montado el pendrive bastará con el siguiente comando:

# mount | grep media

Ya que tenemos el burg instalado necesitaremos un menu, los temas y las fuentes; como soy flojo lo copio TODO de mi propio burg:

# cp −−avf /boot/burg/burg.cfg /media/(ETIQUETA)/boot/burg

# cp −−avf /boot/burg/fonts /media/(ETIQUETA)/boot/burg

# cp −−avf /boot/burg/themes /media/(ETIQUETA)/boot/burg

 

Ya tenemos un pendrive booteable, pero ¿que bootea? bueno, pues de momento sólo el burg (o, en mi caso, el burg del disco de mi máquina ya que aun no editamos nada XD)

Procedemos a crear las carpetas temporales para el montaje de las isos:

#mkdir -p /tmp/isos/srcd /tmp/isos/nanolinux /tmp/isos/macpup /tmp/isos/openelec

Y las montamos:

# mount -o loop systemrescuecd-x86-4.0.0.iso /tmp/isos/srcd

# mount -o loop nanolinux-beta1.iso /tmp/isos/nanolinux

# mount -o loop Macpup_550.iso /tmp/isos/macpup

El caso con OpenElec y debian es especial, OpenElec es un archivo comprimido y haremos lo siguiente:

# tar -xvpzf OpenELEC-Generic.x86_64-3.2.4.tar -C /tmp/isos/openelec

Y con debian debemos clonar la iso a la segunda partición del pendrive (¿vieron? era para eso)

# dd if=debian-testing-amd64-i386-netinst.iso of=/dev/sdb2

Si son como yo, que me gusta ver una barra de progreso pueden instalar el programa pv y el comado quedaría asi:

# dd if=debian-testing-amd64-i386-netinst.iso |pv| dd of=/dev/sdb2

Con el pv entre las tuberías tendremos un lindo indicador del progreso de dd.

Desmontamos el pendrive, lo extraemos y lo volvemos a conectar (esto para que nos reconozca la partición donde clonamos el instalador de debian)

Copiamos el contenido de las isos:

# cp −−avf /tmp/isos/srcd/* /media/(ETIQUETA)/

# cp −−avf /tmp/isos/nanolinux/* /media/(ETIQUETA)/

# cp −−avf /tmp/isos/macpup/* /media/(ETIQUETA)/

# cp −−avf /tmp/isos/openelec/target/KERNEL /media/(ETIQUETA)/

# cp −−avf /media/Debian\ testing\ M-A\ 1/install* /media/(ETIQUETA)

Y ahora viene la parte creativa, ubicar el syslinux.cfg o isolinux.cfg para pasar del formato de ése menu de arranque al nativo de burg, es decir, pasar de esto:

label installgui
    menu label ^Graphical install
    kernel /install.386/vmlinuz
    append video=vesa:ywrap,mtrr vga=788 initrd=/install.386/gtk/initrd.gz −− quiet

a esto:

menuentry «Graphical install» {
    linux    /install.386/vmlinuz video=vesa:ywrap,mtrr vga=788 −− quiet
    initrd   /install.386/gtk/initrd.gz

}

Si se fijan bien, no es tan complicado, la palabra «kernel» se sustituye por «linux», el initrd queda solito en una línea y lo que es el apéndice (append) se agrega al final de la línea del kernel.

Un caso particular, MacPup, el menu de arranque es el de grub legacy:

title Macpup 550  
kernel (cd)/vmlinuz root=/dev/ram0 pmedia=idecd  
initrd (cd)/initrd.gz  

title Macpup 550 – RAM
kernel (cd)/vmlinuz root=/dev/ram0 pfix=ram pmedia=idecd
initrd (cd)/initrd.gz

Para nuestro pendrive quedaría así:

menuentry «Macpup 550» {
    linux    /vmlinuz root=/dev/ram0 pfix=fsck
    initrd    /initrd.gz
}
menuentry «Macpup 550 – RAM» {
    linux    /vmlinuz root=/dev/ram0 pfix=ram,fsck
    initrd /initrd.gz
}

Y si queremos que nos muestre el icono de la distribución sólo agregamos la siguiente línea entre la última comilla y la primera llave de «menuentry» asi:

» −−class puppy −−class gnu-linux −−class gnu −−class os −−group group_main {

En el ejemplo anterior nos mostrará el icono de puppy linux, para mostrar otro debemos buscar las clases disponibles en la carpeta de iconos dentro de la carpeta de temas.

Podemos probar si funcionó sin necesidad de reiniciar el equipo con una máquina virtual, yo uso qemu y lo pruebo asi:

$ qemu -hda /dev/sdb

y me muestra esto:

subir imagenes

Ahora voy a agregar Slitaz a la lista de arranque y a ver que otra consigo por allí

PD: si ven que el menu de arranque se les hace demasiado largo pueden poner otros archivos de configuración (yo lo hice en el caso de debian, que tiene un montón de opciones adicionales):

menuentry «debian netinstall» −−class debian −−class gnu-linux −−class gnu −−class os −−group group_main {
  configfile /boot/burg/debian.cfg
}

El archivo /boot/burg/debian.cgf es casi idéntico al /boot/burg/burg.cfg sólo se diferencia porque tiene exclusivamente las opciones de debian y un boton de regreso asi:

menuentry «regresar» {
  configfile /boot/burg/burg.cfg
}

Espero que halla sido de utilidad, si te gustó, te sirvió o crees que puede mejorarse eres libre de hacer tus comentarios. Igualmente si necesitas ayuda puedes pregunta y ya veremos cómo se resuelve 😉