Anterior Siguiente Indice

6. Programas necesarios para grabar

Casi todos los programas que aquí vamos a mencionar pueden obtenerse de ftp://sunsite.unc.edu/pub/Linux/utils/disk-management/; no obstante, es posible que no estén las últimas versiones de desarrollo, por ello procuro además dar en la sección de cada uno la dirección origen.

Aquí hago una descripción de los programas que vamos a necesitar para elaborar nuestros propios CDs, con ellos haremos las imágenes y las grabaremos; podremos comprobar la diversidad que hay y las ventajas que nos proporcionan.

Sólo voy a describir las últimas versiones de estos programas, que aunque en algunos casos están en fase alpha o de desarrollo (sólo algunos) funcionan perfectamente.

En el caso concreto de cdrecord, resulta imprescindible para poder usar grabadoras IDE, IDE-ATAPI de puerto paralelo y las regrabables, al ser el único que de momento las soporta.

6.1 Programas para creación de las imágenes

La parte más importante es hacer una imagen, pero ¿porqué hay que hacer una imagen? Muy sencillo, la imagen es el molde con el que se crea el futuro CD; y no sólo eso, la imagen nos permite comprobar que el CD va a salir como nosotros queremos, pudiendo evitar errores y ciertas cosas más, difícilmente detectables en el momento de la grabación si la generamos al tiempo de grabar.

Además, podemos montar las imágenes para comprobar cómo han quedado, como se explica en el apartado Otras opciones del Kernel recomendables

Sí, ya lo sé, en windows puedo hacer CDs perfectamente sin necesidad de hacer imágenes, si continúa leyendo, luego explico cómo podrá hacer CDs sin necesidad de hacer imágenes.

mkisofs

Puede obtener este programa de ftp://tsx-11.mit.edu/pub/linux/packages/mkisofs.

La última versión estable disponible es la 1.11 y la de desarrollo es la 1.12b5.

Este es el principal programa que usaremos para crear nuestras imágenes, ya que está hecho especialmente para hacer imágenes ISO9660 a las que añadir extensiones Rock Ridge, o imágenes Joliet (sólo versiones 1.12).

Puede también combinar las dos, es decir, en un solo CD tener los dos sistemas, Rock Ridge y Joliet, de tal forma que el CD sea portable entre los sistemas operativos que usen uno u otro, manteniendo los nombres largos (sólo versión 1.12).

Esta explicación está basada en la versión 1.12a5, de la cual sólo voy a indicar los parámetros que son más utilizados.

La sintaxis de este programa y su uso se explica a continuación:

-a o -all-file

Este parámetro indica que queremos incluir todos los archivos que se encuentran en el directorio especificado, ya que el programa no incluye por defecto los archivos que contengan caracteres ~ y # que son generalmente copias de seguridad creados por la mayoría de editores *nix.

-A o -appid

Este parámetro indica un comentario sobre la aplicación a la que va dirigido el CD, puede ser definido en un archivo .mkisofsrc que se puede crear en el directorio raíz de cada usuario, con el que poder definir por defecto varias cosas. En concreto este parámetro se identifica como APPI= especificando lo que quiera poner mientras tenga una extensión no superior a 128 caracteres. En versiones anteriores a la 1.12 se debe especificar en la línea de comandos con el comentario entre comillas.

-b o -eltorito-boot

Este parámetro sirve para indicarle el nombre y la ruta del archivo que contiene la imagen de arranque que será usada para hacer un CD arrancable según el estándar El Torito. De esta forma creamos un CD arrancable para aquellas BIOS que acepten arrancar desde CD-ROM. La imagen debe tener un tamaño de 720, 1.44 o 2.88 Mbs, la de un diskette de arranque, que contenga por ejemplo el LILO. Ojo que esto no funciona muy bien con CDs SCSI aunque la controladora SCSI lo soporte teóricamente, por culpa generalmente de la controladora, no del estándar.

-c o -eltorito-catalog

Con este parámetro, que está ligado al anterior para hacer CDs arrancable, se especifica dónde se creará en el CDROM el archivo del catálogo para el arranque del CD-ROM. Por defecto lo crea en el directorio raíz de la imagen

-f o -follow-links

Con este parámetro hacemos que los enlaces que se encuentren dentro del directorio maestro especificado no sean tomados como tales, sino como ficheros o directorios reales, lo cual nos permite incluir en el CD cosas que no estén en el mismo sistema de ficheros donde tenemos el master, es decir, le especificamos que siga los enlaces que contenga.

-help

Nos muestra la ayuda del programa, muy útil si no nos acordamos de alguno de los parámetros.

-i

Sirve para añadir archivos que no estén en el directorio o subdirectorio que hayamos indicado para hacer la imagen, para su adición a la imagen del CD. Esta opción está temporalmente deshabilitada, y parece ser que da problemas, por lo que está en espera de ser reescrita.

-J

Gracias a esta opción podremos crear CDs con sistema de ficheros Joliet. No incluida en versiones anteriores a la 1.12.

-l

Gracias a este parámetro podremos establecer el modo de compatibilidad de ficheros de 32 caracteres para aquellos sistemas que no aceptan la longitud de los ficheros para los que está grabado el CD. Usar con cuidado.

-m o -exclude

Con este parámetro indicamos un patrón de archivos que no queramos incluir en el CD, que puedan encontrarse dentro de algún subdirectorio en la ruta desde la que vamos a hacer la imagen (ficheros core etc...) Se pueden usar comodines o nombre completo.

-o o -output

Con esta opción indicamos el nombre que le queremos dar al fichero, incluida su ruta, que contendrá la imagen, o el fichero de dispositivo correspondiente a la partición donde queremos volcarla.

