Creative Commons License
Excepto donde se indique otra cosa, todo el contenido de este lugar está bajo una licencia de Creative Commons.
Taquiones > sysadmin > Convertir un archivo ISO a un archivo IMG

Convertir un archivo ISO a un archivo IMG

¿ Cuál es la diferencia entre los dos formatos ? Elijah lo explica estupendamente: una imagen ISO debe contener un sistema de archivos en formato ISO9660 mientras que un archivo IMG puede contener cualquier tipo de sistemas de archivos o no contener ninguno, incluyendo una tabla de particiones al comienzo del mismo de manera que sea posible grabarlo directamente sobre una memoria USB ó un dispositivo similar.

El método de conversión consiste en extraer los archivos de la imagen ISO, copiarlos a la memoria USB y hacer que esta arranque con la nueva información.

La documentación de la distribución Damn Small Linux - DSL proporciona una guía muy útil del proceso:

  1. Particionar y formatear la unidad USB:

    1. Seleccionar el dispositivo adecuado mediante dmesg (a partir de ahora asumiremos que es /dev/sdX).
    2. Llamar al programa particionador habitual (fdisk ó gparted).
    3. Eliminar todas las particiones del dispositivo.
    4. Crear una partición que cubra todo el dispositivo y cambiarle el tipo a FAT16 por aquello de hacerlo lo más compatible posible. También es posible crearla de tipo W95 FAT32.
    5. Crear un sistema de archivos en formato FAT, teniendo en cuenta que según el tipo de partición será necesario emplear el parámetro -F para indicar el tamaño correcto (16 ó 32 bits).
  2. Restaurar el registro de arranque (MBR) sólo aunque sólo en casos extremos de esta forma:

    1. Rellenar a ceros el sector de arranque:

      # dd if=/dev/zero of=/dev/sdX bs=446 count=1
      
    2. Grabar dicho sector con una imagen de un MBR estándar. Para ello se puede copiar la que se incluye en el paquete syslinux (en /usr/share/syslinux/mbr.bin) ó emplear el programa ms-sys. En cualquier caso bastará con algo como ésto:

      # cat mbr.bin > /dev/sdX
      
  3. Montar la unidad USB en el sistema (si los puntos de montaje no existe crearlos antes):

    # mount /dev/sdX /mnt/flash
    
  4. Montar la imagen ISO:

    # mount image.iso /mnt/iso -o loop
    
  5. Copiar todos los contenidos desde el ISO al USB:

    # cp -vr /mnt/iso/* /mnt/flash/
    
  6. Reorganizar el arranque mediante syslinux:

    1. Renombrar el directorio isolinux a syslinux.
    2. Renombrar el archivo con la configuración isolinux.cfg a syslinux.cfg.
    3. Inspeccionar este archivo y efectuar los retoques necesarios (ver sección particular más abajo).
  7. Desmontar la unidad USB:

    # umount /mnt/flash
    
  8. Instalar el cargador de arranque syslinux (en la partición, ojo):

    # syslinux /dev/sdX1
    
  9. Activar el indicador de arranque de la partición si es necesario (como se puede ver en la siguiente secuencia):

    # fdisk -l /dev/sdX
    
    
    Disco /dev/sdX: 2063 MB, 2063597568 bytes
    64 heads, 62 sectors/track, 1015 cylinders
    Units = cilindros of 3968 * 512 = 2031616 bytes
    Disk identifier: 0x00000000
    
    
    Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
    /dev/sdX1               1        1015     2013729    6  FAT16
    # fdisk /dev/sdX 
    
    
    Orden (m para obtener ayuda): a
    Número de partición (1-4): 1
    
    
    Orden (m para obtener ayuda): w
    ¡Se ha modificado la tabla de particiones!
    
    
    Llamando a ioctl() para volver a leer la tabla de particiones.
    Se están sincronizando los discos.
    #
    
  10. Probar con un virtualizador como qemu:

    # qemu -hda /dev/sdX
    

syslinux

syslinux es un proyecto que abarca varios programas para arrancar ordenadores en el sistema operativo GNU/Linux. La versión que comentamos aquí es la homónima del proyecto, syslinux, y está pensada para que el arranque se haga desde sistemas de archivos FAT.

La configuración del cargador se describe en el archivo syslinux.cfg y puede estar en /syslinux/boot/syslinux.cfg, en /syslinux/syslinux.cfg ó en /syslinux.cfg.