Archivos .ISO en Linux

En este artículo, voy a describir la manera más sencilla que existe en Linux para trabajar con imágenes de CDs o DVDs en formato ISO.

Siempre que tenemos que trabajar con este tipo de archivos, lo primero que se nos viene a la cabeza es descargar algún programa que soporte dicho formato, pero en Linux, a pesar de que también los hay, no son necesarios ya que, con tan solo los comandos que nos aporta su flexible y potente consola, podremos realizar todo tipo de operaciones con estos archivos, hoy en día tan usados. Así que dicho esto, nos ponemos manos a la obra para explicar como crear, grabar o incluso montar unidades virtuales con los archivos ISO usando solamente la consola de Linux (Sin programas extra)...

Crear una imagen de CD o DVD de extensión .ISO

Este es el comando más sencillo y rápido para crear un archivo .ISO con la imagen de un CD o DVD.
Para aplicarlo, tras abrir la consola escribiremos este comando:

cat ruta_al_cd > imagen.iso

Hay que tener en cuenta que la "ruta_al_cd" es la ruta al dispositivo, no a la carpeta montada, por lo que lo más probable es que esta sea /dev/cdrom

cat /dev/cdrom > Disco_Ubuntu.iso
cat /dev/cdrw > Disco_SuSe.iso

Por supuesto, el usuario que estemos usando debe tener permisos para usar la unidad del disco que queremos hacer la imagen y permisos de escritura en la ruta donde se va a escribir el archivo .ISO

Existe también otra forma de hacerlo con el comando dd, aunque particularmente me gusta más el comando cat (para gustos hay colores Wink). Con este otro comando sería:

dd if=/dev/cdrom of=/ruta/imagen.iso

Como puede ver, aún siendo una linea muy corta, es algo más complicado de recordar que el comando cat, visto en el otro ejemplo.

También se puede hacer uso de otro comando potentísimo cuyo propósito no es otro que realizar imágenes de discos o directorios. Dicho comando es el mkisofs y es capaz de generar una archivo imagen híbrido ISO9660/JOLIET/HFS con atributos opcionales rock ridge. Veamos un ejemplo de su uso:

mkisofs -o archivo_imagen.iso -Jrv -V Disco_Almacen /home/mi_usuario/Canciones_Lentas

-o --> indica el nombre del archivo .iso que se creará (archivo_imagen.iso en este ejemplo)
-J --> Usar compatibilidad joilet (compatibilidad de lectura en Windows)
-r --> Indica user compatibilidad rock ridge
-v --> verbose mode, Sirve para mostrar los procesos y mensajes en pantalla (Verbose Mode)
-V --> nombre de volumen de disco(Disco_Almacen en este ejemplo)
/home/mi_usuario/Canciones_Lentas --> Esto seria el contenido que queremos que tenga nuestra imagen.

Hay que tener en cuenta que, aunque es bastante más complejo su uso, es un comando ideado exclusivamente para realizar imágenes iso por lo que sus ventajas son realmente grandes.

Dado que la finalidad de este artículo es mostrar formas rápidas de trabajar con archivos ISO, no nos adentraremos más en el uso de este comando ya que precisa de un manual para él solo o, incluso, un manual combinando, junto con él, el cdrdao y/o cdrecord.

Estos dos últimos comandos mencionados (cdrdao y cdrecord) no me voy a adentrar tampoco en su funcionamiento o uso ya que, aun siendo más que dignos de mención, sería extender notablemente este artículo, cosa que no tendría sentido y menos cuando tengo pensado realizar un manual exclusivamente sobre estos comandos y su combinación.

Montar un archivo .ISO en una unidad virtual



Un sistema realmente útil para evitar malgastar CDs o DVDs con datos que sabemos que solo vamos a utilizar muy de vez en cuando, es el uso de las unidades virtuales.

Para quienes no sepan lo que son, simplemente decir, que una unidad virtual es como una unidad física (ya sea un lector de CD o DVD) cuyo contenido no es un disco físico sino un archivo de imagen de disco que, en este caso, será un archivo .ISO.

Estas unidades, una vez montadas, serán exactamente iguales que las unidades físicas de cara a nosotros, es decir, es como tener un lector más.

Una vez vista la teoría pasamos a la práctica mostrando, a continuación, el comando a usar:

mount -t iso9660 -o loop archivo.iso /ruta_a_la_carpeta_de_montaje

En mi caso, tengo una carpeta /media en la que van todos los dispositivos extraibles montados y en la cual tengo una subcarpeta llama isos en la que monto este tipo de unidades. Ahora para que se vea mejor el ejemplo, supongamos que voy a montar en mi sistema la imagen ISO del CD de ubuntu que creamos en el anterior ejemplo:

sudo mount -t iso9660 -o loop ubuntu.iso /media/isos

En este ejemplo, hago uso también del comando sudo, ya que mi usuario no tiene permisos para montar unidades aunque está incluido en el grupo de sudoers para que, añadiendo previamente el comando sudo, pueda realizar esta u otras operaciones. Veamos otro ejemplo cualquiera...