El volcar las imágenes (sólo de datos) a partición es muy recomendable para equipos lentos; dicha partición no ha de tener formato alguno, por ello la lectura es más rápida, ocurre como con la partición de swap.

Si utilizamos volcado a partición, conviene «resetearla» antes de generar una imagen nueva con el comando:

dd if=/dev/zero of=/dev/sda1

Suponiendo que sda1 sea donde queremos volcar la imagen; OJO con especificar una partición equivocada, o se irá a hacer gárgaras...

-p o -preparer

Este es complementario al parámetro -A, con él podremos indicar el autor del CD, Tiene una extensión máxima de 128 caracteres. Corresponde al parámetro PREP= en el archivo .mkisofsrc.

-print-size

Muestra por pantalla el tamaño estimado que ocupará la imagen, sin hacer nada más.

-P o -publisher

Especifica el editor del CD. Su longitud máxima son 128 caracteres. En el archivo .mkisofsrc se identifica como PUBL=.

-quiet

No muestra mensajes por pantalla.

-R

Genera un sistema de ficheros con extensiones Rock Ridge. Esta es la opción principal para generarlo, manteniendo los permisos tal y como estén.

-r

Esta opción es como la anterior pero resetea los permisos de modo que todos los usuarios puedan acceder al CD por completo.

-T o -translation-table

Con esta opción generamos los archivos de transcripción, llamados TRANS.TBL en cada directorio del CD-ROM, que contendrán todas las transcripciones de los nombres de fichero para que se puedan ver por ejemplo en un sistema DOS (de tipo de nombres de fichero 8+3) y con su longitud correspondiente en el sistema Rock Ridge. Cuando utilizamos la opción -l los archivos tendrán nombres de 32 caracteres y no de 8+3.

-v

Nos muestra la ayuda y la versión del programa. Y mientras se genera la imagen nos va mostrando el porcentaje de la imagen generada y una estimación de tiempo para terminar. Muy útil.

-V

Esta opción nos permite darle un nombre de volumen al CD para identificarlo. En el archivo .mkisofsrc se especifica con el parámetro VOLI= con una extensión máxima de 32 caracteres.

-x

Esta opción nos permite excluir un directorio específico que se encuentre dentro de la ruta de origen. Puede excluir hasta un máximo de 1000 directorios, ojo que hay que especificar el parámetro antes de cada directorio, tantas veces como directorios a excluir haya:

mkisofs ... -x estedirectoriono -x yestetampoco -x nieste

Estos son los parámetros más utilizados, si quiere más información o más posibilidades siempre puede consultar la página del manual. Ahora unos pocos ejemplos de cómo funcionan algunos parámetros:

Para generar un sistema de ficheros Rock Ridge simplemente tenemos hacer esto:

mkisofs -a -r -T -o /cd/imagen.iso /ficheros

Aquí se indica un sistema de ficheros Rock Ridge al que se le incluyen todos los archivos que se encuentren en el directorio /ficheros, generando archivos TRANS.TBL, para el archivo de imagen /cd/imagen.iso.

Para que al crear la imagen se establezca el nombre de volumen, la identificación, el editor y la aplicación del CD, hay dos métodos, uno consiste en crear un archivo llamado .mkisofsrc en nuestro directorio personal. Recuerdo que este archivo sólo sirve para la versión 1.12, con una sintaxis como ésta:

VOLI=

El nombre de volumen.

PUBL=

Cualquier cosa que quiera poner, normalmente un pequeña descripción del CD.

PREP=

Aquí puede poner sus datos o cualquier cosa para identificar el CD como suyo.

APPI=

Aquí puede poner una descripción del objetivo de este CD o su destino.

O bien puede especificarlo en la línea de comandos así:

mkisofs -a -R -l -T -V "Volumen" -P "descripción CD" -p  "preparador" \
 -A "Aplicación" -o imagen.iso /ficheros

Este único comando se ha introducido en dos líneas, detrás del carácter \ hay que teclear Enter, y teclear el resto. Se ha hecho así por motivos de formato de este documento.

En él podemos observar, aparte de cómo poner el nombre de volumen al CD y otras cosas, que estamos haciendo un CD con el modo de compatibilidad para otros sistemas de 32 caracteres, tomando los permisos y la identificación que tiene cada archivo en el disco.

Un ejemplo de cómo crear un sistema de ficheros con Joliet es:

mkisofs -a -J -f -m '*.o' -m core -x /master/excluir -o /cd/imagen.iso /master

En este sistema de ficheros Joliet hemos excluido todos los archivos que correspondan con la descripción *.o y core con la opción -m, la opción -f indica que los enlaces que se encuentren serán tomados como los archivos o directorios a los que apuntan. Por último, excluimos el directorio excluir que se encuentra en la ruta de origen desde donde queremos hacer la imagen.

Y por último un sistema de ficheros con Rock Ridge y Joliet, que recuerdo que sólo se puede hacer en la versión 1.12:

mkisofs -a -J -f -R -m '*.o' -m core -x /master/excluir -o /cd/imagen.iso /master

Para hacer un CD arrancable (para arrancar con él es necesario que la BIOS soporte arranque desde unidades CD-ROM) necesitamos la imagen de un disquete de arranque de 720KB, 1.44MB o 2.88MB, de MS-DOS o Linux según queramos, que podemos encontrar en varios sitios ya hechos o hacernos nosotros mismos. Una vez tenemos la imagen, la ponemos dentro del directorio en donde se encuentran los archivos desde los que vamos a hacer la imagen y procedemos a lo siguiente:

mkisofs -a -b /cdboot/eltorito.img -c /cdboot/catalogo -R -T -o imagen.iso /master

