Ubuntu Feisty Fawn en un bolígrafo (USB)

Boli USB Aprovechando un bolígrafo USB de 1GB que tenía por ahí tirado (un regalo de empresa), me acabo de crear un Ubuntu Feisty Fawn portátil.

Lo primero que he hecho es cambiar el tamaño de la partición FAT que venía por defecto en la memoria del bolígrafo, para reducirla a sólo 256MB, más que suficiente para seguir utilizándola con otros sistemas operativos y, además, para que me sirva como almacén de lectura-escritura (casper-rw) en modo persistente (cuando funcione, pues actualmente hay un bug al respecto). Para ello he utilizado la herramienta parted (en modo root o con sudo, por supuesto). En mi caso, al tener el bolígrafo USB en el dispositivo /dev/sdb, hice:

parted /dev/sdb

Ojo, muy importante: conviene que previamente hagas un fdisk -l, para no equivocarte de dispositivo y provocar un estropicio (y desmonta la partición si la tienes montada). Una vez dentro de parted, con print podrás visualizar el estado actual del dispositivo. Para redimensionar la partición FAT, basta con ejecutar (asumo que todavía sólo hay una partición y que está numerada con el 1):

resize 1 0 256MB

También puede ser ejecutada paso a paso (primero resize, luego el 1,…; igual conviene este método, pues así te va dando valores por defecto y es más difícil equivocarse) .

Por lo que pudiera pasar, he formateado la partición:

mkfs.vfat -F 32 -n casper-rw /dev/sdb1

Si fuese FAT16, cambiaría -F 32 por -F 16. Con el anterior comando, le hemos puesto la etiqueta casper-rw para que sea usada en modo persistente.

Boli USB con Ubuntu

Posteriormente, he salido de parted (quit) y me he dispuesto a crear con fdisk una nueva partición ext3 en el espacio libre dejado en la memoria (podría haberlo hecho también con parted, pero así aprendemos a usar más herramientas). En mi caso:

fdisk /dev/sdb

Una vez dentro, con p visualizas el estado actual, con n se crea una nueva partición (luego le dices que p, para primaria, 2 para 2ª partición, y entras los valores por defecto de inicio y final de partición para llenar todo el espacio disponible), con a se activa la partición 2 para poder arrancar con ella (bootable), y con w se guardan definitivamente los cambios (en este sentido, me gusta más fdisk que parted, pues este último hace los cambios de inmediato). Para salir, q.

Formateamos la partición ext3 (también debería valer ext2). En mi caso:

mkfs.ext3 -L ubuntu /dev/sdb2

He elegido hacerlo así para que dicha partición permanezca invisible a otros sistemas operativos y no pueda ser borrada o modificada por error. Será en esta partición donde copiemos los datos del Live CD de Ubuntu. Asumiendo que hemos descargado la imagen ISO de Ubuntu, la montaremos (no hace falta quemarla en un CD), por ejemplo, así:

mount -t iso9660 -o loop ubuntu-7.04-desktop-i386.iso /mnt/externo/

Ahora, por fin, montamos la partición ext3 del bolígrafo USB:

mount -o sync /dev/sdb2 /media/sdb2/

Y copiamos el contenido del CD en ella:

