Correr una distribución GNU/Linux en un pendrive USB (que vamos a llamar llave USB), de forma que podamos arrancar una PC desde ese dispositivo sin tocar el disco rígido es algo digno de ver. Pero podemos ir por más: ¿Qué tal insertar nuestro pendrive en cualquier PC en funcionamiento (Windows o Linux) y ejecutar nuestra distribución en una ventana, sin necesidad de reiniciar, modificar el disco duro, instalar nada ni interrumpir en absoluto el sistema operativo actual?

De este modo podremos llevar con nosotros una PC "virtual", con su propio sistema operativo, sus aplicaciones y todos nuestros valiosos documentos.

Esto es justamente lo que hace posible QEMU-Puppy y junto al artículo que sigue, tenemos explicado cómo usarlo para tener nuestra PC en el bolsillo.



Qemu-Puppy: tu distribución Linux en tu bolsillo


[...]
¿Una distro Linux completa en una llave USB? No es mala idea (ni nueva)... el problema es que nos sentemos ante un ordenador que ya esté corriendo su propio sistema operativo... En tal caso nuestra distro "llavero" no nos serviría de nada.

No; el objetivo ha de ser aún más ambicioso. A ver qué les parece éste: metemos una distro Linux en una llave USB, de forma que podamos arrancar un PC desde ella sin tocar el disco duro de la máquina. Vale, pero haremos algo más: podremos insertar nuestra llave en cualquier ordenador en funcionamiento (Windows o Linux) y ejecutar nuestra distro en una ventana dentro de él, todo ello sin necesidad de rearrancar, tocar el disco duro, instalar nada ni interrumpir en absoluto el sistema operativo de base. De este modo podremos llevar con nosotros nuestro propio PC, con su propio sistema operativo, sus aplicaciones y nuestros documentos. Seguro que coincidimos en que se trata un reto muy atractivo, que bien podemos considerar equivalente a llevar nuestro propio PC en el bolsillo.

Pero lo mejor de todo es que resulta mucho más fácil de realizar de lo que parece...

Quizás lo más "complicado" puede resultar preparar una llave que ya habíamos utilizado para dejarla lista para el nuevo proyecto. Aunque no se trata de algo específico de este proyecto, voy a tratarlo brevemente a continuación porque nos servirá para proyectos sucesivos.


Preparando tu llave USB

NOTA: Si tu llave está limpia (formateada en FAT32 y lista para usar) puedes saltarte este paso.

Los pasos que siguen corresponden a mi distribución Arch Linux, pero seguro que podrán adaptarse con facilidad a cualquier otra. También puede prepararse la llave desde un sistema Windows y sus usuarios sabrán cómo.

Por supuesto existen diferentes formas de preparar una llave usada para un nuevo proyecto. De hecho he utilizado varias antes de redactar esto (QTparted, por ejemplo), pero ninguna me ha resultado tan eficaz como la línea de comandos.

Comenzamos por conectar la llave a un puerto USB libre. Para identificarla, en un terminal tecleamos lo siguiente:

fdisk -l

Así podremos saber la denominación en forma /dev/xxxx que Linux da a nuestra llave. En mi caso, es /dev/sdf, que habrás de sustituir en los comandos que siguen por lo que tú obtengas con el comando anterior.

Si es necesario podemos borrar cualquier rastro un eventual MBR anterior tecleando:

dd if=/dev/zero of=/dev/sdf bs=512 count=1

Utilizamos de nuevo fdisk para borrar las particiones existentes y reparticionar la llave:

fdisk /dev/sdf

No olvides sustituir /dev/sdf por el nombre que tenga tu llave en tu sistema. Si no sabes usar fdisk (o no te atreves) puedes realizar esta operación en Windows: borrar las particiones y creas otra(s) a tu gusto, siempre que sean FAT32vfat, en linux). El uso de fdisk en linux es en realidad sencillo y nada queda grabado hasta que pulses "w". Con "p" ves las particiones, con "d" las borras, con "n" las creas, con "t" modificas su tipo, con "a" las vuelves activas, etc.

En mi caso, en una llave de 1 GB creé una partición de 666 MB para el sistema, dejando el resto como eventual depósito de ficheros.

Bien; supongamos que la llave está lista para usar.

Creamos un sistema de ficheros FAT32 en la partición antes creada (sdf1, en mi caso) con:

mkfs.vfat -F32 /dev/sdf1

Una forma de instalar un nuevo MBR es la siguiente:

locate mbr.bin

Este comando te devuelve la ruta en que está mbr.bin; en mi caso (Arch) devuelve:

/var/abs/extra/system/mksyslinux/mbr.bin

Tecleo ahora:

cat /var/abs/extra/system/mksyslinux/mbr.bin > /dev/sdf