Nótese que a los parámetros -b y -c le especificamos lo que parece un path absoluto, pero el directorio /cdboot no se encuentra en el directorio raíz de su disco duro, sino que en realidad es un subdirectorio de /master; esto es así porque mkisofs para este parámetro se sitúa como si estuviera ya dentro del CD.

mkhfs

Puede obtener este programa de ftp://ftp.ge.ucl.ac.uk/pub/mkhfs.

Es su homólogo para el sistema de ficheros de los mac, HFS, no lo he llegado a probar todavía pero seguro que funciona bien. Su uso es muy sencillo y no tiene mucha complicación.

mkhybrid

Puede obtener este programa de ftp://ftp.ge.ucl.ac.uk/pub/mkhfs.

Es la mezcla de los dos anteriores, la ultima versión usa código del mkisofs 1.12 para mejor soporte de Joliet. La ayuda parece exactamente la del mkisofs, salvo que incluye las siguientes opciones para añadir el sistema de ficheros de los mac:

-g o -apple

Añade la extensión ISO9660 de Apple, para la compatibilidad con el estándar.

-h o -hfs

Crea el sistema HFS híbrido para la extensión ISO9660.

-probe

Prueba todos los archivos para el sistema Unix/HFS.

-mac-name

Crea todos los nombres según el estilo de los mac para ISO9660/Joliet/Rock Ridge

-no-mac-name

Evita lo anterior para los archivos Unix/Mac

mke2fs

¿Cómo? ¡Pero si este programa sirve para crear sistemas de ficheros en el formato nativo de Linux, el ext2!

Pues sí, es posible crear CD-Roms en formato ext2, que por supuesto no podrán leerse en sistemas que no dispongan de algún tipo de soporte para leer este tipo de sistema de archivos, básicamente Linux.

Su utilidad dependerá de la creatividad de cada uno ;)

Para ello, hay que seguir el siguiente procedimiento:

  1. Primero hay que calcular el tamaño máximo que podemos usar en una imagen para aprovechar la mayor cantidad de datos en el CD es fácil y es una operación sencilla en la que intervienen dos programas y en la que no hay ni que sacar la calculadora. Primero utilizamos el cdrecord en su versión de desarrollo 1.8 de la siguiente forma:
    # cdrecord -v dev=3,0 -atip
    Cdrecord release 1.8a29 Copyright (C) 1995-1999 Jörg Schilling
    TOC Type: 1 = CD-ROM
    scsidev: '3,0'
    scsibus: 0 target: 3 lun: 0
    Using libscg version 'schily-0.1'
    atapi: 0
    Device type    : Removable CD-ROM
    Version        : 2
    Response Format: 2
    Capabilities   :
    Vendor_info    : 'YAMAHA  '
    Identifikation : 'CRW4260         '
    Revision       : '1.0q'
    Device seems to be: Generic mmc CD-RW.
    Using generic SCSI-3/mmc CD-R driver (mmc_cdr).
    Driver flags   : SWABAUDIO
    Drive buf size : 1176000 = 1148 KB
    Current Secsize: 512
    ATIP info from disk:
      Indicated writing power: 5
      Is not unrestricted
      Is not erasable
      ATIP start of lead in:  -11324 (97:31/01)
      ATIP start of lead out: 359849 (79:59/74)
    Disk type: Long strategy type (Cyanine, AZO or similar)
    Manuf. index: 22
    Manufacturer: Ritek Co.
    
    Una vez obtenida esta información nos fijamos en la siguiente linea:
      ATIP start of lead out: 359849 (79:59/74)
    
    de la que nos interesa el numero 359849 el cual al multiplicarse por 2048 nos dará el tamaño máximo de la imagen que puede ser grabada en el CD. Si se fijan el tamaño concuerda con un CD 80 minutos que corresponde exactamente a 702 MegaBytes absolutos del tamaño de la imagen.
  2. Crear un fichero imagen vacío; con los datos anteriores:
    dd if=/dev/zero of=imagen-vacia.ext2 bs=2048 count=359849
    
  3. Formatearlo:
    mke2fs -m 0 -b 2048 imagen-vacia.ext2
    
    mke2fs advertirá de que imagen-vacia.ext2 no es un fichero de dispositivo de bloque, y le pedirá confirmación:
    imagen-vacia.ext2 is not a block special device.
    Proceed anyway? (y,n) y
    
  4. Montarlo, mediante loopback, en lo que va a ser nuestro directorio «maestro»:
    mount -o loop imagen-vacia.ext2 /mnt/master
    
  5. Copiamos a él los ficheros que queramos, si por ejemplo queremos hacer una réplica de /etc :
    cd /etc
    find | cpio -pdamvu /mnt/master
    
  6. Lo desmontamos, y grabamos normalmente.

Si queremos montar un CD-Rom de este tipo, habrá que especificarle a mount que el tipo de sistema de ficheros es ext2, y de sólo lectura:

mount -t ext2 -o ro /dev/cdrom /mnt/cdrom

si queremos incluirlo en /etc/fstab, habrá que indicar además de su tipo de sistema de ficheros, y de ser sólo lectura, que no sea comprobado:

/dev/cdrom      /mnt/cdrom      ext2    defaults,ro     0 0

El último 0 es el que hace que fsck no lo compruebe en cada arranque.

6.2 Software de extracción de audio

Aviso: La mayoría de las grabadoras requieren que el orden de palabra de los ficheros de audio en formato CDDA o PCM raw sea Big Endian, salvo las Yamaha, Sony y recientemente las últimas grabadoras que cumplen el estándar SCSI-3/MMC, que lo necesitan Little Endian.

Casi todos los programas extractores de CD-Audio extraen por defecto en Big Endian.

Si graba ficheros de audio con el orden de palabra equivocado para su grabadora, cuando intente escuchar ese CD no oirá más que un horripilante ruido, similar al sonido de una televisión sin sintonizar.

