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:
Particionar y formatear la unidad USB:
- Seleccionar el dispositivo adecuado mediante
dmesg
(a partir de ahora asumiremos que es/dev/sdX
). - Llamar al programa particionador habitual (
fdisk
ógparted
). - Eliminar todas las particiones del dispositivo.
- 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 tipoW95 FAT32
. - 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).
- Seleccionar el dispositivo adecuado mediante
Restaurar el registro de arranque (MBR) sólo aunque sólo en casos extremos de esta forma:
Rellenar a ceros el sector de arranque:
# dd if=/dev/zero of=/dev/sdX bs=446 count=1
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
Montar la unidad USB en el sistema (si los puntos de montaje no existe crearlos antes):
# mount /dev/sdX /mnt/flash
Montar la imagen ISO:
# mount image.iso /mnt/iso -o loop
Copiar todos los contenidos desde el ISO al USB:
# cp -vr /mnt/iso/* /mnt/flash/
Reorganizar el arranque mediante
syslinux
:- Renombrar el directorio
isolinux
asyslinux
. - Renombrar el archivo con la configuración
isolinux.cfg
asyslinux.cfg
. - Inspeccionar este archivo y efectuar los retoques necesarios (ver sección particular más abajo).
- Renombrar el directorio
Desmontar la unidad USB:
# umount /mnt/flash
Instalar el cargador de arranque
syslinux
(en la partición, ojo):# syslinux /dev/sdX1
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. #
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
.