sábado, 10 de noviembre de 2012

Lápiz USB multiarranque desde LINUX

El otro día mi amigo hckorootx me enseñó un lápiz USB multi-arranque con muchas aplicaciones útiles para poder reparar daños de software y hardware en los ordenadores. La primera pregunta fue si es necesaria una herramienta así, y concluimos que probablemente no lo fuera para ordenadores con Linux. Sin embargo sí es muy necesaria para los que tengan instalado Windows. La segunda pregunta fue ¿cómo lo has hecho? Simplemente con yumi, una aplicación para Windows que genera USBs con arranque múltiple a cualquier tipo de ISOs (que sea autoarrancables). Como estoy en un momento en que me niego de forma sistemática a usar Windows, prometí preparar uno similar sin recurrir a nuestro querido ventanitas. Por pasos fue así:
1. Primer intento: usar yumi en wine. yumi funciona, pero wine aun no tiene solucionado el reconocimiento de los dispositivos USB, así que tras varios intentos de configuración, lo intentamos de otra forma.
2. Esa misma gente que prepara yumi nos ofrece una página donde señala la existencia de una herramienta para poder preparar un multiboot USB desde Linux, creada por http://liveusb.info/. La herramienta es un script de instalación para Ubuntu. Por supuesto primero lo intenté con Fedora, pero con un error inmediato, ya que no encontraba apt-get (obviamente). Como también estoy un poco reacio al uso de Ubuntu, lo intenté con Debian 6.05, pero aparecieron errores de localización de ficheros y de configuración (es de suponer que Ubuntu cambia las localizaciones de algunas cosas sobre el original de Debian).
3. Finalmente lo instalé sobre un Ubuntu 10.04 en mi Aspire One en un lápiz Kingston HyperX 8GB (el azul de la foto; los intentos previos en Kingston DT109 de 8GB significaba una velocidad muy baja al realizar cualquier acción en el sistema.


La aplicación se instala ejecutando directamente el script
./install-depot-multisystem.sh


y precisa la palabra de administrador (salvo que se haga sobre un live).


Una vez instalado se ejecuta desde el menú de Aplicaciones - Accesorios -MultiSystem.
A partir de ahí, lo único que hay que hacer es arrastrar las ISOs


desde el directorio en el que están, si las hemos descargado previamente para luego prepararlas más rápidamente; si no, la propia aplicación nos dirige a través del navegador a las direcciones de descarga a muchas de las ISOs que tiene previamente indicadas. En mi caso la cosa estaba complicada, ya que este netbook carece de disco duro, así que además de un USB con Ubuntu 10.04 como sistema y un DT R500 de 16 GB para generarlo como multiboot, necesité un tercero de 32GB -otro DT R500- que hizo de disco duro con un directorio con las ISOs (los tres en la primera foto)


Como el ordenador solo tiene 3 puertos USB, y además bastante cerca dos de ellos, la cosa fue algo complicada. En el caso de querer generarlo en estas circustancias, o con menos USB, mejor llevar un hub.
Una vez arrastradas las ISOs, se abren y la aplicación las distribuye en el lápiz USB (que debe ir formateado FAT32), genera el sistema de arranque, que va configurando cada ISO que vamos añadiendo.
Para esta prueba introduje ISOs de CD Live de Debian 6.05, Puppy, 5.4, Fedora 17 y Ubuntu 12.10, que sirven para instalar en los ordenadores. Añadí un Knopixx 7.04 por las aplicaciones de reparación que lleva generalmente. Como otras ISOs interesantes para desinfección y limpieza de ordenadores incluí Avira rescue system y Kaspersky Rescue Disk 10. Finalmente, para incluir aplicaciones de todo tipo para recuperar software y hardware, incluí Ultimate Boot CD 5.11 y el novísimo Hiren's Boot 15.2.
Las he probado todas y funcionan perfectamente. Tuve un error inicial de arranque en el Kaspersky Rescue Disk; lo achaqué a que, siendo un arranque Linux, está incluida en el arranque GRUB4DOS, como Hiren's y Ultimate Boot CD, pero realmente se debió a un ISO dañado, y todo funcionó perfectamente al sustituirlo por uno correcto.
Esto nos da la posibilidad de llevar en una unidad USB todas las herramientas necesarias en los muchos "arreglos" que tenemos que ir haciendo por ahí a esos amigos que solo conocemos junto a las averías de sus ordenadores... y dejar la caja de CDs que tanto pesa. ¡Y no he tocado Windows!, salvo el miniXP de Hiren's Boot, y solo para comprobar que funciona.
Yo recomendaría:
- Tener las ISOs descargadas previamente y comprobadas (MD5 y SHA mediante md5sum y shasum). Puede ser que el ordenador que usemos para generar el dispositivo tenga una conexión lenta. Eso si, tiene que estar conectado, ya que el script instala de los repositorio.
- Usar unidades USB rápidas, o al menos suficientemente rápidas, para que lo que hagamos no nos lleve mucho tiempo. Si usamos nuestra peor unidad, menos útil nos será.
- Si lo hacemos con un sistema instalado en una unidad USB, como fue mi caso, si el lápiz es muy lento, es mejor hacerlo con una distribución live que una instalada (la cosa lleva hora y media si es del estilo DT109 con un Ubuntu instalado).

Para mejorar esto, hckorootx ha prometido hacer un USB con las ISOs autoarrancables sin aplicación alguna, tocando solo manualmente el GRUB. Carezco de conocimientos para saber si es posible, pero en caso de que lo logre, nos explicará los pasos para que incluso un dummie como yo pueda hacerlo.

4 comentarios:

  1. Estoy en ello... segundo día (o mejor dicho "noche") de investigación:

    1. Instalo el paquete "mbr" y creo un MBR en el USB:

    # apt-get install mbr
    # install-mbr /dev/sdb

    2. Instalo el paquete "syslinux", creo un sistema de ficheros FAT32 y genero el gestor de arranque:

    # apt-get install syslinux mtools
    # mkfs.vfat /dev/sdb1
    # syslinux /dev/sdb1

    3. Monto el USB y creo un directorio "/avira"; monto la ISO del Avira Rescue CD y copio todo su contenido a dicho directorio:

    # mount -t vfat /dev/sdb1 /mnt
    # mkdir /mnt/avira
    # mount -o loop rescue_system-common-en.iso /media/cdrom
    # cp -R /media/cdrom/* /mnt/avira

    4. Creo un archivo "syslinux.cfg" en el USB:

    # vi /mnt/syslinux.cfg

    y le añado las líneas necesarias para arrancar Avira:

    prompt 1
    default 1
    title Avira
    kernel /avira/vmlinuz
    append initrd=/avira/initrd.lz

    5. Desmonto USB e imagen ISO y reinicio el equipo:

    # umount /mnt
    # umount /media/cdrom
    # reboot

    Y arrancando desde el USB Avira empieza a cargar, peeero, llegado el punto de entrar al entorno gráfico, salta al terminal sin más...

    Seguiré trabajando. Saludos!

    ResponderEliminar
  2. Primer intento. Release hckorootx multisystem USB prealpha
    Creo que deberías empezar instalando Git en tu ordenador para llevarlo ordenado

    ResponderEliminar
  3. Tras haber analizado el funcionamiento de varias de las utilidades que convierten un lápiz USB en un dispositivo de arranque o multi-arranque (véase UNetbootin o MultiBoot en Linux, Universal USB Installer o Yumi en Windows), he llegado a la conclusión de de que todas ellas se basan en el mismo principio: Conocer de antemano la distribución a instalar y utilizar Syslinux para llevar a cabo la configuración necesaria. Me explico:

    1. Todas nos piden que seleccionemos una distribución, para así poder localizar tanto el kernel (vmlinuz) como el disco RAM inicial (initrd) dentro de la ISO correspondiente. Esta información también les servirá para añadir los parámetros extra necesarios para que el USB arranque con normalidad.
    Ejemplo 1: Lubuntu. Si añadimos manualmente la siguiente entrada en syslinux.cfg:

    label Lubuntu
    kernel /lubuntu/casper/vmlinuz
    append initrd=/lubuntu/casper/initrd.lz

    no bastará para que Lubuntu arranque. Sin embargo, cualquiera de estas utilidades añadirán algo similar a esto:

    label Lubuntu
    kernel /lubuntu/casper/vmlinuz
    append cdrom-detect/try-usb=true
    noprompt
    boot=casper
    floppy.allowed_drive_mask=0
    ignore_uuid
    live-media-path=/lubuntu/casper/
    initrd=/lubuntu/casper/initrd.lz
    splash --

    y tendremos un Lubuntu completamente funcional.

    2. Todas conocen la estructura de directorios a crear en función de la distribución elegida.
    Ejemplo 2: Avira Rescue CD. He intentado, en vano, arrancar esta distro ubicándola en el directorio /avira/ dentro del lápiz USB. La solución es sencilla. Para que funcione correctamente, los directorios /antivir/, /avupdate/ y /system/ deben residir en la raíz del USB y no en subdirectorios, y así lo recrean estas utilidades.

    3. Si las "engañamos" pueden dar lugar a un USB inservible.
    Ejemplo 3: Kaspersky Rescue Disk. He probado a cambiar el nombre de la ISO, pasando de kav_rescue_10.iso a prueba.iso, y seleccionarla posteriormente como "Unlisted Linux ISO". Aunque no se generaron errores en el momento de la instalación, finalmente el USB no arrancó.

    En definitiva, estas aplicaciones disponen de la información necesaria para añadir las entradas correctas en base a las distros elegidas. Para hacerlo manualmente también debemos disponer de dicha información.

    Un saludo! (Y perdón por la extensión del comentario)

    ResponderEliminar
    Respuestas
    1. Nadie dio un gracias al menos por esta excelente investigacion? Muy buena e informativa, felicitaciones, aprendi mucho desde aqui. Un abrazo y que sigan los exitos!. Gus9000

      Eliminar