Dependiendo del software que utilice para grabar, esto se puede abordar de dos maneras:

Otro concepto, que aunque es mencionado más veces posteriormente a lo largo del documento, quiero recalcar, y que necesitará especialmente con los extractores, es el del dispositivo genérico SCSI, que es explicado en la sección Dispositivos genéricos.

readcdda

Este programa es un poco difícil de encontrar, ya que las versiones disponibles son modificaciones o portings del original a Linux.

Uno de los paquetes que lo trae modificado es el X-CDRoast, que es de donde lo he obtenido, ver sección X-CD-Roast.

No hay página man disponible, y tampoco certifico que los comandos que aquí explico correspondan a la versión que Vd. pueda conseguir; no obstante lo expongo aquí por su excepcional calidad y fiabilidad. Eso sí, sólo funciona con dispositivos SCSI.

Su sintaxis es un poco pesada, pero como decía antes, vale la pena.

El orden de palabra de los ficheros cdda creados con readcdda es Big Endian por defecto.

-D dispositivo

Para especificar el dispositivo genérico de la unidad con la que vamos a extraer.

-B dispositivo

Dispositivo de bloque de la unidad con la que vamos a extraer, son válidos tanto dispositivos /dev/srX como /dev/scdX.

-t

Desde qué pista a extraer

-z

Hasta qué pista extraer (inclusive)

-o

desplazamiento del principio de la pista

-s

desplazamiento del final de la pista

-d

Tiempo total de grabación

-S

Velocidad de extracción.

-v

imprimir información sobre el CD.

-x

Formato de salida Little Endian

Así que un ejemplo, utilizando el CDROM SCSI que estuviera en el ID SCSI 3, que fuese el primer CDROM disponible, extrayendo de la pista 1 a la 15, a velocidad 6x en un solo fichero .cdr, sería:

readcdda -D /dev/sgd -B /dev/scd0 -t 1 -z 15 -o 0 -s 0 -S 6 audio.cdr

Esto es un poco latoso si queremos que cada pista tenga su fichero, para ello podemos utilizar un bucle:

for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
readcdda -D /dev/sgd -B /dev/scd0 -t $i -z $i -o 0 -s 0 -S 6 audio.$i.cdr ;
done

cdda2wav

Este programa es más reciente, y permite extraer de CDROMs IDE si éstos soportan extracción. Puede obtenerlo de ftp://ftp.gwdg.de/pub/linux/misc/cdda2wav/. También se puede encontrar incluido en el mismo paquete de las últimas versiones de cdrecord.

Comentaré sólo las opciones más habituales:

-D

Dispositivo genérico de la unidad lectora; /dev/sgX o 0,1,0 si es SCSI; si es IDE, con el fichero de dispositivo de bloque correspondiente: /dev/hdb por ejemplo para un CD esclavo del bus primario, o el enlace simbólico que apunte al apropiado.

-A

Dispositivo auxiliar: será un /dev/scdX si el lector es SCSI o el mismo que le especificamos en -D si es IDE.

-I

Tipo de interfaz; generic_scsi para dispositivos SCSI o cooked_ioctl para IDE.

-x

Extracción a calidad CD: muestreo a 44100Hz, 16 bits estéreo. Esta es la opción por defecto, asi que si quiere estas opciones no tendrá que volver a ponerlas.

-t primera+ultima

Especificamos la pista o rango de pistas a extraer.

-O

Formato del fichero de salida, opciones validas útiles pueden ser raw para formato cdr (CDDA) o wav.

-E

Orden de la palabra binaria: big para Big Endian, little para Little Endian.

-B

Extraer cada pista a un fichero separado.

-S número

Velocidad de extracción.

-P