Y ya tengo un nuevo MBR (Master Boot record).

Para hacer la llave arrancable:

syslinux -s /dev/sdf1

(insisto: cambia sdf1 por el nombre de tu partición).


Instalación de QEMU-Puppy

Este paso resulta tan sencillo como descargar el fichero (133'5 MB), descomprimirlo y volcar todo su contenido (20 ficheros, 262'8 MB) en el directorio raíz de la llave.

¿Listo? Pues ahora mucha atención, porque hay un paso que no se dice en ningún sitio, pero sin el cual el sistema no llega a arrancar desde la llave. Tras mucho googlear encontré la solución que ahora te cuento (bueno, en parte, porque también tuve que modificarla). Consiste en editar el fichero syslinux.cfg de la llave. Su aspecto inicial es este:

#default vmlinuz root=/dev/ram0 initrd=initrd.gz PMEDIA=usbflash
default vmlinuz root=/dev/ram0 initrd=initrd.gz
append QPM=true


Edítalo para que quede así:

default vmlinuz root=/dev/ram0 initrd=initrd.gz PMEDIA=usbflash
#default vmlinuz root=/dev/ram0 initrd=initrd.gz
append QPM=true


Como ves, lo único que hay que hacer es cambiar un comentario de sitio, pero es la diferencia entre que el sistema arranque o no.


Utilizando nuestro flamante "PC de bolsillo"

Aunque parezca mentira, todo está listo para usar. Si ahora colocas tu llave en un puerto USB de un PC capaz de arrancar desde USB, en un par de minutos estarás ante una distribución Puppy Linux, con la que podrás trabajar sin tocar el disco duro del PC.

Pero habíamos prometido más. Queríamos poder utilizar nuestro flamante sistema desde un PC ya funcionando, y además sin importarnos que esté ejecutando Linux o Windows.

Aquí es donde entra el componente QEMU. Tras insertar tu llave en un ordenador en funcionamiento, todo lo que hay que hacer es ir a la llave (que generalmente se montará sola) y hacer doble click en puppy.sh (si el sistema subyacente ejecuta Linux) o en puppy.exe (si el sistema subyacente ejecuta Windows). Más fácil, imposible.

A continuación te muestro unos pantallazos para que acabes de creértelo...


Ejecución sobre máquina Linux

Qemu-Puppy: tu distribución Linux en tu bolsillo

emuladores

Máquinas virtuales


Ejecución sobre máquina Windows

Qemu-Puppy: tu distribución Linux en tu bolsillo

emuladores

Máquinas virtuales


Observaciones finales

Es necesario destacar que al ejecutar el sistema desde nuestra llave, tanto en Windows como en Linux podemos utilizar el sistema original de base sin más que pulsar las teclas Ctrl-Alt. Al hacerlo, el ratón sale de la ventana de Puppy y opera con normalidad sobre el Linux o Windows de nuestro disco duro.

También quiero resaltar otro punto interesante. El fichero que descargaste es completo, es decir, que no necesitas disponer de QEMU ni en el Windows ni en el Linux de base, con lo que la independencia de nuestra llave es total y absoluta.

Desde ahora podrás sacar tu llave, introducirla en el ordenador de un amigo que vive en otra provincia y, bien arrancar tu distribución desde USB a pantalla completa, o bien ejecutarla mediante un doble clic en una ventana, sin tocar el sistema de tu amigo ni su disco duro.


Más información

En mi caso el proceso descrito ha funcionado a la perfección, pero ya sabemos que cada ordenador es un mundo. Si surgen dificultades puedes comentarlas aquí, pero también hay información detallada en la web de QEMU-Puppy (que puedes incluso descargar completamente en un .pdf).

Sobre la propia distribución utilizada, Puppy Linux, puedes obtener muchísima información en su web o -sobre todo- en sus concurridísimos foros.

Suerte y ya me contarás.



Algunos comentarios sobre MBR

Una puntualización: en distros basadas en Debian, parece que no disponemos através de syslinux de un archivo mbr.bin que nos permita hacer arrancable la llave tal y como muestras en el artículo. La alternativa parece ser (aún no he podido probarlo) instalar el paquete mbr:

apt-get install mbr

y después ejecutar:

install-mbr /dev/sdf

imagino que también será posible através de lilo y/o grub.



[...] encontré que haciendo "apt-get source syslinux" sí te baja el mbr, obviamente es más sencillo "aptitude install mbr".
Otro problema que me encontré es que después de intentar hacer syslinux -F32... 3 veces me di cuenta de que primero se borra el mbr (dd...) y después se hace el formateo y se copia el mbr; es decir, siguiendo la secuencia tal y como está no funciona (si borras el mbr).
[...]





Fuentes:
VivaLinux.com.ar
Kriptopolis.org
Wikipedia en español
PuppyLinux