Montando y explorando discos ópticos

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.

pendrive y tarjeta memoria

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.
Lector grabador CD

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.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s