Desactivar overlap (utilizar si se obtienen mensajes de error tipo increase overlap (X) or decrease SYNC_SIZE (X).

-H

No crear ficheros informativos (.inf) por cada fichero de audio creado.

-e

Permite la salida directa al dispositivo de audio del ordenador. Por defecto /dev/dsp.

-K dispositivo

Cambia el dispositivo de audio por defecto /dev/dsp por que se le especifique.

-q

No muesta información alguna mientras se realiza el proceso de extracción.

Supongamos que usamos un lector SCSI, que tiene el ID 2 del bus SCSI, que queremos extraer las pistas de la 3 a la 8, en formato CDDA, Big Endian (por defecto), en ficheros con el patrón audio_*.cdr separados, con sus correspondientes ficheros informativos:

cdda2wav -D /dev/sgb -A /dev/scd0 -I generic_scsi -x -t 3+8 -B -O cdr -S 10 audio

tambien se puede escribir de forma más abreviada de la siguiente forma:

cdda2wav -D 0,2,0 -I generic_scsi -x -t 3+8 -B -O cdr

Si extraemos las pistas con la opción -O wav por defecto serán Little Endian.

En la versión 1.0 de cdda2wav y en adelante para extraer las pistas de audio directamente, aunque hayan otros tipos de pistas en el disco, como por ejemplo una de datos al principio o al final, se ha de poner tan sólo esto:

cdda2wav -D 0,2,0 -I generic_scsi -B

al mismo tiempo, esto nos puede servir de ejemplo de como se pueden extraer pistas para la sección DAO con cdrecord.

Existe una variante del cdda2wav, llamada cdparanoia, de rendimiento muchísimo menor, pero que como su nombre indica, es muy paranoica con la calidad de las pistas extraídas, puede resultar útil con CDs muy estropeados.

6.3 Software de grabación

cdrecord

La página principal de cdrecord es
http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdrecord.html

Puede obtenerlo por FTP de ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/.

Este programa es más avanzado y actual que cdwrite, al estar en desarrollo e incorporar soporte para las novedades del mercado actual, a pesar de no soportar algunas unidades antiguas que sí lo hace cdwrite.

La mayor ventaja de este programa es que funciona perfectamente con las grabadoras IDE (con emulación SCSI activada, por supuesto) y SCSI, incluyendo más opciones como el soporte para regrabables y sus comandos específicos, como borrar un CD-RW, una partición, etc.

Permite visualizar las tablas de contenido (TOC, Table Of Contents), que es donde se almacena la información sobre las pistas y el tamaño de las mismas.

Esta tabla la genera el programa y se tiene que grabar para que se pueda leer el CD, ya sea cuando haga un CD multisesión o al hacer un CD normal o de CD-Audio.

También puede grabar pistas CDI, en modo normal de datos data 1 y data 2, multisesión xa1 y xa2 de datos, y audio.

Otra función muy útil es que puede realizar ciertas pruebas a la unidad para comprobar sus capacidades y compatibilidad, etc.

Los comandos que más nos pueden interesar se detallan a continuación:

-version

Muestra la versión del programa. Recomendada la versión 1.6.1 final, las que llevan a despues del número son alphas y no es recomendable usarlas. Para unidades tanto IDE como SCSI se recomienda la 1.8aXX.

-v

Muestra información mientras se ejecuta el programa para conocer el estado de la grabación (Muy recomendable ya que indica los Mb grabados y el porcentaje de llenado del buffer).

-V

Muestra los comandos SCSI mientras se ejecuta el programa.

-debug

Muestra mensajes para encontrar posibles fallos.

dev=destino

Especifica la situación de la grabadora en el sistema SCSI. Hay que especificarle el bus scsi, el ID SCSI del dispositivo, y el LUN SCSI (Logical Unit Number, valor variable sólo si se emplea por ejemplo un lector múltiple de CDs, en donde 0 identificaría a la primera bandeja, 1 a la segunda, etc).

Un ejemplo frecuente sería 0,4,0 para el primer bus SCSI, el ID SCSI 4 y el LUN de todo dispositivo no múltiple, 0. Si usamos la emulación SCSI o una unidad de puerto paralelo, siempre será 0,0,0.

-dummy

Con este parámetro indicamos que vamos a hacer un test de la unidad y del sistema, simulando una grabación para comprobar si se realiza adecuadamente. Durante este test el láser de la grabadora está desactivado por lo que no correremos el riesgo de perder un CD.

-multi

Esta opción es para indicar que vamos a hacer un CD multisesión, es decir con varias pistas de datos. Este parámetro no puede ser usado en unidades Sony ya que no llevan soporte hardware para CD-ROM modo XA 2 por lo que se deberá de usar el parámetro -data para este fin.

-msinfo

Esta opción nos permite ver la información que hay grabada en un CD multisesión o con al menos una pista, mientras el CD no se haya cerrado.

-toc

Muestra información sobre la tabla de contenidos del CD, este parámetro puede ser usado tanto en las grabadoras como en los lectores.

-fix

Esta opción es para cerrar un CD que no se haya cerrado antes, si después de haber grabado los datos no se ha escrito la tabla de contenidos. De momento esto no funciona con las unidades TEAC.

-nofix

Esta opción, usada en la línea de comandos es para que al grabar un CD no se escriba la tabla de contenidos, para que no lo cierre. Puede ser útil para grabar un CD por pasos o para grabar un CD-Audio ya que hay lectores de CD-Audio que pueden leer CDs sin cerrar, siempre y cuando no contengan además datos. Los CDs de datos sin cerrar no pueden ser usados por unidades lectoras.

-load

Esta opción es para cerrar la bandeja, luego sale del programa.

-eject

Esta opción permite expulsar el CD una vez grabado, hay unidades como las Philips o las Yamaha que deben hacer esto.

speed=X

Esta opción es para indicarle a la unidad la velocidad a la que debe grabar. El número especifica el multiplicador de 150Kb/s para datos y 172Kb/s para audio.

blank=opcion

Esta opción borra un CD-RW y sale, o bien borra antes de continuar con una grabación. Sólo puede ser usada por unidades regrabables y con discos CD-RW. Las opciones se describen a continuación:

fs=

Esta opción especifica el buffer fifo para almacenamiento intermedio de los datos, a fin de hacerlos llegar a la grabadora sin retraso. Para facilitar las cosas puede especificar este buffer con un número seguido de b para indicarle bytes, k para kilobytes, m para megabytes.

Por defecto tiene un buffer de 4 Mb. La recomendación para el tamaño del buffer es de entre 4 y 32 Megas, debiendo ser como mínimo igual al tamaño de buffer interno de la grabadora y como máximo no superior a la mitad de la RAM física del ordenador.

Lo normal es que no necesite poner más de 8 MB que es lo que yo recomiendo. Si aún así aparecen mensajes como fifo empty count, tiene problemas de configuración o hardware. Ej: fs=8m.

driver=

Esta opción es para especificarle un driver concreto; para ver la lista de todos los drivers simplemente especifique driver=help. Si no se indica opción, cdrecord tratará de encontrar el driver más apropiado para la unidad. Si no lo consigue, tendrá que indicárselo; sepa que si el driver no es absolutamente compatible corre un riesgo muy grande de perder el CD.

-checkdrive

Esta opción busca el driver que corresponda a su unidad y termina la ejecución.

-prcap

Esta opción imprime las posibilidades de las unidades que cumplan el estándar SCSI-3/mmc y sale.

-inq

Esta opción hace un examen de la unidad, imprime los resultados en pantalla y sale.

-scanbus

Esta opción examina el bus SCSI en busca de unidades. Sirve para buscar nuestra unidad.

-reset

Esta opción resetea el bus SCSI donde se esté nuestra grabadora.

-audio

Detrás de esta opción se indican los nombres de los archivos de sonido que serán grabados como pistas de audio, siempre y cuando los archivos tengan una calidad de muestreo 44.100 Khz a 16 Bits, estéreo en alguna variante PCM; si no son así, serán rechazados por cdrecord. Acepta formato CDDA (tanto .cdda como .cdr son extensiones válidas), .wav, .au y .raw.

cdrecord, si no se le especifica lo contrario, asume que el orden de palabra es Big Endian, y convertirá automáticamente a Little Endian si detecta que la grabadora lo necesita.

-data

Tras de esta opción se indica el nombre del archivo que corresponde a la imagen ISO9660 que anteriormente hemos creado con mkisofs u otro de los anteriormente descritos. Esta opción viene por defecto, lo que quiere decir que si no la indicamos grabaremos de esta forma.

-mode2

Si esta opción esta presente, todas las pistas de datos que la sigan se grabarán en modo 2.

-xa1

Si esta opción esta presente, todas las pistas que la sigan se grabarán en modo XA 1.

-xa2

Si esta opción esta presente, todas las pistas que la sigan se grabaran en modo XA 2.

-cdi

Si esta opción esta presente, todas las pistas que la sigan se grabaran en CDI.

Estos son los comandos que más se usan, para ampliar información puede acudir al manual. Ahora unos ejemplos para que la cosa quede mas clara:

cdrecord -scanbus
cdrecord dev=0,0,0 -checkdrive
cdrecord dev=0,0,0 -prcap
cdrecord dev=0,0,0 -inq
cdrecord dev=0,0,0 -toc
cdrecord dev=0,0,0 -msinfo

Así se realizan los test; en el primero se escanea el bus SCSI para ver nuestra unidad, en los demás se toma que tenemos la unidad en el dispositivo que corresponde al bus 0, id 0 y lun 0 para hacerle los test a los que corresponde la explicación anterior.

cdrecord dev=0,0,0 fs=8m speed=2 -nofix -eject -xa1 imagen.iso -audio audio1.wav audio2.cdda audio3.au

Aquí podemos ver que le hemos puesto 8 Mb al buffer fifo, especificado que grabe a doble velocidad, que expulse el CD una vez terminado, que la primera pista es una imagen de datos en formato multisesión XA 1 y las siguientes pistas serán de audio (este programa puede grabar varios formatos de audio como el .wav de Microsoft, el .cdda, el PCM en bruto o .raw y el .au siempre y cuando tengan una calidad de muestreo de 44100 Hz a 16 bits, en estéreo). Y al final no será escrita la TOC por lo que para hacerlo tenemos la siguiente línea:

cdrecord dev=0,0,0 -fix

Para grabar una sola pista de datos podemos usar esto:

cdrecord dev=0,0,0 fs=8m speed=2 -eject imagen.iso

Ya que como se dijo antes no hacía falta especificar el parámetro -data, que es el asumido por defecto.

Las nuevas opciones que incluye el cdrecord 1.8 se describen en su sección.

Parámetros configurables permanentemente de cdrecord

Como puede observar, es un poco latoso el tener que especificar datos no cambiantes una y otra vez, como por ejemplo dónde se encuentra la grabadora, o la velocidad de grabación ya que generalmente grabará casi siempre al máximo de velocidad.

Para no tener que especificarlo siempre en la línea de comandos, cdrecord provee la posibilidad de establecer dichos parámetros por defecto, mediante las variables de entorno CDR_DEVICE, CDR_SPEED y CDR_FIFOSIZE.

Supongamos que su grabadora está en el primer bus SCSI, y tiene el ID 4. (El LUN siempre va a ser 0). Y que quiere que la velocidad de grabación por defecto, a menos de que se especifique lo contrario mediante parámetros de la línea de comandos, va a ser a doble velocidad (2x) y el buffer de datos FIFO sea de 16 megabytes.

Estableceríamos dichas variables de entorno mediante la inserción, generalmente en el fichero /etc/profile, de las siguientes líneas, suponiendo que utilice bash como intérprete de comandos:

CDR_SPEED=2
CDR_DEVICE=0,4,0
CDR_FIFOSIZE=16m
export CDR_SPEED CDR_DEVICE CDR_FIFOSIZE

Dichas variables no estarán disponibles hasta que el sistema relea el fichero /etc/profile, lo mejor es reiniciar el terminal con un logout o bien recargando el archivo con source /etc/profile. Si esto no funciona, reinicie el sistema para salir de dudas.

Grabacion sin imagen

Ahora viene algo que puede interesar a más de uno, hacer un CD directamente desde el disco sin necesidad de hacer una imagen previa.

He de advertir sobre este procedimiento y es que no se debe, por ninguna circunstancia, acceder al disco que contenga el directorio maestro con los ficheros a partir de los que se está generando una imagen directa al CD, ya que cualquier mínimo retraso en la transferencia de datos puede ocasionar que no se grabe el CD correctamente a pesar de que durante la grabación no aparezcan errores.

El problema de que no se genere correctamente la imagen puede no radicar necesariamente en que su disco duro sea lento, hay otros factores como la memoria disponible: tenga en cuenta que por ejemplo mkisofs necesita al menos 12MB de memoria para generar las extensiones Rock Ridge.

Repito, no acceda al disco duro maestro durante la grabación, peligro de hacer un CD desde el que no se pueda leer ningún dato sano, aunque aparentemente se haya grabado bien; esto se puede comprobar editando un archivo de texto y viendo como parte del archivo anterior o los gaps se han introducido en ellos.

Así mismo recomiendo realizar esta operación sólo con versiones de cdrecord superiores o iguales a la 1.6.1, y 1.12b5 de mkisofs , ya que he comprobado que funcionan y se entienden mucho mejor, con mucho menor peligro de realizar CDs corruptos.

Antes de grabar el CD debe realizar primero la siguiente operación:

mkisofs -r -T -l -print-size -f /files

la cual nos facilitará un número, este número se lo deberemos de pasar en un parámetro al cdrecord para que nos reconozca el tamaño de la imagen a grabar, ya que si no, cdrecord no tiene forma de saber cuál es el tamaño de la imagen. De esta forma, si por ejemplo, mkisofs nos mostrará la siguiente línea:

Total extents scheduled to be written = 290699

Para que cdrecord reconozca el tamaño de la imagen a grabar:

nice --20 mkisofs -r -T -l -f /files | nice --20 cdrecord fs=16m \
tsize=290699*2048 -eject -

O bien para multisesión:

nice --20 mkisofs -r -T -l -f /files | nice --20 cdrecord fs=16m \
tsize=290699*2048 -eject -multi - -audio audio1.wav audio2.wav audio3.au

Nótese que no especificamos ni la localización SCSI de la grabadora, ni la velocidad de grabación, ya que la hemos establecido con las variables de entorno mencionadas anteriormente.

Seguramente se preguntará el porqué del nice --20 que hay delante de cada uno de los programas. El comando nice sirve para asignar la prioridad de ejecución, y en este caso concreto establecemos la máxima posible.

Se preguntará por qué en la opción tsize del cdrecord multiplico por 2048 la cantidad dada por el mkisofs. La razón es muy simple, a partir de la version 1.6.1 y 1.8 de cdrecord, hay que pasarle el tamaño en bytes de la imagen, y debido a que realiza la multiplicación él mismo, sólo lo tenemos que multiplicar por el tamaño de cada sector de un CD y listo.

Use esto con cuidado.

Y para terminar voy a indicar cómo usar el programa con las grabadoras IDE/ATAPI y de puerto paralelo, que por ejemplo al ejecutar la siguiente linea nos muestre algo como lo siguiente:

# cdrecord -scanbus
Cdrecord release 1.6 Copyright (C) 1995-1998 Jörg Schilling
scsibus0:
                  0) 'HP      ' 'CD-Writer+ 7200 ' '3.01' Removable CD-ROM
                  1) *
                  2) *
                  3) *
                  4) *
                  5) *
                  6) *
                  7) *

