Antes de que se popularizasen los lápices de memoria, cuando los discos ópticos compactos (CD y DVD) eran los soportes de almacenamiento externos más habituales y se comenzaba a utilizar Internet para el intercambio de ficheros, se hizo patente la necesidad de volcar el contenido de tales discos sobre un único archivo con un formato adecuado que permitiera almacenar los datos y metadatos del disco, conservando la estructura original de ficheros y directorios.
De esa forma, el archivo se convertía en una imagen exacta del disco, por lo que se les empezó a llamar imágenes CD (o DVD), desarrollándose varios formatos: ISO
(el más popular), IMG
, BIN/CUE
, NRG
, MDF/MDS
y otros. Estos archivos son fácilmente compartibles y descargables por redes P2P, pudiendo posteriormente ser grabados de nuevo en un disco, lo cual simplifica enormemente la difusión de contenidos concebidos para ser almacenados en discos ópticos como, por ejemplo, una distribución de GNU/Linux; aunque, en la actualidad, es cada vez más habitual grabarlos en dispositivos de almacenamiento de memoria tipo flash (lápices USB y tarjetas SD, principalmente), que permiten ser borrados y reutilizados.
Pero, a veces, puede ser necesario (o, simplemente, queremos) examinar el contenido de un archivo de imagen sin tener que grabarlo en un disco o dispositivo, bien porque queramos realizar alguna comprobación, modificación o lo que sea. Para tales casos existe una solución muy elegante que nos permite acceder directamente a los ficheros y carpetas de la imagen: el comando mount
. Este comando enlaza un directorio con el contenido de un archivo de imagen, de forma que desde el propio directorio podremos ver sus ficheros y navegar a través del árbol de directorios.
Repasemos, mediante ejemplos, cómo aplicar este comando a distintos formatos de imágenes. Antes de realizar el montaje deberemos crear el directorio que asociaremos a la imagen:
$ mkdir -v Debian mkdir: se ha creado el directorio «Debian»
ISO
El procedimiento de montaje es tan sencillo como ejecutar mount
tal como se muestra en el siguiente ejemplo:
$ sudo mount -t iso9660 -o loop debian-testing-amd64-xfce-CD-1.iso Debian mount: dispositivo de bloques /home/aag/debian-testing-amd64-xfce-CD-1.iso está protegido contra escritura; se monta como sólo lectura $ ll Debian total 1,1M dr-xr-xr-x 1 root root 2,0K abr 20 2015 boot/ dr-xr-xr-x 1 root root 2,0K abr 20 2015 css/ lr-xr-xr-x 1 root root 1 abr 20 2015 debian -> ./ dr-xr-xr-x 1 root root 2,0K abr 20 2015 dists/ dr-xr-xr-x 1 root root 4,0K abr 20 2015 doc/ dr-xr-xr-x 1 root root 2,0K abr 20 2015 efi/ dr-xr-xr-x 1 root root 2,0K abr 20 2015 firmware/ -r--r--r-- 1 root root 176K abr 20 2015 g2ldr dr-xr-xr-x 1 root root 2,0K abr 20 2015 install/ dr-xr-xr-x 1 root root 4,0K abr 20 2015 isolinux/ dr-xr-xr-x 1 root root 2,0K abr 20 2015 pics/ dr-xr-xr-x 1 root root 2,0K abr 20 2015 pool/ dr-xr-xr-x 1 root root 2,0K abr 20 2015 tools/ dr-xr-xr-x 1 root root 2,0K abr 20 2015 install.amd/ -r--r--r-- 1 root root 373K abr 20 2015 setup.exe -r--r--r-- 1 root root 8,9K abr 20 2015 README.html -r--r--r-- 1 root root 182K abr 16 2015 README.mirrors.html -r--r--r-- 1 root root 146 abr 20 2015 autorun.inf -r--r--r-- 1 root root 233 abr 20 2015 win32-loader.ini -r--r--r-- 1 root root 8,0K abr 20 2015 g2ldr.mbr -r--r--r-- 1 root root 433 abr 20 2015 README.source -r--r--r-- 1 root root 230K abr 20 2015 md5sum.txt -r--r--r-- 1 root root 96K abr 16 2015 README.mirrors.txt -r--r--r-- 1 root root 5,6K abr 20 2015 README.txt
Como se puede ver, una vez montada la imagen, podemos ver su contenido accediendo al directorio Debian. El único inconveniente es que podemos verlo pero no podremos modificar ninguno de los ficheros que contiene, al haber sido montada en modo de solo lectura. Esto se debe a que los ficheros ISO se montan siempre en modo protegido contra escritura, tal como indica la salida del comando mount
. Por tanto, si se precisa modificar el contenido de algún fichero contenido en la imagen (o borrarlo, o crear uno nuevo), deberemos de seguir los siguientes pasos:
1. copiar el contenido del directorio Debian en un directorio temporal:
$ cp -Rv Debian temp «Debian» -> «temp» «Debian/autorun.inf» -> «temp/autorun.inf» «Debian/boot» -> «temp/boot» «Debian/boot/grub» -> «temp/boot/grub» «Debian/boot/grub/efi.img» -> «temp/boot/grub/efi.img» «Debian/boot/grub/font.pf2» -> «temp/boot/grub/font.pf2» «Debian/boot/grub/grub.cfg» -> «temp/boot/grub/grub.cfg» «Debian/boot/grub/theme» -> «temp/boot/grub/theme» «Debian/boot/grub/theme/1» -> «temp/boot/grub/theme/1» «Debian/boot/grub/theme/1-1» -> «temp/boot/grub/theme/1-1» «Debian/boot/grub/x86_64-efi» -> «temp/boot/grub/x86_64-efi» «Debian/boot/grub/x86_64-efi/acpi.mod» -> «temp/boot/grub/x86_64-efi/acpi.mod» ... «Debian/.disk/cd_type» -> «temp/.disk/cd_type» «Debian/.disk/info» -> «temp/.disk/info» «Debian/.disk/mkisofs» -> «temp/.disk/mkisofs» «Debian/.disk/udeb_include» -> «temp/.disk/udeb_include»
2. acceder al nuevo directorio y hacer las modificaciones que queramos: editar un fichero de texto, borrar un fichero de imagen, … o lo que sea.
$ cd temp ~/temp/$ ll total 1,2M drwxr-xr-x 3 aag aag 4,0K mar 14 13:59 boot/ drwxr-xr-x 2 aag aag 4,0K mar 14 13:59 css/ lrwxrwxrwx 1 aag aag 1 mar 14 13:59 debian -> ./ drwxr-xr-x 3 aag aag 4,0K mar 14 13:59 dists/ drwxr-xr-x 5 aag aag 4,0K mar 14 13:59 doc/ drwxr-xr-x 3 aag aag 4,0K mar 14 13:59 efi/ drwxr-xr-x 2 aag aag 4,0K mar 14 13:59 firmware/ -rw-r--r-- 1 aag aag 176K mar 14 13:59 g2ldr drwxr-xr-x 2 aag aag 4,0K mar 14 13:59 install/ drwxr-xr-x 2 aag aag 4,0K mar 14 13:59 isolinux/ drwxr-xr-x 2 aag aag 4,0K mar 14 13:59 pics/ drwxr-xr-x 3 aag aag 4,0K mar 14 13:59 pool/ drwxr-xr-x 2 aag aag 4,0K mar 14 14:01 tools/ drwxr-xr-x 3 aag aag 4,0K mar 14 13:59 install.amd/ -rw-r--r-- 1 aag aag 373K mar 14 14:01 setup.exe -rw-r--r-- 1 aag aag 8,9K mar 14 14:01 README.html -rw-r--r-- 1 aag aag 182K mar 14 14:01 README.mirrors.html -rw-r--r-- 1 aag aag 146 mar 14 13:59 autorun.inf -rw-r--r-- 1 aag aag 233 mar 14 14:01 win32-loader.ini -rw-r--r-- 1 aag aag 8,0K mar 14 13:59 g2ldr.mbr -rw-r--r-- 1 aag aag 433 mar 14 14:01 README.source -rw-r--r-- 1 aag aag 230K mar 14 13:59 md5sum.txt -rw-r--r-- 1 aag aag 96K mar 14 14:01 README.mirrors.txt -rw-r--r-- 1 aag aag 5,6K mar 14 14:01 README.txt
3. una vez hayamos terminado con las modificaciones, procederemos a crear un nuevo archivo de imagen a partir de los ficheros y directorios contenidos en ese directorio, para ello habrá que instalar la utilidad GenISOimage
y ejecutarla en el terminal:
~/temp/$ cd .. $ genisoimage -o debian-testing-amd64-xfce-mod.iso temp
I: -input-charset not specified, using utf-8 (detected in locale settings) genisoimage: Symlink temp/debian ignored - continuing. genisoimage: Symlink temp/doc/FAQ/html/ch-redistrib.html ignored - continuing. genisoimage: Symlink temp/doc/FAQ/html/ch-software.html ignored - continuing. genisoimage: Symlink temp/doc/FAQ/html/ch-basic_defs.html ignored - continuing. genisoimage: Symlink temp/doc/FAQ/html/ch-customizing.html ignored - continuing. genisoimage: Symlink temp/doc/FAQ/html/index.html ignored - continuing. genisoimage: Symlink temp/doc/FAQ/html/ch-faqinfo.html ignored - continuing. genisoimage: Symlink temp/doc/FAQ/html/footnotes.html ignored - continuing. genisoimage: Symlink temp/doc/FAQ/html/ch-choosing.html ignored - continuing. genisoimage: Symlink temp/doc/FAQ/html/ch-uptodate.html ignored - continuing. genisoimage: Symlink temp/doc/FAQ/html/ch-pkg_basics.html ignored - continuing. genisoimage: Symlink temp/doc/FAQ/html/ch-compat.html ignored - continuing. genisoimage: Symlink temp/doc/FAQ/html/ch-nexttime.html ignored - continuing. genisoimage: Symlink temp/doc/FAQ/html/ch-pkgtools.html ignored - continuing. genisoimage: Symlink temp/doc/FAQ/html/ch-kernel.html ignored - continuing. genisoimage: Symlink temp/doc/FAQ/html/ch-ftparchives.html ignored - continuing. genisoimage: Symlink temp/doc/FAQ/html/ch-getting.html ignored - continuing. genisoimage: Symlink temp/doc/FAQ/html/ch-contributing.html ignored - continuing. genisoimage: Symlink temp/doc/FAQ/html/ch-support.html ignored - continuing. genisoimage: Symlink temp/firmware/firmware-linux-free_3.3_all.deb ignored - continuing. genisoimage: Symlink temp/dists/testing ignored - continuing. Using TUMBL000.DEB;1 for temp/pool/main/t/tumbler/tumbler-common_0.1.30-1_all.deb (tumbler_0.1.30-1+b1_amd64.deb) ... Using GCRY_001.MOD;1 for temp/boot/grub/x86_64-efi/gcry_sha256.mod (gcry_sha1.mod) 1.53% done, estimate finish Mon Mar 14 14:19:57 2016 3.06% done, estimate finish Mon Mar 14 14:19:57 2016 4.59% done, estimate finish Mon Mar 14 14:19:57 2016 6.11% done, estimate finish Mon Mar 14 14:19:57 2016 7.64% done, estimate finish Mon Mar 14 14:19:57 2016 9.17% done, estimate finish Mon Mar 14 14:19:57 2016 10.69% done, estimate finish Mon Mar 14 14:19:57 2016 12.22% done, estimate finish Mon Mar 14 14:20:05 2016 13.75% done, estimate finish Mon Mar 14 14:20:04 2016 15.27% done, estimate finish Mon Mar 14 14:21:02 2016 16.80% done, estimate finish Mon Mar 14 14:20:56 2016 18.33% done, estimate finish Mon Mar 14 14:20:51 2016 19.86% done, estimate finish Mon Mar 14 14:20:47 2016 21.39% done, estimate finish Mon Mar 14 14:20:43 2016 22.91% done, estimate finish Mon Mar 14 14:20:40 2016 24.44% done, estimate finish Mon Mar 14 14:20:37 2016 25.97% done, estimate finish Mon Mar 14 14:20:47 2016 27.50% done, estimate finish Mon Mar 14 14:21:35 2016 29.02% done, estimate finish Mon Mar 14 14:21:30 2016 30.55% done, estimate finish Mon Mar 14 14:21:28 2016 32.07% done, estimate finish Mon Mar 14 14:21:24 2016 33.60% done, estimate finish Mon Mar 14 14:21:20 2016 35.13% done, estimate finish Mon Mar 14 14:21:16 2016 36.66% done, estimate finish Mon Mar 14 14:21:13 2016 38.19% done, estimate finish Mon Mar 14 14:21:10 2016 39.71% done, estimate finish Mon Mar 14 14:21:12 2016 41.24% done, estimate finish Mon Mar 14 14:21:14 2016 42.77% done, estimate finish Mon Mar 14 14:21:46 2016 44.29% done, estimate finish Mon Mar 14 14:21:45 2016 45.82% done, estimate finish Mon Mar 14 14:21:41 2016 47.35% done, estimate finish Mon Mar 14 14:21:38 2016 48.87% done, estimate finish Mon Mar 14 14:21:35 2016 50.40% done, estimate finish Mon Mar 14 14:21:32 2016 51.93% done, estimate finish Mon Mar 14 14:21:29 2016 53.46% done, estimate finish Mon Mar 14 14:21:26 2016 54.98% done, estimate finish Mon Mar 14 14:21:55 2016 56.51% done, estimate finish Mon Mar 14 14:21:53 2016 58.04% done, estimate finish Mon Mar 14 14:21:50 2016 59.56% done, estimate finish Mon Mar 14 14:21:47 2016 61.09% done, estimate finish Mon Mar 14 14:21:45 2016 62.62% done, estimate finish Mon Mar 14 14:21:42 2016 64.15% done, estimate finish Mon Mar 14 14:21:39 2016 65.67% done, estimate finish Mon Mar 14 14:21:37 2016 67.20% done, estimate finish Mon Mar 14 14:21:39 2016 68.73% done, estimate finish Mon Mar 14 14:22:06 2016 70.26% done, estimate finish Mon Mar 14 14:22:03 2016 71.79% done, estimate finish Mon Mar 14 14:22:00 2016 73.31% done, estimate finish Mon Mar 14 14:21:59 2016 74.84% done, estimate finish Mon Mar 14 14:21:57 2016 76.36% done, estimate finish Mon Mar 14 14:21:54 2016 77.89% done, estimate finish Mon Mar 14 14:21:52 2016 79.42% done, estimate finish Mon Mar 14 14:21:50 2016 80.95% done, estimate finish Mon Mar 14 14:22:46 2016 82.47% done, estimate finish Mon Mar 14 14:22:43 2016 84.01% done, estimate finish Mon Mar 14 14:22:40 2016 85.53% done, estimate finish Mon Mar 14 14:22:37 2016 87.06% done, estimate finish Mon Mar 14 14:22:34 2016 88.58% done, estimate finish Mon Mar 14 14:22:31 2016 90.11% done, estimate finish Mon Mar 14 14:22:30 2016 91.64% done, estimate finish Mon Mar 14 14:22:27 2016 93.17% done, estimate finish Mon Mar 14 14:22:29 2016 94.70% done, estimate finish Mon Mar 14 14:22:47 2016 96.22% done, estimate finish Mon Mar 14 14:22:44 2016 97.75% done, estimate finish Mon Mar 14 14:22:41 2016 99.27% done, estimate finish Mon Mar 14 14:22:40 2016 Total translation table size: 0 Total rockridge attributes bytes: 0 Total directory bytes: 1905716 Path table size(bytes): 13476 Max brk space used 3ce000 327379 extents written (639 MB)
4. Una vez hecho esto, obtenemos un nuevo archivo ISO para ser montado o grabado en un lápiz de memoria:
$ ll total 1,3G dr-xr-xr-x 1 root root 4,0K abr 20 2015 Debian/ drwxr-xr-x 15 aag aag 4,0K mar 14 14:01 temp/ -rw------- 1 aag aag 639M abr 22 2015 debian-testing-amd64-xfce-CD-1.iso -rw-r--r-- 1 aag aag 640M mar 14 14:22 debian-testing-amd64-xfce-mod.iso
NRG
El proceso de montaje de una imagen NRG es similar al de un ISO, tan solo habrá que modificar algunos de los parámetros de ejecución:
$ mount -t iso9660 -o loop,offset=307200 debian-testing-amd64-xfce-CD-1.nrg Debian
Pero si surge algún problema al intentar montarlo, o deseamos convertir la imagen NRG al formato ISO, podremos utilizar el comando nrg2iso
que, tras instalarlo, lo ejecutaremos con la siguiente sintaxis:
$ nrg2iso debian-testing-amd64-xfce-CD-1.nrg debian-testing-amd64-xfce-CD-1.iso
Ahora se puede montar el archivo ISO resultante de la misma forma que se hizo en el apartado anterior.
A partir de aquí, para el resto de los formatos de imagen será necesario convertir cada archivo al formato ISO a través de comandos auxiliares, para que pueda ser montado mediante mount
.
BIN/CUE
Las imágenes BIN/CUE (o RAW/CUE, si contienen pistas de audio) serán convertidas al formato ISO mediante el comando bchunk
de la siguiente manera:
$ bchunk debian-testing-amd64-xfce-CD-1.bin debian-testing-amd64-xfce-CD-1.cue debian-testing-amd64-xfce-CD-1.iso
Y posteriormente se podrá montar el archivo ISO con mount
, tal como se ha explicado arriba.
MDF/MDS
Estos archivos de imágenes también necesitan ser convertidos a ISO, esta vez con el comando mdf2iso
, el cual necesita ser instalado previamente. Su sintaxis es:
$ mdf2iso debian-testing-amd64-xfce-CD-1.mdf mdf2iso v0.3.0-2 by Salvatore Santagati Licensed under GPL v2 or later 47% [: >=========:]
El ISO resultante lo montaremos como ya sabemos.
IMG
Los archivos IMG son copias en bruto de datos almacenados en discos ópticos, generadas sobre todo por la aplicación CloneCD
de Windows. Suelen incluir un archivo SUB
, que contiene datos adicionales sobre el formato de disco, y un archivo CCD
, que es un fichero de texto plano con la configuración que describe la disposición del disco.
El comando que convierte del formato IMG a ISO es ccd2iso
, el cual no utiliza los ficheros SUB y CCD. He aquí un ejemplo de uso:
$ ccd2iso debian-testing-amd64-xfce-CD-1.img debian-testing-amd64-xfce-CD-1.iso 283999 sector written Done.
Y una vez tengamos el ISO lo montamos como se explicó al principio.
En otro artículo explicaré cómo realizar todas estas tareas sin tener que recurrir al terminal de comandos, mediante dos aplicaciones gráficas: AcetoneISO y Furius ISO Mount.