cp -Rpdf /mnt/externo/* /media/sdb2/

En realidad no hace falta copiar todo, pero como hay espacio de sobra… (dejo como ejercicio al lector avanzado descubrir los ficheros innecesarios) .

Ahora viene la parte que considero más innovadora de este artículo (aparte de elegir un bolígrafo, claro). Como se ha optado por usar una partición ext3, invisible a Windows y otros virus, habrá que elegir un gestor de arranque que funcione en este tipo de particiones. Podría haber sido grub o lilo, pero eso implicaría tener que currarme unos ficheros de configuración. Y como se dispone de ficheros de configuración en el LiveCD válidos para syslinux e isolinux, he preferido usar el poco conocido extlinux, cuyos ficheros de configuración tienen exactamente el mismo formato. Esta aplicación extlinux viene en el paquete syslinux, por lo que, para instalar el paquete:

aptitude install syslinux

Antes que nada, comprueba con fdisk -l que todo está correcto. En mi caso me sale:

Disco /dev/sdb: 1025 MB, 1025507328 bytes
32 cabezas, 62 sectores/pista, 1009 cilindros
Unidades = cilindros de 1984 * 512 = 1015808 bytes
Disposit.  Inicio  Comienzo    Fin   Bloques   Id   Sistema
/dev/sdb1                1     252   249953     e   W95 FAT16 (LBA)
/dev/sdb2    *         253    1009   750944    83   Linux

Fíjate bien dónde está el asterisco (partición activa). Debe estar en la partición con el Linux. Ahora, para instalar el gestor de arranque en el bolígrafo USB:

extlinux -z /media/sdb2/

La opción -z será muy útil para ciertos ordenadores que, en el arranque, interpretan los dispositivos de almacenamiento USB como dispositivos ZIPdrive (ver extlinux -h). Comprobaremos que aparece un fichero en /media/sdb2/extlinux.sys

Algunos USB, extrañamente se resisten el el proceso de arranque. Es importante que sólo haya una partición activa y sea esa precisamente en la que hayamos instalado el gestor de arranque. Si los problemas persisten, mírate este artículo sobre el tema.

Como habéis visto, he instalado el gestor en la raíz de la partición. No he sabido hacerlo de otra forma. Ello nos obliga a hacer una pequeña modificación en la estructura de ficheros del USB. Para ello movemos todos los ficheros de la carpeta isolinux a la raíz:

mv /media/sdb2/isolinux/* /media/sdb2/

Y copiamos el kernel, etc. también a la raíz (sí, han de estar duplicados):

cp /media/sdb2/casper/vmlinuz /media/sdb2/
cp /media/sdb2/casper/initrd.gz /media/sdb2/
cp /media/sdb2/install/mt86plus /media/sdb2/

Ya sólo queda una cosa: copiar el fichero de configuración del isolinux a otro válido para extlinux:

cp /media/sdb2/isolinux.cfg /media/sdb2/extlinux.conf

También conviene editarlo. Con tu editor favorito cámbialo a tu gusto. Yo lo he dejado así (si quieres, también puedes descargarlo):

DEFAULT usb
GFXBOOT bootlogo
GFXBOOT-BACKGROUND 0xB6875A
APPEND file=preseed/ubuntu.seed boot=casper initrd=initrd.gz locale=es_ES bootkbd=es console-setup/layoutcode=es quiet splash --
LABEL usb
menu label ^Ubuntu en modo persistente
kernel vmlinuz
append file=preseed/ubuntu.seed boot=casper persistent initrd=initrd.gz locale=es_ES bootkbd=es console-setup/layoutcode=es quiet splash --
LABEL live
menu label ^Start or install Ubuntu
kernel vmlinuz
append file=preseed/ubuntu.seed boot=casper initrd=initrd.gz locale=es_ES bootkbd=es console-setup/layoutcode=es quiet splash --
LABEL xforcevesa
menu label Start Ubuntu in safe ^graphics mode
kernel vmlinuz
append file=preseed/ubuntu.seed boot=casper xforcevesa initrd=initrd.gz locale=es_ES bootkbd=es console-setup/layoutcode=es quiet splash --
LABEL driverupdates
menu label Install with driver ^update CD
kernel vmlinuz
append file=preseed/ubuntu.seed boot=casper debian-installer/driver-update=true initrd=initrd.gz locale=es_ES bootkbd=es console-setup/layoutcode=es quiet splash --
LABEL check
menu label ^Check CD for defects
kernel vmlinuz
append boot=casper integrity-check initrd=initrd.gz locale=es_ES bootkbd=es console-setup/layoutcode=es quiet splash --
LABEL memtest
menu label ^Memory test
kernel mt86plus
append -
LABEL hd
menu label ^Boot from first hard disk
localboot 0x80
append -
DISPLAY isolinux.txt
TIMEOUT 300
PROMPT 1
F1 f1.txt
F2 f2.txt
F3 f3.txt
F4 f4.txt
F5 f5.txt
F6 f6.txt
F7 f7.txt
F8 f8.txt
F9 f9.txt
F0 f10.txt

Tal y como está arriba, el arranque por defecto será en español y tendrá habilitado el modo persistente (cuando funcione correctamente: entonces habrá que sustituir el kernel vmlinuz).

Para terminar, desmontamos el bolígrafo USB y, para probarlo, rearrancamos el ordenador, ordenándole en la BIOS (eso ya depende de ti) que arranque con el dispositivo USB.

A mi me va de maravilla. ¿Y a ti?

Ubuntu Feisty Fawn en un bolígrafo (USB)
5 (1 voto)

41 comentarios en “Ubuntu Feisty Fawn en un bolígrafo (USB)

  1. se puede clonar un usb?
    digo
    para ahorar todo el procedimiento jeje
    es esto posible?
    porke la verdad le tengo algo de miedo a eso de las terminales

  2. Pingback: ING-X en un pendrive..
  3. ehh tengo un probema poke esitale e ubuntu 7.10 y se me keda como si fuese ubuntu live y le doy a ke se corra y lo ke hace se llena la barra y despues sale initrd.gz y le doy ok y no hace mas nada lo puedo hacer 100 veces es lo mismo!!

  4. Hola Félix,

    No he probado con la 6.10 ni la 6.06, pero me suena de gente que sí lo ha conseguido. Si de verdad necesitas el modo persistente, quizás haya que esperar a Gutsy Gibbon (la 7.10) a ver qué pasa. Ya hay alguna beta, así que prueba a ver.

  5. Muchas gracias por tu tutorial.

    Me he creado un HD-USB de 40 Gb e instalado el ubuntu. Si sigo tu tutorial con la 7.04 me funciona pero no hay persistencia, en cambio ni con la 6.10 ni la 6.06 funciona. Inicia VMLINUZ e INITRD.GZ y después descomprime pero no consigue montar bien el sistema de ficheros y por tanto no encuentra nada. He hecho multitud de pruebas y nada.

    ¿Alguna idea?

    Gracias, Félix

  6. Imash!!!, 512MB se te quedan cortos, pues no cabe el contenido completo del Live CD de Ubuntu.

    Pero puedes probar con otras distribuciones, como Damn Small Linux

  7. Supongo que has utilizado Grub como gestor de arranque. En ese caso, fíjate que tengas correctamente el fichero /boot/grub/menu.lst Te sugiero este tutorial

  8. He instalado “a pelo” kubuntu Edgy 6.10 en un disco duro de 10gb montado en gabinete USB y tampoco me arranca bien, me da error, pero lo que hago es bootear con el CD SuperGrubDisk y forzar el arranque, me funciona de maravilla (en este momento escribo desde kubuntu) voy a probar tu tutorial con esta opcion en un PenDrive y les comentare…

    Algun consejo para corregir mi booteo..??

  9. erPato, la partición fat sólo es necesaria para poder usar el pendrive en Windows y para que arrancar usar la distribución en modo persistente. Si te refieres a instalarlo “a pelo” con el instalador de Ubuntu, has de tener cuidado, pues igual no te cabe en 1GB (depende de las aplicaciones que instales).
    survivor, sin más datos no te puedo ayudar

  10. ¿No se podría instalar directamente “a pelo” en el pendrive? No es necesaria la partición fat en realidad, ¿No?
    saludos

  11. He seguido el tuto al pie de la letra, pero al arrancar desde pendrive me da el error de partition error o algo asi…

  12. Pingback: Ubuntu Feisty Fawn en un Bolígrafo « ~…:: Delirios ::….~ informática y otros…
  13. Ahí no te puedo ayudar 🙁 Cada BIOS es un mundo (o eso me lo parece a mi). De todos modos, haz una última prueba: instala extlinux sin el -z, no vaya a ser que sea esa tontería.

  14. Acabo de comprobar la conf de la BIOS y estaba bien puesta… el primer dispositivo de la lista es el usb.
    Valla.. ya no tengo ni idea de cual puede ser el fallo.

  15. oh! si arrancando desde qemu funciona!!! (debería haberlo probado antes)
    Esto quiere decir que tengo mal la configuracion de arranque de la BIOS.

  16. Muy buen artículo, pero lo he probado una vez y aún haciendo lo “cat /usr/lib/syslinux/mbr.bin > /dev/sdb” sigue sin arrancar, se queda la pantalla con el cursor arriba y se queda bloqueado el ordenador…

    Voy a probar a hacerlo todo otra vez a ver que pasa, por si me he saltado algo.

    Salu2.

  17. nickhell, gracias por el enlace. Lo voy a estudiar y ver la posibilidad de adaptarlo para instalarlo desde Linux.

    nagir, puedes probar a crear una nueva partición adicional, modificando el tamaño de la partición FAT32 original, tal y como se explica en este artículo. Eso sí, yo no formatearía la partición FAT no sea que te cargues algo importante en el iPod.

    moon2, he repasado el artículo (lo he vuelto a hacer todo desde el principio) y es correcto (he modificado unas cosillas para clarificarlo). No hay que hacer nada más, en principio. Eso sí, mírate este artículo, pues puede que tengas un problema parecido. Allí pone dónde solucionarlo.

  18. Esta guay el tutorial…pero si quereis una distro linux y os asusta la consola slax es vuestra distro. Admite modulos que son facilisimos de instalar: te los bajas y los copias en el pen drive. Arrancas de nuevo y ya estan “instalados”. Para hacer arrancable el pendrive usad syslinux. De hecho hay un tuto en ingles muy facil…mmmmm veo que lo han actualizado desde que lo instale yo : http://www.pendrivelinux.com/2006/09/20/all-in-one-usb-slaxzip

  19. Pingback: Instala Linux en un bolígrafo - elSingular Información gratuita de gadgets y tecnologías
  20. Pingback: Ubuntu Feisty Fawn en PenDrive
  21. Pingback: amangos.com
  22. Pingback: Kernel Source » Blog Archive » GNU/Linux llega cada día más lejos
  23. El fichero es extlinux.conf (no es una errata). Efectivamente, para kubuntu hay que cambiar en dicho fichero los preseed/ubuntu.seed por preseed/kubuntu.seed pero no creo que haya que hacer nada más (hace algún tiempo hice lo mismo con kubuntu y me funcionó).

    Localiza tu fichero mbr.bin mediante “locate mbr.bin” (en algún sitio debe de estar) y haz lo que te comenté antes. Es lo único que se me ocurre que puede ser. Esta noche repetiré los pasos en mi casa para ver si falta algo.

  24. Me sigue sin funcionar, en el arranque se queda igual, haciendo nada.

    No existe el archivo mbr.bin en mi /usr/lib/syslinux. He copiado el isolinux.cfg a extlinux.conf y extlinux.cfg (por si era una errata). También he probado con tu ejemplo cambiando los ubuntus por kubuntus (como sale en el isolinux).

    Uso kubuntu, por lo que me gustaría saber si existe otro sitio que haya que cambiar.

  25. Darkomen, para un disco duro tan grande no creo que haga falta este método (aunque sería válido, supongo).

    Bastaría que quemaras el liveCD de Ubuntu en un CD, arrancases con él, y luego siguieses las instrucciones para instalarlo permanente en el dispositivo USB correspondiente (fíjate bien al hacerlo, aunque es fácil).

    En este caso, el arranque sería con grub, podrías instalar aquellas aplicaciones adicionales que te interesasen de los repositorios, y todo sería mucho más fácil.

  26. Muy buen tutorial, yo tengo pensado isntalar una distro en un disco duro usb de 500gb para hacerlo seguiría este tutorial o algun otro? que me recomiendas.un saludo

  27. ¿Has activado la partición correcta? En mi caso es la 2, la ext3. Comprueba con fdisk -l si aparece marcada con un asterisco (*)

    Si está correcto lo anterior, prueba también a hacer lo siguiente (no sé si es necesario; yo creo que no lo hice), asumiendo que el USB está en el dispositivo /dev/sdb:

    cat /usr/lib/syslinux/mbr.bin > /dev/sdb

    Es para copiar el sector de arranque de syslinux en el USB. Después, vuelve a hacer extlinux -i -z /media/sdb2

    Si te funciona, avísame y modifico el post para especificarlo.

  28. Genial tutorial, felicidades!

    Una distribución como Ubuntu, pero hecha portable, puede dar muuucho juego 😀

    PD: Quiero un boli usb (que no lápiz de memoria o pendrive) como el tuyo, es toda una vacilada 🙂

Los comentarios están cerrados.