Así es como ve cdrecord nuestra grabadora, ya sea interna o externa, por lo que para indicarle cómo acceder a nuestra grabadora tendremos que especificar el parámetro dev=0,0,0.

cdrecord dev=0,0,0 speed=2 fs=16m -v -dummy image.raw

Recomiendo usar la grabadora con una version de cdrecord 1.6.1, aunque como se aprecia en el escaneado de muestra anterior hecho con la versión 1.6, esta última es capaz de usarla. También es muy recomendable hacer pruebas de grabación para comprobar que no haya falta velocidad en el puerto paralelo antes de proceder a la grabación final de CD-ROMs.

cdwrite

Puede obtener este programa (y casi todos los relativos a creación de CDs) de ftp://sunsite.unc.edu/pub/Linux/utils/disk-management/.

Este programa era el más utilizado hasta hace un par de años mas o menos, (y el único que había). Está en actual desuso, ya que ha dejado de desarrollarse y se ha quedado algo anticuado; de todas formas funciona perfectamente en grabadoras SCSI a excepción de las Sony.

Si ha comprendido los comandos del cdrecord no tendrá problemas en entender los de este programa ya que no tiene muchos. Una diferencia que sí hay entre uno y otro es que para identificar la unidad grabadora utiliza los dispositivos /dev/srX y no va directamente al bus SCSI, lo cual puede resultar mas fácil de usar.

Por defecto cdwrite busca /dev/cdwriter como dispositivo por defecto de la grabadora, por lo que si hace un enlace simbólico del dispositivo /dev/sgX a /dev/cdwriter con el dispositivo de acceso genérico correspondiente, (vea sección Dispositivos genéricos) se ahorrará un parámetro más que poner.

cdwrite necesita que se le especifique el tamaño en bytes de la imagen que va a grabarse; para saberlo, usamos el programa isosize (lo podemos encontrar dentro del paquete de distribución de cdwrite con otras utilidades extra que nos pueden venir muy bien); si nuestra imagen se llama imagen.iso:

# isosize imagen.iso
382060544

nos informa de que el tamaño es 382060544, parámetro que le especificaremos posteriormente con -b.

podemos usarlo también con CD-Roms o particiones, si hemos generado la imagen directa a una partición en lugar de a fichero:

isosize /dev/sda1
634986355

Si hemos volcado la imagen generada por mkisofs en la primera partición del primer disco SCSI (con la opción -o /dev/sda1).

Algunos ejemplos de cómo se usa cdwrite son:

cdwrite -ve -s 2 -b 382060544 -D /dev/sgd -data /dev/scd0

Copiará directamente el CD que esté en el primer CD-Rom SCSI del sistema a la grabadora, expulsará el CD una vez listo, e irá informando del transcurso de la grabación; 382060544 es el tamaño del CD en cuestión, que hemos averiguado previamente mediante isosize.

cdwrite -s 2 -e -D /dev/sgd -b 382060544 -data image.iso -audio *.cdr

Grabará un CD mixto de datos y audio, en donde el parámetro -s indica la velocidad de grabación (equivale al speed=2 del cdrecord), el parámetro -e expulsa el CD al terminar (equivalente al -eject), el -D indica la unidad grabadora, aunque si ha hecho un link de /dev/sgd (por ejemplo) a /dev/cdwriter no hace falta que lo especifique; y por último igual que en el anterior están los parámetros -data y -audio, estando el formato de los ficheros de sonido en Compact Disc Digital Audio (extensiones .cdda o .cdr); podemos pasarlo de otros formatos a éste mediante el programa sox.

cdwrite necesita que el orden de la palabra del fichero de audio sea el apropiado para su grabadora, u obtendrá un CD en el que sólo se escuche un desagradable ruido.

Consulte la sección Software de extracción de audio.

No podrá hacer CDs multisesión con este programa. Para hacer CDs multisesión tendrá que usar las opciones que lleva el mkisofs para este fin, generando una imagen multisesión.

cdrdao

Parece ser que se ha conseguido que este programa haga lo que se quería, copiar CDs al vuelo, incluso los mixtos, de música, y ohhhhhhh, de ¡Playstation!. No dejéis de ver la sección dedicada a este programa porque merece la pena.

6.4 Entornos Integrados

X-CD-Roast

Puede obtener este programa de http://www.fh-muenchen.de/rz/xcdroast/.

Este programa es el más sencillo de usar ya que está hecho para las X con un interfaz TCL/TK y se basa en modificaciones del cdrecord y mkisofs para su funcionamiento. En versiones anteriores utilizaba un derivado del cdwrite, pero tuvo que dejarlo ya que cdwrite ha dejado de desarrollarse.

La mayor ventaja que tiene este programa es su facilidad de uso y que detecta y configura los dispositivos automáticamente, además de funcionar correctamente y sin problemas. Con él puede configurar y hacer las imágenes de CD fácilmente sin necesidad de ir a la línea de comandos, así como extraer pistas de audio y volver a grabarlas gracias a sus modificaciones del readcdda y playcdda (que sólo se pueden usar con dispositivos SCSI).

Si quiere sacar pistas de audio con un lector IDE lector ha de usar el cdda2wav, aunque no todas la unidades lectoras soportan la extracción de pistas CDDA o de CD-Audio.

Puede hacer una copia directa de CD a CD, siempre que sean sólo de datos, y que las dos unidades, la grabadora y la lectora, sean dispositivos SCSI, ya que con las IDE no funciona muy bien, debido no al programa en sí, sino mas bien por las características de las unidades IDE, ya que no suelen satisfacer las capacidades de carga de las grabadoras. Aun así he llegado a comprobar como unidades del tipo Philips IDE de 32x en adelante funcionaban perfectamente.

Lo normal es que no tenga problemas para grabar con este programa siempre y cuando su grabadora sea SCSI, cuando sea IDE o usa la ultima versión 0.96d final o superior o no conseguirá que salga ni un solo CD bien.

Burn-It

Este entorno utiliza las últimas versiones de cdrecord, mkisofs y cdda2wav, lo más peculiar sin duda es que esta escrito íntegramente en java; su desarrollo es muy rápido.

Puede obtenerlo de http://www.imada.ou.dk/~jews/BurnIT/.

CDR

CDR son las siglas de Create/Duplicate/Rip (Crear/Duplicar/Extraer).

Su utilidad actualmente es más que nada para la preparación de audio que posteriormente va a ser grabado con cdrecord o cdwrite desde la línea de comandos. Provee una interfaz tipo ncurses. Sólo extrae de unidades SCSI.

Puede obtenerlo de http://www.burdell.org/cdr.shtml.

6.5 Otros programas y utilidades

Hay varias utilidades entre las que tengo que destacar sdir, isovfy, cdinfo y isodetect, que son pequeñas, de consola, pero muy útiles a la hora de comprobar y verificar CDs. Estas pequeñas utilidades se pueden encontrar en el FTP de sunsite ftp://sunsite.unc.edu/pub/Linux/utils/disk-management/ y otras que se pueden encontrar tanto en el paquete de X-CD-Roast (sección X-CD-Roast) como en el de cdrecord ( cdrecord).

Por ejemplo, sdir nos puede ayudar a saber el tamaño total de un directorio y sus subdirectorios lo cual resulta muy útil cuando queremos evaluar y calcular el tamaño del CD a copiar al vuelo; isovfy nos sirve para verificar que no hayan errores en una imagen creada en el disco duro; cdinfo nos puede ayudar a comprobar que se han copiado bien los CDs y no sólo eso, este pequeño programa muestra la estructura de un CD en minutos y segundos, nos dice si es arrancable, los sistemas de ficheros que contiene, si lleva pistas de audio o es un vídeo CD, etc; por último, con isodetect podemos ver la etiqueta del volumen de un CD así como los comentarios de los mismos.

Descripción de las utilidades:

sdir

este programa muestra la capacidad de un directorio con sus subdirectorios. Los parámetros a pasarle son directorios.

isodetect

programa para ver el volumen, el editor, el publicador y la aplicación de una imagen. Su sintaxis es la siguiente:

Sólo se puede indicar un comando a la vez con -d. Este programa se puede encontrar en el paquete X-CD-Roast (sección X-CD-Roast).

cdinfo

excelente y pequeña utilidad que nos muestra la estructura de un CD; en lo que a pistas se refiere, identifica CDs mixtos, arrancables, con sistema HFS, CD Plus, etc. (Altamente recomendada y muy útil). La última versión se puede descargar desde http://www.in-berlin.de/User/kraxel/dl/cdinfo.c

Desgraciadamente, parece ser que se ha abandonado su desarrollo.

isovfy

Esta pequeña utilidad nos servirá para encontrar posibles errores en las imágenes. Su sintaxis es muy sencilla, solamente se le ha de indicar un dispositivo de bloque o el nombre del fichero imagen. Este programa viene en el paquete de X-CD-Roast (sección X-CD-Roast).


Anterior Siguiente Indice