mount -t iso9660 -o loop /home/mi_usuario/ubuntu.iso /home/mi_usuario/Unidad_Virtual

Grabación de archivos .ISO



Para el proceso de grabación vamos a usar el comando cdrecord, por lo que primeramente deberemos realizar un escaneo de nuestros dispositivos ya que habrá que especificar en la linea del comando cual es nuestra grabadora. En este punto hay que tener en cuenta que es un comando pensado en un principio para dispositivos SCSI, por lo que si nuestra grabadora es un dispositivo ATAPI habrá que aplicar el 2do de los comandos mostrados a continuación y previamente activar la emulación SCSI en la unidad:


cdrecord -scanbus --> Comando estándar para escaneo de los buses

cdrecord dev=ATAPI -scanbus -->
Ídem, especificando que el dispositivo es ATAPI


En mi caso, la unidad es SCSI y la salida del comando me muestra lo siguiente:
---------------- Salida del comando cdrecord -scanbus ---------------------------

Cdrecord-ProDVD-ProBD-Clone 2.01.01a33 (i686-pc-linux-gnu) Copyright (C) 1995-2007 J�rg Schilling
Linux sg driver version: 3.5.34
Using libscg version 'schily-0.9'.
scsibus0:
0,0,0 0) 'ATA ' 'ST9160821AS ' '3.AL' Disk
0,1,0 1) *
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
scsibus3:
3,0,0 300) 'Optiarc ' 'DVD RW AD-7560A ' 'DX09' Removable CD-ROM
3,1,0 301) *
3,2,0 302) *
3,3,0 303) *
3,4,0 304) *
3,5,0 305) *
3,6,0 306) *
3,7,0 307) *
-------------- Salida del comando cdrecord -scanbus --------------------


Esto nos sirve para saber que el bus de mi grabadora es el 3,0,0 por lo que ya podemos aplicar el comando tal que así:
cdrecord -v -eject speed=8 dev=3,0,0 archivo.iso

Descripción del comando aplicado:

-v ------------> Mostrar en pantalla los pasos y mensajes (Verbose Mode).
-eject -------> Expulsar el disco al finalizar el proceso.
speed ------> Velocidad a la que se realizará la grabación (8x en el ejemplo)
-dev ---------> Bus del dispositivo (obtenido con la opción -scanbus)
archivo.iso > Nombre del archivo .ISO que queremos grabar.

Como un pequeño apunte, para hacernos la vida más fácil está el comando alias, el cual ya tuvo su propio artículo en esta página. Con este comando podremos "automatizar" parte de estos comandos y sus parámetros (los que siempre sean iguales). En mi caso, tengo creado uno para la creación de los archivos ISO y lo tengo instalado en el archivo .bashrc para que esté habilitado siempre que se abra la consola. Mi comando personalizado es:

alias montaiso='sudo mount -t iso9660 -o loop '

Si observa este alias, verá que tan solo falta la parte que puede variar para la creación de archivos ISO (la ruta a la unidad y el archivo ISO a crear), de esta forma siempre que quiera realizar una imagen ISO solo tendré que poner:

montaiso /dev/cdrom archivo.iso

Y tendré una imagen de mi CD en el archivo.iso.

Con esto ya tenemos la manera de trabajar completamente con archivos ISO desde nuestra consola sin necesidad de descargar ningún programa externo. Ahora bien, aunque la mayoría de las distribuciones de Linux traen todos estos comandos "de serie", si se diese el caso de que su distro no los tenga incluidos porque sea una distro personalizada de algún modo, simplemente use su gestor de paquetes, sea cual sea, porque lo normal es que dichos comandos estén en los repositorios estándar de su distro. Algunos ejemplos de como realizar este paso son:


Distribuciones basadas en paquetes .deb (Ubuntu, debian...etc)


sudo apt-get install nombre_del_programa
sudo apt-get install cdrecord
apt-get install mkisofs --> Sin comando sudo si el usuario es root (Poco aconsejable) o tiene permisos para instalar paquetes.


Distribuciones basadas en paquetes .rpm (SuSe, Fedora...etc)


sudo yum install nombre_del_programa
yum install cdrecord --> Sin comando sudo para usuario root o usuario con permisos de instalación.

Si lo que desea es obtener más información de alguno de estos comandos, también puede recurrir a la orden man, por ejemplo

man mkisofs
man cdrecord

Otro punto a tener en cuenta es que no solo pueden ser ISO los archivos de imágenes de disco que nos encontremos pero la intención de este manual es, no solo tratar los archivos .ISO, sino que también hacerlo solamente con los comandos que vienen incluidos en la propia distribución por lo que el tratamiento de otros archivos de imágenes se saldría de esta categoría ya que precisan instalar otros programas (nrg, mdf/mds...etc) y eso, será en otro manual :-)


No hay comentarios: