He visto muchas recetas por la web para crear un LiveUSB de Ubuntu, pero no todas llegan a buen puerto, pues varían mucho de acuerdo a las versiones de Ubuntu y Syslinux que utilicemos.

En esta ocasión les presento la receta a la que, fruto de varios intentos, he llegado. Finalmente, esta última, terminó siendo mucho más sencilla que las primeras que he probado.

Requisitos:

  • Tener un Ubuntu corriendo
  • Una imagen .iso de una versión de Ubuntu, en mi caso lo hice con ubuntu-8.04-desktop-amd64.iso
  • Un pendrive de al menos 1Gb
  • La versión más reciente de Syslinux (sudo apt-get install syslinux mtools), en mi caso utilicé syslinux-3.63.

A continuación, el paso a paso:

  • Preparé la unidad USB, del Gb que tenía mi pendrive, hice dos particiones, una de 750Mb FAT16 para guardar los archivos de instalación de la imagen iso, y con el resto una partición ext2. Puedes hacerlo con algún editor de particiones como GParted o bien con fdisk:

$ sudo fdisk /dev/sdb

Orden (m para obtener ayuda): Acción de la orden
e   Partición extendida
   p   Partición primaria (1-4)
Número de partición (1-4): Primer cilindro (1-1021, valor predeterminado 1): Se está utilizando el valor predeterminado 1
Último cilindro o +tamaño o +tamañoM o +tamañoK (1-1021, valor predeterminado 1021):
Orden (m para obtener ayuda): Número de partición (1-4):
Orden (m para obtener ayuda): Se ha seleccionado la partición 1
Código hexadecimal (escriba L para ver los códigos): Se ha cambiado el tipo de sistema de la partición 1 por 6 (FAT16)

Orden (m para obtener ayuda): Acción de la orden
e   Partición extendida
   p   Partición primaria (1-4)
Número de partición (1-4): Primer cilindro (752-1021, valor predeterminado 752): Se está utilizando el valor predeterminado 752
Último cilindro o +tamaño o +tamañoM o +tamañoK (752-1021, valor predeterminado 1021): Se está utilizando el valor predeterminado 1021

Orden (m para obtener ayuda):
Disco /dev/sdb: 1021 MB, 1021313024 bytes
32 cabezas, 61 sectores/pista, 1021 cilindros
Unidades = cilindros de 1952 * 512 = 999424 bytes
Identificador de disco: 0x000ac9bf

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sdb1   *           1         751      732945+   6  FAT16
/dev/sdb2             752        1021      263520   83  Linux

Orden (m para obtener ayuda): ¡Se ha modificado la tabla de particiones!

Llamando a ioctl() para volver a leer la tabla de particiones.

ATENCIÓN: Si ha creado o modificado alguna de las
particiones DOS 6.x, consulte la página man de fdisk
para ver información adicional.
Se están sincronizando los discos.

$ sudo fdisk -l

Disco /dev/sdb: 1021 MB, 1021313024 bytes
32 cabezas, 61 sectores/pista, 1021 cilindros
Unidades = cilindros de 1952 * 512 = 999424 bytes
Identificador de disco: 0x000ac9bf

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sdb1   *           1         751      732945+   6  FAT16
/dev/sdb2             752        1021      263520   83  Linux

  • Luego, a ambas particiones creadas, les di formato:

$ sudo mkfs.vfat -F 32 -n ubuntu /dev/sdb1
mkfs.vfat 2.11 (12 Mar 2005)
luciano@luciano-desktop:~$ sudo mkfs.ext2 -b 4096 -L casper-rw /dev/sdb2
mke2fs 1.40.8 (13-Mar-2008)
Etiqueta del sistema de ficheros=casper-rw
Tipo de SO: Linux
Tamaño del bloque=4096 (bitácora=2)
Tamaño del fragmento=4096 (bitácora=2)
65952 nodos i, 65880 bloques
3294 bloques (5.00%) reservados para el superusuario
Primer bloque de datos=0
Número máximo de bloques en el sistema de archivos=70867968
3 bloque de grupos
32568 bloques por grupo, 32568 fragmentos por grupo
21984 nodos i por grupo
Respaldo del superbloque guardado en los bloques:
    32568

Escribiendo las tablas de nodos-i: se finaliza                           
Escribiendo superbloques y la información contable del sistema de ficheros: hecho

Este sistema de ficheros se revisará automáticamente cada 20 montajes o
180 dias, lo que suceda primero.  Utilice tune2fs -c o -i para cambiarlo.
$

  • Monté la unidad USB y la iso en los directorios /mnt/usb y /mnt/ubuntu respectivamente:

$ cd /mnt
$
$ sudo mkdir usb
$ sudo mount /dev/sdb1 /mnt/usb
$
$ sudo mkdir ubuntu
$ sudo mount ubuntu-8.04-desktop-amd64.iso ubuntu -o loop

  • Copié todo el contenido del la imagen iso a la unidad USB (salvo el directorio isolinux y alguno que otro archivo innecesario). Si bien pueden aparecer algunos warnings, porque fat no soporta links simbólicos, no les hagas caso, son inofensivos

$ sudo cp -rf casper dist install pics pool preseed .disk /mnt/usb/

  • Copié, el directorio isolinux cambiando su nombre por syslinux, lo mismo el archivo isolinux/isolinux.cfg por syslinux/syslinux.cfg (en versiones anteriores de Ubuntu y de Syslinux también había que modificar algo el archivo syslinux.cfg, en este caso, no será necesario)

$ sudo cp -rf isolinux  /mnt/usb/syslinux
$
$ cd /mnt/usb/
$ cd syslinux/
$ sudo mv isolinux.cfg  syslinux.cfg

  • Desmonté el dispositivo y le instalé el gestor de booteo syslinux:

$ cd  /home
$ sudo umount /dev/sdb1
$
$ sudo syslinux /dev/sdb1
$ sudo eject /dev/sdb1

  • Finalmente, extraje el dispositivo, reinicié mi equipo y en el setup de mi PC configuré el orden de booteo para que inicie en primer lugar con el disco USB.

Así se termina esta historia, pude bootear del LiveUSB exitosamente y luego instalar mi Ubuntu. Pensar que todo esto empezó por querer reinstalar Ubuntu y por no tener ni un CD ni DVD virgen para quemar.

Basado en: