Grabadoras de CD - Como

Leandro Terrés, lord lt@retemail.es

y Francisco J. Montilla, pacopepe@insflug.org v1.6.1, 21 de Noviembre de 1999 Introducción al uso de Grabadoras de CD-R, CD-RW y DVD bajo Linux, así como descripción del uso de los programas necesarios. Este documento se diferencia del Creación-CDRoms-Como por su enfoque, más centrado en el uso de distintos tipos de grabadoras, y las últimas novedades software. Es conveniente que también lea el Creacion-CDRoms-Como, enfocado más en la plataforma SCSI, que profundiza más en los aspectos técnicos de la tecnología CD-R y en sus posibilidades.

Índice General

1 Introducción 3 1.1 Aportaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Grabadoras soportadas 3

3 Configuración del Kernel 4

3.1 Configurar el Kernel para grabadoras SCSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3.1.1 Activación y desactivación de dispositivos SCSI al vuelo . . . . . . . . . . . . . . . . . 6 3.2 Configurar el Kernel para grabadoras IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.3 Configurar el Kernel para grabadoras IDE-ATAPI por puerto paralelo . . . . . . . . . . . . . 8 3.4 Otras opciones del kernel recomendables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

4 Nomenclatura de dispositivos SCSI 10 4.1 Dispositivos genéricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4.2 Dispositivos de bloque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.3 Notación estándar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

5 Sistemas de ficheros 12 5.1 Joliet y Romeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 5.2 Rock Ridge (High Sierra) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 5.3 HFS (Hierarchical Filesystem) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 5.4 UDF (Universal Disk Format) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.5 EXT2 (Extended Filesystem II) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.6 El Torito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

6 Programas necesarios para grabar 13

6.1 Programas para creación de las imágenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6.1.1 mkisofs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6.1.2 mkhfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 6.1.3 mkhybrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

6.1.4 mke2fs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 6.2 Software de extracción de audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

6.2.1 readcdda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 6.2.2 cdda2wav . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

6.3 Software de grabación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 6.3.1 cdrecord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 6.3.2 cdwrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6.3.3 cdrdao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

6.4 Entornos Integrados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6.4.1 X-CD-Roast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6.4.2 Burn-It . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 6.4.3 CDR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

6.5 Otros programas y utilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

7 Software DAO y generadores de subcódigos. 31 7.1 cdrecord 1.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 7.2 CD Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 7.3 cdrdao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

7.3.1 Copia al vuelo de CD-ROMs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 7.3.2 Extracción y grabación de imágenes DAO con cdrdao. . . . . . . . . . . . . . . . . . . 34 7.3.3 Scripts que acompañan a cdrdao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 7.3.4 Duplicado de CD-ROMs de PlayStation con CDRDAO. . . . . . . . . . . . . . . . . . 35 7.3.5 A tener en cuenta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

8 Preguntas de Uso Frecuente 36

8.1 Cuando grabo con cdrdao, muestra una capacidad de casi 750 megas para un CD 74 minutos.

¿Esto a que se debe? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 8.2 Me sale un mensaje muy parecido al siguiente después de que el disco duro deje de funcionar

durante unos segundos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 8.3 ¿Hay alguna forma de hacer una imagen exacta de un CD al disco duro que no sea copiar los

ficheros del CD al disco y luego sacar la imagen? . . . . . . . . . . . . . . . . . . . . . . . . . 36 8.4 ¿Se puede copiar de CD a CD (sólo de datos) directamente sin ningún problema? . . . . . . 37 8.5 ¿Puedo duplicar directamente un CD mixto o de audio? . . . . . . . . . . . . . . . . . . . . 37 8.6 ¿Puedo duplicar CDs en formato xa2? (Por ejemplo, de PlayStation) . . . . . . . . . . . . . . 37 8.7 ¿Hay alguna FAQ genérica sobre CD-R o CD-RW? . . . . . . . . . . . . . . . . . . . . . . . . 37 8.8 He grabado un CD de Audio, pero al escucharlo sólo se oye un zumbido horripilante... . . . . 38 8.9 Problemas con más de un dispositivo en controladoras SCSI NCR . . . . . . . . . . . . . . . . 38 8.10 ¿Como se crea un CD Mixto? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 8.11 ¿Como se graba un CD multisesión? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 8.12 ¿Como se crea un CD Plus? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 8.13 ¿Se puede usar la grabadora para leer o extraer? . . . . . . . . . . . . . . . . . . . . . . . . . 39

8.14 Tengo una grabadora HP-7500, y cdrecord me hace cosas raras... . . . . . . . . . . . . . . . 40

8.15 CDRDAO no detecta bien mi unidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

8.16 Sugerencias y peticiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

9 Créditos 40

10 Anexo: El INSFLUG 41

1 Introducción

Este documento pretende guiar al usuario, de forma que sepan qué tienen que hacer y cómo solucionar los posibles problemas que puedan plantearse a lo largo del camino de la grabación de CDRoms.

Se da una pequeña explicación sobre los sistemas de ficheros para los CDs (todo a su tiempo) y de cómo se usan los programas más utilizados para grabar en Linux. Por supuesto, y en último lugar, la omnipresente PUF (Preguntas de Uso Frecuente) por si se escapa algo.

Recomiendo leer todos los apartados, uno detrás de otro, para ampliar conocimientos, que resultará beneficioso a la hora de buscar posibles irregularidades, fallos o errores en la elaboración de este documento o en lo que se refiere a conceptos en Linux en sí.

Y ya por último indicar que hasta la versión 1 de este documento explicaremos cómo se graban CDs normales, pero para la siguiente versión, la 2.0 intentaremos ir mas allá, a las grabadoras DVD, momento que bajo mi punto de vista no tardará en llegar.

1.1 Aportaciones

Recuerde que este documento está en desarrollo y cualquiera que pueda aportar su granito de arena con sus problemas y soluciones, correcciones (ya que seguro que me he equivocado en algún sitio) o adición de detalles; siendo además amablemente incluido como colaborador. (Ver sección 9)

Para hacerlo sólo tiene que o bien utilizar el sistema en línea de Insflug, http://www.insflug.org/comos/comos.php3 de adición al sistema de fe de erratas, o sugerencias, para que inmediatamente esté disponible para todos, y enviar un mail a lord lt@retemail.es

Animo a leer este documento con paciencia, sin reparos en participar con correcciones o añadiduras al mismo, para que toda la comunidad Linux se beneficie de él. Las felicitaciones y enhorabuenas también son bien recibidas ;-).

2 Grabadoras soportadas

Podemos dividir el soporte a una grabadora bajo LiNUX en tres aspectos:

1. Que Linux tenga soporte genérico para el bus del que cuelga la grabadora.

2. Que el software específico de grabación soporte la utilización de dicho bus para grabar.

3. Que además de lo anterior, el software específico de grabación soporte la grabadora en concreto.

Respecto al punto 1, Linux soporta genéricamente grabadoras CD-R, CD-RW, DVD-R, DVD-RW y DVD-RAM con interfaces:

• SCSI

• IDE/ATAPI

• IDE/ATAPI por puerto paralelo.

Podemos decir por tanto que, a excepción de las grabadoras SCSI, con las que además es preciso que la controladora SCSI esté soportada por Linux, hoy en día la capacidad de utilizar una grabadora en concreto reside enteramente en el programa utilizado para grabar.

En la actualidad, el único programa con desarrollo activo es cdrecord; por lo que la cuestión dependerá enteramente de que cdrecord la soporte o no; a grosso modo, podemos afirmar que casi todas las grabadoras están soportadas.

En http://www.guug.de:8080/cgi-bin/winni/lsc.pl Winfried Truemper mantiene un listado de las

soportadas. Si entre ellas está la suya, hay un 99% de posibilidades de que pueda utilizarla bajo Linux sin problemas.

No obstante, la última palabra la tiene siempre la documentación de cdrecord: vea la sección 6.3.1.

Aun en el caso de que su grabadora no estuviera soportada, le quedaría la opción de crear las imágenes bajo Linux, y grabarlas bajo cualquier otro sistema operativo.

3 Configuración del Kernel

El primer paso es configurar el kernel para que Linux vea nuestras grabadoras y/o lectores correctamente, tanto si son SCSI como IDE o ATAPI por puerto paralelo.

En los dos últimos casos hay que hacer ciertos <<chanchullos>>, aunque el que más pueda resultar dificultoso sea configurar el kernel para grabadoras IDE, ya que no basta conectarla, decirle que es un dispositivo IDE/ATAPI CD-ROM y directo a grabar como un poseso; hay que recompilar el kernel con una serie de opciones y modificaciones que se describen y explican en su apartado correspondiente.

Hay que saber cómo configurar el kernel, para ello entramos en el directorio /usr/src/linux, donde normalmente se encuentran los fuentes. Para asegurarnos de que nada raro pueda pasar, ejecutaremos make mrproper lo que elimina todos los binarios, incluso las configuraciones; es decir, una limpieza exhaustiva que asegure que no haya ninguna interferencia de nada de lo anterior que pueda hacer que el nuevo kernel no compile o nos dé errores.

Una vez hecho esto, teclearemos make menuconfig si queremos interfaz ncurses para el shell o make xconfig desde un terminal de X-Window para hacer lo mismo en X con interfaz TCL/TK, lo que quiere decir que si no tiene dichas librerías no podrá compilar los programas respectivos.

Podrá recurrir en última instancia al viejo programa de configuración, un script que se invoca desde la consola con make config y en el que tendrá que poner y (si), n (no) y/o m (módulo) el los lugares en donde corresponda en el prompt, ya que éste no permite volver hacia atrás; si quiere hacerlo tiene dos opciones, una pulsar Control+C y cancelar la configuración volviendo a empezar, o terminar de configurar y volver a empezar, (lo configurado anteriormente se mantiene), y rectificar lo que haya dejado o haya puesto mal.

Si tiene mas dudas sobre cómo configurar el núcleo del sistema le remito al documento Kernel Como que se

encuentra en http://www.insflug.org.

3.1 Configurar el Kernel para grabadoras SCSI

Voy a suponer que no tiene ni la más remota idea de qué es el sistema SCSI, cosa en la que tampoco voy a profundizar, ya que para eso hay un hermoso documento llamado SCSI-HOWTO al cual puede referirse en caso de dudas y o problemas de configuración del dispositivo SCSI.

El caso es que se ha comprado un equipo cuya placa madre trae SCSI integrada, o una controladora SCSI en la que ha puesto el CD, y el dichoso windows lo ha configurado a la primera o los amables chicos de la tienda de informática en donde acaba de comprarlo han instalado y configurado todo.

Lo primero es saber qué tipo de controladora SCSI es, me refiero a su chip principal; las controladoras más comunes son Adaptec, Advansys y las basadas en los chip Symbios 53c8xx (NCR), pero si no tiene ninguna de éstas no se preocupe, el kernel lleva soporte para muchas más. Puede saber qué controladora tiene mirando simplemente los manuales, mirando el chip principal de la tarjeta o el nombre del controlador de windows (sólo en última instancia).

Si el controlador no corresponde exactamente al modelo que aparece en el kernel, seguramente funcionará con alguno de los que lleva genéricos para varios tipos de controladoras con las mismas características. Puede compilar como módulo las que más se parezcan al suyo y luego ir probando los módulos hasta que dé con el que corresponda. Si al cargar algún módulo nota que se le ha quedado el ordenador colgado, no lo vuelva a intentar con ese, ya que algunos controladores que no corresponden al hardware instalado son cargados de todos modos produciendo estas desagradables situaciones.

Acto seguido nos vamos a la configuración del kernel y entramos en SCSI Support, lo que luego nos dejará señalar las demás opciones que son para dar soporte genérico, y a unidades de CD-ROM, Discos Duros y cintas, de las cuales nos interesa el soporte genérico, SCSI generic support, que proporciona el interfaz ASPI, (para poder grabar) y el SCSI CD-ROM support, para leer unidades de CD-ROM, incluidas grabadoras y DVDs. Si dispone de un disco duro, ZIP o JAZ SCSI deberá responder y también si quiere poder usarlo.

Si por casualidad tiene la grabadora como unidad externa, y la controladora SCSI dedicada en exclusiva a ella, recomiendo que ponga el driver de la controladora como módulo, es decir, poniendo m en lugar de y, ya que le permitirá cargar/descargar a voluntad todos los módulos de soporte SCSI cuando no los necesite, y apagar la unidad externa cuando no la esté usando (cosa que con windows no es posible hasta el W98) ya que al cargar su módulo, la controladora inicializará y escaneará los dispositivos de nuevo sin necesidad de reiniciar el ordenador para detectarlos; si la tiene interna, añada el soporte directamente en el kernel y se ahorra trabajo en cargar los módulos.

Tenga en cuenta no obstante, que si carga, descarga, y vuelve a cargar el módulo sin reiniciar el equipo, la controladora recibirá un número de host distinto, y los parámetros que tengamos para cdrecord configurados no serán válidos.

Si no puede descargar el soporte SCSI por tener otros dispositivos dependiendo de él (porque su disco duro raíz sea SCSI, por ejemplo, o por no poder tenerlo como módulo por las razones que sean) también puede activar y desactivar dispositivos a voluntad, incluidas grabadoras, cintas, escáneres, etc. sin necesidad de descargar el módulo. vea la sección 3.1.1.

Así que una vez hecho esto pase al apartado siguiente para especificar el driver de su controladora. Si le ha dicho antes, en soporte SCSI, que lo compile como módulo solo le dejará seleccionar como módulo el driver del controlador.

Espero que no se equivoque en escoger el driver para su controladora, porque si es así le tocará elegir otro y recompilar solo los módulos. Una vez recompilados los nuevos módulos, previa configuración, sólo tendrá que probarlos; si ha incluido soporte SCSI en el kernel junto a un controlador, éste detectará el dispositivo y podrá accederse a él desde los ficheros de dispositivo /dev/scdX o /dev/srX (estos últimos se crean, si no lo están ya, a través de un script que se puede encontrar junto a los programas de grabación, así como con el script /dev/MAKEDEV, o bien el que trae el X-CD-Roast (sección 6.4.1) o bien a mano con el comando mknod con este bucle:

     for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ;
         do mknod /dev/sr$i b 11 $i;
     done

Del mismo modo, si lo ha hecho como módulo, sólo tendrá que cargar los módulos SCSI en el siguiente orden:

1. Módulo scsi mod.o que es el driver principal del que cuelgan todos:

          insmod scsi_mod

2. Seguido del módulo de soporte para SCSI genérico (proporciona el interfaz ASPI Advanced SCSI Programming Interface, para poder grabar CDs, o usar algunos programas con unidades de cinta, escáneres, etc) sg.o y el de soporte de CD-ROMs SCSI, sr mod.o:

          insmod sg
          insmod sr_mod

3. Por último, hacer un insmod al driver que corresponda a su controladora, el cual sacará un debug de lo que encuentre, de tal forma que las unidades de CD corresponderán a /dev/sr0 para el primer dispositivo CD-ROM SCSI, /dev/sr1 para el segundo, etc, independientemente del bus o ID SCSI en el que estén.

De todas maneras si hace un cat al archivo /proc/scsi/scsi podrá ver qué ID SCSI se tienen sus dispositivos, dato indispensable para determinar los interfaces genéricos /dev/sgX.

Si instala X-CD-Roast podrá usar los dispositivos /dev/sr0 hasta /dev/sr15; también puede usarlos en lugar de los dispositivos /dev/scdX, que usan otros programas, como cdrecord. Estos son los nuevos dispositivos que se usarán a partir de ahora para referirse a las unidades de discos ópticos tipo ROM como los CD-ROM y DVD-ROM.

Recomiendo que active el soporte kerneld, e introduzca el alias apropiado a la controladora en /etc/conf.modules, para que la carga de los módulos sea automática. Si tiene dudas sobre esto, lea el Kernel-Como para mejor referencia. Si ya tiene una distribución con el kernel 2.2.XX no se cargará el kerneld, el propio kernel hace las funciones del kerneld.

Lea también la sección 3.2 porque explico algunas cosas más que pueden servir para solucionar posibles problemas que puedan ocurrir y que son comunes tanto para IDE como para SCSI. Y porqué no, para cuando un amigo se instale una grabadora IDE...

3.1.1 Activación y desactivación de dispositivos SCSI al vuelo

La forma más limpia de hacer que el kernel active o desactive sin necesidad de resetear el sistema, o cargar/descargar módulos, dando igual si está compilado el soporte como módulo o no, es mediante el siguiente método.

El activar o desactivar dispositivos SCSI a voluntad sin necesidad de demasiados aspavientos puede ser más práctico de lo que parece: suponga que su grabadora es externa, y la mantiene apagada mientras no la usa, lo mismo sucede con un scanner, unidad ZIP, JAZ, CDROMs o unidades de cinta externa, dando por supuesto que son SCSI, claro está.

Advertencia: Cuando hablamos de activar, nos referimos al caso en que el dispositivo está conectado externamente a la controladora, pero en un principio apagado, y una vez encendido, deseamos activar; no que cualquier controladora SCSI mediante este método soporte conexión/desconexión en caliente de dispositivos, tenga cuidado o puede desde corromper datos a estropear definitivamente dispositivos del bus SCSI.

Supongamos que la grabadora está en la primera o única controladora SCSI del sistema, y que la grabadora tiene asignado el ID SCSI 4.

si ejecutamos el comando:

     echo "scsi add-single-device 0 0 4 0" > /proc/scsi/scsi

El kernel activará la grabadora.

En este caso, el primer 0 especifica la primera controladora, el segundo el canal de la controladora (a menos que tenga una Wide o UW SCSI. siempre será 0, ya que sólo tiene uno; no confundir canal con conector) el 4 especifica el ID SCSI, y el último 0 el LUN. (Ver sección 4.3)

y si ejecutamos

     echo "scsi remove-single-device 0 0 4 0" > /proc/scsi/scsi

La desactivaremos.

3.2 Configurar el Kernel para grabadoras IDE

El problema de las grabadoras IDE es que no hay software específico que detecte y grabe en estos dispositivos, ya que todos los programas se basan en la interfaz SCSI (ASPI) del kernel para acceder a éstos.

Por esta razón, no es tan sencillo configurar del Kernel para las grabadoras IDE. Lo primero es aplicar una pequeña modificación al Kernel, sólo necesario si tiene una grabadora Regrabable HP como las 7100 o 7110 o superiores.

La modificación, que consiste en aumentarle el tiempo de espera del IRQ, es absolutamente necesaria ya que si no lo hacemos no cerrará los CDs, o al intentar cerrarlos, es decir, al escribir la Tabla de Contenidos, se detendrá con un error y habremos perdido el CD sin forma de recuperarlo.

Para efectuarla, vamos al archivo ide.h que se encuentra en /usr/src/linux/drivers/block, y buscamos la siguiente línea:

     #define WAIT_CMD        (10*HZ) /* 10sec  - maximum wait for an IRQ to happen */

que tenemos que modificar de modo que quede así:

     #define WAIT_CMD        (1000*HZ)       /* 1000sec  - maximum wait for an IRQ to happen */

Con lo cual solucionamos el problema. Parece ser que con poner 400 en vez de 1000 funciona, pero no lo he probado personalmente. De todas formas, con el paquete de los fuentes del cdrecord viene un archivo llamado README.ATAPI, en que se dice que haga exactamente esto, así como cómo hacer funcionar estas grabadoras con la versión antigua de cdrecord, es decir, la 1.5, aplicándole un serie de parches al programa y al kernel.

Una vez realizada la modificación debe configurar el kernel, ir al menú Floppy, IDE and other block

devices, desactivar el soporte para IDE/ATAPI CD-ROM (¡OJO, NO el Enhanced IDE/MFM/RLL

disk/cdrom/tape/floppy support!) y activar la emulación SCSI que sólo hay en los últimos kernel, versiones 2.0.31 en adelante y 2.2.XX, para que así los programas detecten nuestra grabadora IDE como SCSI y funcione como tal.

Si activamos el soporte IDE/ATAPI para las unidades de CD-ROM el kernel no detectará nuestra grabadora como un dispositivo SCSI y habremos perdido el tiempo. Hacer que a nuestra grabadora la vean los programas como si fuera SCSI es muy sencillo, y se basa en que las grabadoras reciben comandos estandarizados (pertenecientes al interfaz ASPI , Advanced SCSI Programming Interface) para grabar que por casualidad son específicos de los SCSI; de esta forma, con la emulación lo que hacemos es que se puedan enviar este tipo de comandos a través del bus IDE de nuestra grabadora.

Hasta el momento que he tenido para probarlo, funciona perfectamente, tan bien, que se consigue un rendimiento similar al de una SCSI auténtica.

De la misma forma, windows lo que hace es emular SCSI con las IDE, lo que le trae una pequeña serie de inconvenientes como cierto software que no funciona bien o el excesivo consumo de recursos del sistema.

Por lo visto las grabadoras IDE consumen muchos recursos, más que las SCSI, pero en linux con la emulación la carga parece menor, o al menos no se nota de forma excesiva; lo único recomendable es dejar un puerto IDE para ella sola, según recomiendan los fabricantes; lo mas común suele ser el secundario.

Con esto nos aseguramos de que no haya cualquier posible interferencia del otro dispositivo que haya conectado al puerto de la grabadora (solo por seguridad); yo he probado a tener el lector y la grabadora en el mismo interfaz, esto se puede hacer pero recomiendo que desmonte la unidad lectora de CD para que no haya interferencias; se puede usar, por ejemplo, para escuchar CDs de música mientras se graba el CD, si tiene botón de reproducción, claro esta ;).

He recibido noticias de que hay gente que tiene la grabadora y la unidad lectora colocadas en la misma interfaz haciendo copias directas sin muchos problemas. Antes de ponerlo así, recomiendo realizar muchas pruebas antes de dejarlo de forma fija.

El último paso para configurar el kernel es ir a la sección SCSI support e incluir el soporte SCSI en el kernel, junto al SCSI generic y el soporte SCSI para los CD-ROM (Ojo, no lo haga como módulo, hay un fallo en la configuración para la emulación SCSI a la hora de incluir el soporte genérico SCSI en el kernel, por lo que si no lo incluimos manualmente en él no podremos compilar el nuevo kernel y es posible que se pase un buen rato dándole vueltas a lo mismo).

Gracias a este procedimiento ahora nuestra grabadora y/o lectora/as aparecerán como dispositivos SCSI en vez de IDE.

No es nada recomendable hacer cosas con el disco duro <<origen>> mientras se está grabando, si lee datos de un disco secundario podrá trabajar con el principal, pero no recomiendo abusar de su uso ya que es posible que pueda haber alguna pequeña interferencia con el DMA, aunque no suele ser muy común. Es decir, deje el disco duro sólo para la grabación.

Otra cosa a tener en cuenta es que si no tiene un disco con extracción por DMA como un Fast ATA o Ultra DMA desactive del kernel el soporte para el chip Intel Tritón (I/II), ya que si hará interferencia el DMA con la emulación y dejará el controlador colgado, obligándole a resetear el ordenador con ese botón que se tiene algo olvidado la gente de linux. (Mirar en el apartado 8) para más detalles).

3.3 Configurar el Kernel para grabadoras IDE-ATAPI por puerto paralelo

¿Grabadoras por puerto paralelo? ¿De verdad eso existe? Pues sí, existe, y cómo Linux es capaz de usarlas, ¿Cómo? Gracias cdrecord y a los desarrolladores del kernel que han introducido como novedad de los núcleos 2.1.x: (de desarrollo) el soporte para unidades ATAPI por puerto paralelo como unidades de CD-ROM y discos duros.

Para esto deberemos tener el kernel 2.0.35 o superior con la configuración necesaria para que reconozca nuestra unidad externa, que se describe a continuación:

Lo primero de todo es reiniciar el ordenador y entrar en la configuración de la BIOS, y, normalmente, en el menú Integrated Peripherals, si tiene la controladora del puerto paralelo integrada en la placa base, como en las últimas placas de 486 y en todas las placas de Pentium y Pentium Pro/II. Configuraremos el puerto de impresora en modo EPP, si no lo establecemos así, no habrá forma de que funcione.

Seguidamente, una vez arrancado nuestro sistema entrar en la configuración del kernel en Floppy, IDE,

and other block devices y seleccionar como módulo el parámetro Parallel port IDE device

support. Seguidamente seleccionar, al menos, también como módulos los siguientes:

   • Parallel port ATAPI CD-ROMs
   • Parallel port generic ATAPI devices

   • Shuttle EPAT/EPEZ protocol

De esta forma ya tenemos los módulos para hacer funcionar la grabadora como unidad lectora; si lo prefiere puede incluirlo en el kernel, pero primero asegúrese de que funciona bien como módulo antes.

Seguidamente procedemos a la recompilación e instalación de los módulos en su lugar, y sin necesidad de reiniciar (a no ser que se actualice partes no compiladas como módulos) ejecute depmod -a para crear las dependencias de los módulos a fin de poder cargarlos con modprobe, kerneld o kmod.

Comenzamos por cargar el modulo paride, el epat, y por último el módulo del driver que vayamos a usar; como nos interesa poder usar nuestra grabadora tenemos que cargar el pg para que nos reconozca la grabadora cdrecord (equivalente al módulo sg en SCSI) y el pcd para usar la grabadora como unidad lectora (el equivalente a sr en SCSI).

Para usar nuestra unidad como lectora debemos montar la unidad con la orden:

     mount /dev/pcd0 /cdrom

No obstante, si piensa utilizar su grabadora como lector, o para extracción de audio asiduamente, le recomiendo que lea la sección 8.13, su bolsillo lo acabará agradeciendo.

Si no existe el dispositivo /dev/pcd0 puede crearlo con el siguiente bucle:

     for i in 0 1 2 3 ; do mknod /dev/pcd$i b 46 $i ; done

Si dispone del un kernel de la serie 2.1.x o 2.2.x antes de usar los controladores de cualquier dispositivo de puerto paralelo ha de cargar el módulo parport.o, el cual hace de interfaz para poder tener cargados y operativos varios dispositivos de puerto paralelo al mismo tiempo como unidades ZIP, discos y lectores/grabadores de CD e impresoras y scanners simultáneamente (genial ¿¿¿no??? ;-)).

Como todavía no ha caído en mis manos una grabadora de este tipo no he podido hacer pruebas ni nada por el estilo, los detalles de la configuración del kernel los he elaborado a partir de lo que he podido recopilar leyendo por la Web y la ayuda prestada por colaboradores.

Apelo a la colaboración de la comunidad linuxera a fin de completar este apartado con lo que más le vaya haciendo falta, para estar a la altura de los anteriores; bien se lo merece el esfuerzo mostrado por las personas que hacen posible que dispositivos tan raros y minoritarios sean capaces de ser utilizados por Linux.

3.4 Otras opciones del kernel recomendables

En linux (y en unix) existe la posibilidad de poder acceder, leer y escribir en sistemas de archivos que no se encuentren en una partición o en un disco, sino, en un fichero. ¿Cómo? ¿En un fichero? Si, así es, y para eso solo necesitamos dos cosas, un dispositivo loopback y el comando mount.

Para asegurarnos de que incluimos esta opción en el kernel como módulo entramos en la configuración del

kernel mediante make menuconfig, y accedemos al menú Floppy, IDE, and other block devices; justo
tras Additional Block Devices se encuentra la opción Loopback device support la cual recomiendo

seleccionar como módulo, y si en el menú principal Filesystems tiene seleccionada la opción Kernel automounter support al montar el archivo, este módulo se cargará automáticamente; si la opción anterior está como módulo deberá cargarlo a mano, sino no se cargará automáticamente ningún modulo y nos dará error. Para cargarla manualmente deberemos teclear: insmod loop.

También debemos asegurarnos que en dev existan los ficheros especiales de dispositivo loopX:

     brw-rw----   1 root     disk       7,   0 Jul  1  1996 /dev/loop0
     brw-rw----   1 root     disk       7,   1 Jul  1  1996 /dev/loop1

     brw-rw----   1 root     disk       7,   2 Jul  1  1996 /dev/loop2
     ...

si no los tiene, créelos con el siguiente bucle:

     for i in 0 1 2 3 4 5 6 7; do mknod /dev/loop$i b 7 $i ; done

así, para montar una imagen para revisarla, en el directorio /mnt/imagenesCD haremos:

     mount -o loop imagenCD.iso /mnt/imagenesCD

Una vez hecho esto, acceda al directorio /mnt/imagenesCD y podrá ver los contenidos de la imagen. Las imágenes ISO9660 son de sólo lectura, por lo que no podrá modificarlas de ninguna manera, claro, a menos que genere otra imagen nueva.

Como puede observar no he puesto el comando -t iso9660 para especificarle que es una imagen ISO9660, ya que automáticamente lo debe detectar.

Si tiene pensado hacer imágenes Joliet, le recomiendo que cargue en el kernel el soporte para Joliet, en el menú principal Filesystems, activar el soporte para ISO9660 en los kernels 2.0.33 en adelante, y en los

superiores a 2.0.37, o 2.1.x o 2.2.x activar Microsoft Joliet CD-ROM extensions; y dentro del
submenú Native Language Support activar Codepage 437, 850 y NLS ISO 8859-1.

Recomiendo al menos incluir esto como parte del kernel de arranque, aunque si no le sobra mucha memoria inclúyalos como módulos, que el kernel se ocupará de cargarlos cuando sea necesario. El resto de Codepages y NLSs recomiendo que los ponga como módulos si decide activarlos, aunque los más utilizados son los mencionados anteriormente.

4 Nomenclatura de dispositivos SCSI

Este es un tema para el que convendría que leyera el SCSI-Howto, pero como no hay disponible traducción, haré una breve introducción, necesaria para poder especificar parámetros necesarios al software que usaremos.

Básicamente, para lo que necesitamos, hemos de saber de la existencia de los dispositivos de bloque, /dev/scdX o /dev/srX, y los dispositivos genéricos, /dev/sgX:

4.1 Dispositivos genéricos

En lo que a nosotros atañe, tanto para extraer audio, como para grabar bajo Linux, el kernel ha de tener activado Generic SCSI Support, que proporciona la interfaz ASPI necesaria.

Pero, ¿de qué manera determina Linux cómo ha de tratar un mismo dispositivo? dependiendo de a qué fichero de dispositivo le hagamos referencia; si es un fichero de dispositivo de bloques, lo tratará como tal, y si es genérico, utilizará comandos ASPI .

El dispositivo genérico de cada unidad conectada al bus SCSI se determina mediante su ID SCSI, haga cat /proc/scsi/scsi para ver un listado de los disponibles en su sistema, por ejemplo:

     Attached devices:
     Host: scsi0 Channel: 00 Id: 00 Lun: 00
       Vendor: QUANTUM  Model: FIREBALL1280S    Rev: 630G
       Type:   Direct-Access                    ANSI SCSI revision: 02
     Host: scsi0 Channel: 00 Id: 01 Lun: 00
       Vendor: QUANTUM  Model: FIREBALL ST4.3S  Rev: 0F0C

       Type:   Direct-Access                    ANSI SCSI revision: 02
     Host: scsi0 Channel: 00 Id: 02 Lun: 00
       Vendor: PIONEER  Model: CD-ROM DR-U06S   Rev: 1.05
       Type:   CD-ROM                           ANSI SCSI revision: 02
     Host: scsi0 Channel: 00 Id: 04 Lun: 00
       Vendor: YAMAHA   Model: CDR102           Rev: 1.01
       Type:   WORM                             ANSI SCSI revision: 02

Lo que nos interesa es la línea Host: scsi0 Channel: XX Id: XX Lun: XX de cada dispositivo; concretamente Id:.

El sistema asigna dinámicamente dispositivos sgX por orden de ID a los presentes en ese mismo instante; en el ejemplo anterior:

     00 ---> /dev/sga
     01 ---> /dev/sgb
     02 ---> /dev/sgc
     04 ---> /dev/sgd

cuando decimos dinámicamente, nos referimos a que si por ejemplo, tiene una unidad externa magneto óptica, un zip, o similar, en el ID 03, la enciende, y hace que el kernel reescanee el bus, los dispositivos ahora serían:

     00 ---> /dev/sga
     01 ---> /dev/sgb
     02 ---> /dev/sgc
     03 ---> /dev/sgd
     04 ---> /dev/sge

Ahora, la grabadora sería /dev/sge en lugar de /dev/sgd como antes.

Con lo que queremos decir que hay que tener mucho cuidado con la adición de dispositivos SCSI <<al vuelo>> y el uso de los sgX.

4.2 Dispositivos de bloque

En el caso concreto que nos ocupa, nos interesan los dispositivos ROM: /dev/scdX o la nomenclatura

nueva, /dev/srX.

Aquí el primer fichero de dispositivo corresponderá al primer CDROM SCSI (incluyendo grabadoras) SCSI disponible en el sistema, /dev/sr0, /dev/sr1 será el segundo, etc; da igual el ID SCSI que tenga, o en el bus SCSI que esté.

4.3 Notación estándar

En entornos *nix existe cierta notación para identificar dispositivos SCSI:

     Numero_Bus_SCSI,ID_SCSI_dispositivo,LUN_dispositivo

El LUN es un parámetro que siempre va a ser 0, menos en el caso improbable de que Vd disponga de un cargador de CDs, o un robot cambiador de magneto-ópticos o de cintas.

Por tanto, un dispositivo que tuviese el ID 4 en la primera controladora SCSI del sistema sería el dispositivo SCSI del sistema 0,4,0.

5 Sistemas de ficheros

Este apartado está dedicado a explicar algunas cosas para familiarizarle con la grabación de CDs, de modo que le sea mas fácil y rápido elaborarlos.

Una breve explicación sobre los sistemas de ficheros de los CD-ROMs, para que pueda elegir cuál es el más conveniente en cada momento o CD: como ya sabrá, se sigue un estándar para que todos los ordenadores puedan leer los CD-ROMs sin ningún problema, para eso se creó el ISO9660 que especifica el estándar.

Pero dentro de ese estándar existen algunas variantes, o más concretamente extensiones, que permiten ampliar las posibilidades originales del ISO9660 , como son los nombres largos o incluso sistemas de arranque y ciertas cosas más.

5.1 Joliet y Romeo

Estos sistemas fueron diseñados por Microsoft para su plataforma Windows 95/NT. Permiten sistemas de archivos tipo VFAT pero con la limitación de longitud a 64 caracteres, en Joliet, y de 128 para Romeo.

Para que Linux sea capaz de ver estos sistemas de ficheros —por ahora sólo Joliet— Necesita tener dicho soporte en el kernel: hasta el kernel 2.0.34 no lo había, aunque es posible tenerlo gracias a parches para el kernel que se encuentran en Internet. Estos mismos parches permiten ver también particiones con FAT32, el sistema de archivos que usa la OSR2 de Windows 95 que le posibilita tener particiones de hasta 4 TeraBytes, limitación inexistente en el sistema de ficheros de Linux, ext2 , que desde su aparición soporta precisamente 4 TeraBytes ;)

Para los que estén usando un kernel de la serie 2.2.x, decirles que tanto el soporte Joliet como de FAT32 vienen <<de serie>>, y no tienen más que compilar o cargar módulos cuando se necesite si el kernel no los carga automáticamente.

5.2 Rock Ridge (High Sierra)

Esta extensión se ideó para la plataforma UNIX, por lo que recoge una serie de características y ventajas de las que nos podemos beneficiar más que con los otros.

La primera ventaja es la de poder tener un sistema de ficheros con atributos propios del UNIX en él, es decir, puede haber archivos ejecutables, de acceso restringido a un usuario, enlaces simbólicos y demás aspectos típicos de un sistema de archivos UNIX, en el CD. Otra de las ventajas es que podemos tener nombres de hasta 128 caracteres, a diferencia del Joliet.

Por otra parte hay un sistema de compatibilidad que permite a otros sistemas operativos ver nombres de hasta 32 caracteres; no es mucho, pero de algo sirve. Para aquellos que no ven este sistema de ficheros tenemos la posibilidad de crear unas tablas de transcripción en forma de ficheros llamados TRANS.TBL, que aparecerán en cada directorio del CD, transcribiendo el nombre visible por el que de verdad se encuentra en él.

En algunos casos puede ayudar, pero unas veces por fallo del sistema operativo foráneo, otras por sus controladores, la transcripción no funciona muy bien, llegando incluso al reseteo sin previo aviso.

5.3 HFS (Hierarchical Filesystem)

No sé mucho sobre este sistema de ficheros, sé que es el que utilizan los Macintosh y es incompatible con el de los PC, por lo menos windows no sabe lo que es. Como es habitual Linux se adapta y por supuesto hay un parche para el kernel para ver este tipo de sistema de ficheros y también hay un programa para crear imágenes con este sistema de ficheros para que podamos grabar CDs a nuestros amigos los del mac.

Sobre las características de este sistema de ficheros no puedo decir nada, puesto que de momento no las sé. Si alguien conoce las características de este sistema por favor, envíemelas a mi dirección de correo y amablemente le incluiré como colaborador.

5.4 UDF (Universal Disk Format)

Este es el sistema de archivos que usan los DVD y también se puede usar en los CD-ROM normales, de hecho el Adaptec DirectCD usa este sistema de ficheros. Las características son muy interesantes, hasta 256 caracteres en ASCII y 128 en unicodes, posibilidad de grabar los discos en modo packet writing, lo cual elimina la posibilidad de un buffer underrun (muy común cuando no llegan los datos de forma constante al CD y acabamos por tirarlo a la basura). Es el sistema de ficheros que acabará por estandarizarse. En Linux este sistema de ficheros aun está algo verde, aunque ya se ha conseguido leer discos grabados con DirectCD con ciertas limitaciones.

Hasta la fecha el parche para el kernel de Linux soporta hasta la versión 1.5 del sistema UDF .

Para más información, consulte estas páginas web: http://www.osta.org para obtener toda la información sobre el sistema UDF y http://trylinux.com/projects/udf desde donde podemos acceder a los parches para que el kernel vea este sistema de ficheros y no solo eso, también hay utilidades para crear CDs con el sistema UDF.

Lo que todavía no he conseguido es copiar un sistema UDF a mi regrabable y poder grabar en él. Si alguien sabe cómo hacerlo, por favor, me lo comunique con explicaciones claras, si no es mucha molestia.

5.5 EXT2 (Extended Filesystem II)

Sí, en efecto, no se trata de un formato de ficheros típico de CDRoms, lo cual no significa que no pueda hacerse.

Consulte la sección 6.1.4.

5.6 El Torito

El nombre en castellano puede llevar a confusiones pero es el nombre que se le ha puesto al sistema para incluir un sistema de arranque en el CD. La explicación de cómo hacer un CD arrancable con este sistema se describe en la sección del 6.1.1

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 3.4

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.

6.1.1 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\'{o}n CD" -p  "preparador" \
      -A "Aplicaci\'{o}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.

6.1.2 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.

6.1.3 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

6.1.4 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\"{o}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:

• cdrecord: Indistintamente de la grabadora que tenga, y del software de extracción que use, extraiga siempre en Big Endian, el formato por defecto. cdrecord sabe qué formato necesita cada grabadora, e invertirá el orden de palabra si es necesario; notará si lo invierte porque aparecerá la palabra swab en el listado de pistas de audio a grabar.

• cdwrite: Aquí no hay error posible, ha de saber qué orden necesita su grabadora, y tener los ficheros CDDA con el orden apropiado.

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 4.1.

6.2.1 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 6.4.1.

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
6.2.2 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 7.1. 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

6.3.1 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:

• help Muestra la ayuda.

• all Borra totalmente un disco. Esta opción tarda bastante tiempo.

• disc o disk Borra un disco totalmente.

• fast o minimal Borrado rápido del disco: Solo borra el TOC, los pregaps y el PMA.

• track Borra una sola pista.

• unreserve Activa una pista reservada.

• trtail Borra la cola de una pista.

• unclose Abre una pista cerrada.

• session Borra la ultima sesió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 7.1 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\"{o}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.

6.3.2 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 4.1) 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 6.2.

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.

6.3.3 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

6.4.1 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.

6.4.2 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/.

6.4.3 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 6.4.1) como en el de cdrecord (6.3.1).

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:

• -h Muestra la ayuda.

• -d y un nombre de un archivo de imagen o de un dispositivo le indican en dónde realizar la búsqueda; por defecto busca en /dev/cdrom. Si no se indican mas parámetros indicará el tipo de imagen que es, iso9660 o HFS.

• -V muestra el nombre del volumen de la imagen o CD.

• -P muestra el comentario que hay como publicador.

• -p muestra el comentario que hay como preparador.

• -A muestra el comentario que hay como aplicación.

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 6.4.1).

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 6.4.1).

7 Software DAO y generadores de subcódigos.

7.1 cdrecord 1.8
Puede obtener la última alpha del servidor FTP ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/alpha/.

Descripción de los nuevos comandos para la nueva versión:

-useinfo Utiliza los archivos de extensión .inf sobreescribiendo las opciones por defecto.

-atip Muestra la información referente al CD y sale. Esta información tambien la ofrecia la version anterior pero sólo cuando se disponia a grabar.

-dao Graba el medio en Disc-At-Once.

Ejemplo de como se usa la opción -atip se tiene en la sección referente a crear un sistema ext2 con el 6.1.4 en un archivo.

Para usar la opción -useinfo necesitamos primero haber extraido con el cdda2wav un CD-Audio al disco duro sin poner la opción -H.

     cdrecord -v dev=0,3,0 fs=16m speed=4 -useinfo *.wav

Pues sí, cdrecord tambien graba en DAO, pero sólo a partir de la versión de desarrollo 1.8a20. La forma de usar cdrecord es prácticamente la misma solo que para usar las características de la grabación en DAO ha de tener una grabadora que soporte MMC y utilizar la opción -dao; salvo esto, puede usarlo como haría normalmente.

Cuando utilizemos esta opción notaremos una forma distinta de grabar los CDs. En primer lugar veremos una nueva frase que nos muestra el cdrecord, Sending CUE Sheet. que nos indica que lo primero que está haciendo es escribir las separaciones de las pistas, los gaps y pregap para luego grabar todo, incluida la TOC sin desactivar el laser de grabación. Gracias a esta opción se puede ahorrar unos segundos o minutos si se tiene que grabar un CD con muchas pistas de audio.

Un ejemplo podria ser:

     cdrecord -v dev=3,0 fs=16m speed=4 -dao /imagen.iso /audio/*.wav

y tambien si se pretende copiar directemente desde un CD

     cdrecord dev=3,0 speed=4 fs=16m -v -dao -isosize /dev/sr0 -audio /wavs/*.wav

7.2 CD Builder

Prometedora aplicación, con entorno gráfico en X-Window, que permitirá generar escaletas (cue sheets para la creación de CDs, así como de subcódigos, como CD-G, CD-TEXT, etc.

En la actualidad está en su primera etapa (alpha de desarrollo, aunque dotado de cierta funcionalidad.

Puede obtenerlo de http://www.ccs.neu.edu/home/bchafy/cdb/cdb.html.

Al parecer se ha abandonado el desarrollo de este programa.

7.3 cdrdao

Este programa ha evolucionado tanto que la copia en DAO y al vuelo está empezando a dar sus frutos. Es posible copiar CDs al vuelo sin volcar los datos al disco duro incluso con las pistas de audio; el problema en este último aspecto es que no soporta todas las unidades lectoras a pesar de incorporar código del CDParanoia para realizar la extracción de audio.

Echándole un vistazo a la documentación se puede ver qué unidades están soportadas; tanto unidades grabadoras, incluyendo modelos SCSI e IDE, como unidades lectoras que hayan sido probadas sin problema.

También se pide que si su unidad está soportada para extraer Audio con cdparanoia, pero no con cdrdao, le envíe la información que se obitene de ejecutar el comando cdparanoia -v a la dirección de correo del autor, que tratará de incorporarar su unidad lo antes posible.

Todo lo referente a las unidades soportadas se encuentra en el archivo README del paquete del código fuente. En el mismo paquete se encuentran otras utilidades bastante interesantes que comentaré seguidamente una vez explicados los comandos de esta utilidad.

La última versión, recomendada y realmente funcional, la 1.1.3, se puede obtener de

http://www.ping.de/sites/daneb/cdrdao.html.

Descripción de los comandos del programa:

Utilización del programa:

          cdrdao comando [opciones] archivo-toc

comando indicamos al programa qué es lo que queremos hacer. Los comandos disponibles son:

• show-toc Muestra la TOC y sale.

• toc-info Muestra una pequeña descripcion de la información del archivo TOC extraido previamente.

• toc-size Muestra el número total de bloques para la TOC.

• read-toc Crea un archivo TOC desde un CD.

• read-cd Crea el archivo TOC y extrae el contenido del CD.

• show-data Muestra el contenido de los datos y sale.

• read-test Realiza una prueba de lectura de todas las pistas y sale.

• disk-info Mustra información sobre el disco que hay en unidad.

• unlock Desbloquea la unidad despues de un fallo de escritura.

• simulate Ya no se utiliza, ahora es write --simulate.

• write Graba un CD.

• copy Copia, esto se utiliza para la copia al vuelo.

opciones Aqui se describen las diferentes opciones que soporta el programa.

• --device (x,y,z) Especifica el dipositivo de la grabadora. Se puede suprimir si existe un enlace simbólico del dispositivo correspondiente a su grabadora a /dev/cdrecorder. Se puede indicar tanto la del dispositivo directo como el identificador SCSI, ejemplo: 0,3,0 o /dev/sr1

• --source-device (x,y,z) Aquí especificamos la unidad desde la cual tomaremos los datos para realizar la copia. Se puede especificar tanto un dispositivo como un identificador SCSI. Es necesaria si usamos el comando copy.

• --driver (id) Forzamos al programa a usar un controlador específico para la grabadora.

• --source-driver (id) Forzamos al programa a usar un controlador específico para la unidad lectora. Es necesaria si usamos el comando copy, aunque no si el programa identifica correctamente esta unidad.

• --simulate Para realizar una copia con el láser desactivado, en modo de simulación o prueba.

• --multi No cierra el CD, para poder crear un CD multisesión.

• --eject Expulsa el CD una vez grabado.

• --swap Invierte el orden de palabra de las pistas de audio.

• --on-the-fly Realiza una copia al vuelo, no crea imagen.

• --datafile (archivo) Nombre del archivo de datos en donde se encuentran los datos a los que hace referencia el archivo TOC. Usado por read-cd, read-toc y copy.

• --buffers (número) Expecifica el tamaño del buffer (min. 10).

• --session (número) Selecciona la sesión para read-toc/read-cd.

• --fast-toc No extrae los pre-gaps ni las marcas índice.

• --read-raw Lee los sectores raw para read-cd.

• --paranoia-mode (número) nivel de paranoia para la extracción de audio (0..3).

• --reload Relee el disco si es necesario para grabar.

• --force Fuerza la ejecución de la operación.

• -v (número) Expecifica el nivel de muestra de datos.

• -n (número) No hace una pausa después de grabar.

De aqui hay que comentar que el comando copy sólo se usa para copiar un CD directamente, si tenemos una imagen y la queremos copiar hay que usar el comando write. Un tamaño muy recomendado del buffer es 64, y de ahí en adelante, aunque con 64 creo que es más que suficiente.

7.3.1 Copia al vuelo de CD-ROMs.

Ahora una breve descripción de lo que más nos interesa del programa, la copia directa (al vuelo) sin imagen.

     cdrdao copy -v 2 --device 0,3,0 --source-device 0,1,0 --speed 4 --buffers 64 \
     --reload --eject --on-the-fly --fast-toc

Este es el comando que utilizo para duplicar cualquier tipo de CD al vuelo. Al ponerle la opción –fast-toc realiza una lectura rápida de la tabla de contenidos del CD, de lo contrario primero leerá y comprobará el CD fuente, lo que tardará lo que necesite su lector, y luego lo copiará. Si le indicamos el susodicho parámetro, leerá la TOC de forma rápida y empezará enseguida a copiar. El resto de parámetros no necesitan de una explicacion más detallada.

Es recomendable que cuando se copie un CD de música o mixto se utilice de la siguiente manera con la

opción --paranoia-mode:
     cdrdao copy -v 2 --device 0,3,0 --source-device 0,1,0 --speed 4 --buffers 64 \
     --reload --eject --on-the-fly --fast-toc --paranoia-mode 0

Con la opción --paranoia-mode le especificamos en que modo ha de ser paranoico a la hora de extraer las pistas de audio, si le especificamos 0, será lo menos posible y es el que se recomienda a la hora de grabar al vuelo ya que se desactiva la verificacion de errores, que como es normal, reduce la transeferencia de datos ya que la unidad lectora se dedica más tiempo a comprobar los posibles defectos de las pistas e intentar corregirlos que a pasarle los datos a la grabadora, por lo que si no le ponemos este modo es muy posible que se produzca un buffer underrun y perder el CD.

Si lo que queremos es que los verifique le indicamos modo 3 y será tan paranoico que para extraer una pista de audio en un lector 32X SCSI (como mi TEAC) tardará más tiempo que dura la misma cancion al reproducirla; con esto el programa se asegura de que no pierda calidad y de correguir posibles errores en el CD. Este modo es recomendable cuando tengamos algun CD en mal estado y la única forma de poder grabarlo sea volcando primero a disco duro.

7.3.2 Extracción y grabación de imágenes DAO con cdrdao.

Otra de las funciones que nos puede interesar muchisimo es la de extraer una imagen al disco duro, como por ejemplo para lo dicho anteriormente, para cuando tengamos algun CD que no podamos grabar al vuelo por estar defectuoso, o bien, para grabarlo mas tarde. El comando a utilizar es el siguiente:

     cdrdao read-cd -v 2 --device 0,1,0 --read-raw --datafile imagen.bin imagen.toc

De esta forma conseguimos extraer una imagen en el archivo imagen.bin del contenido del CD-ROM fuente y el en archivo imagen.toc almacenamos la información que nos servirá posteriormente para poder grabar y dejar el nuevo CD tal y como estaba el original. El comando a utilizar es el siguiente:

     cdrdao write -v 2 --device 0,3,0 --speed 4 --buffers 64 imagen.toc

Como habrá notado, no hemos indicado el nombre de la imagen ya que la toma del archivo que contiene la información TOC. El indicarle la opción --datafile con el nombre de la imagen es sólo para identificarla, por si tenemos más de una extraida en el disco duro; sino, por defecto la imagen se llamará data.bin. Si diese la casualidad de que ya hubiera un archivo con el mismo nombre, el programa detendrá el proceso mostrando una advertencia, indicando de que ya existe el archivo.

También se puede usar el cdrdao para copiar una imagen de datos que hayamos hecho, pero no lo recomiendo; ya que primero tenemos que crear un archivo TOC, cosa que resulta más laborioso que copiarla con el cdrecord.

7.3.3 Scripts que acompañan a cdrdao.

Se puede usar cdrdao para copiar archivo .wav, y que gracias a un script en PERL que incluye en el directorio /contrib/wav2dao/ del paquete del código fuente podamos copiar dichas pistas sin que al final de las mismas nos ponga 2 segundos de silencio.

Para obtener la ayuda del programa ponemos:

     wav2dao.pl -H

Deberia funcionar simplemente con

     wav2dao.pl -d /dev/sr0 -w -n *.wav

En el directorio de los fuentes /contrib/mp32dao/ encontramos otro script en PERL para realizar de forma automática la extracción de los archivo .mp3 a .wav, nos crea la TOC y nos graba el CD, interesante, ¿no?. Debido a la falta de algunos archivos en la distribución del PERL en mi sistema no he podido probarlo. Este script hace uso del programa mpg123 que se encuentra en la mayoria de distribuciones del mercado o bien por internet.

Puede que necesite completar su distribución perl con módulos del CPAN (Comprehensive Perl Archive Network) http://www.cpan.org para hacer uso de este script.

7.3.4 Duplicado de CD-ROMs de PlayStation con CDRDAO.

Por último tenemos en el directorio /contrib/psxcopy-x.y/ dos programas y dos scripts para la extracción y copia de los dichosos CDs de PlayStation. Lo siento por aquellos que quieran copiar dichos CDs al vuelo, pero de momento no soportan dicha función, tal vez mas adelante, pero hay que reconocer que ya es un comienzo que por lo menos se puedan grabar, ¿no?.

Pues bien, lo primero es compilar los dos programas que son necesarios y luego instalarlos. Una vez compilados sin errores hacemos que los scripts read-psx y write-psx sean ejecutables. Como son dos scripts normales, habrá que editarlos y modicicar los parámetros para que apunten a nuestra unidad lectora y grabadora respectivamente en cada archivo. Una vez hecho eso simplemente introducimos el CD fuente en la unidad lectora, tecleamos:

     read-psx cd1

y una vez extraído

     write-psx cd1

7.3.5 A tener en cuenta

Hay más posibilidades pero las descritas anteriormente son las que son más faciles de usar y que más nos pueden interesar. En próximas versiones ampliaremos el contenido dedicado a este fabuloso programa.

Tambien indicar que en el mismo paquete de las fuentes se encuentra un interfaz para X, el problema es que no soporta la grabación al vuelo.

ATENCION: Durante la utilización del programa para la duplicación de un CD-ROM al vuelo, no se podrá acceder de ninguna de las maneras a la unidad. Si se intenta montar la unidad fuente, por ejemplo, el proceso de grabación terminará con errores y el CD origen no se completará, perdiedo un disco. Esto se puede comprobar grabando un disco en modo de pruebas o de simulación y accediendo a la unidad desde donde se obtienen los datos.

8 Preguntas de Uso Frecuente

8.1 Cuando grabo con cdrdao, muestra una capacidad de casi 750 megas para un CD 74 minutos. ¿Esto a que se debe?

Una curiosidad que se observa mientras se está grabando un CD con el programa es que en lugar de decirnos el tamaño de cada pista que se está grabando nos muestra una capacidad abismal del borde de los 750 megas para un CD 74 minutos completo.

Esto se debe a que la grabación que ofrece este programa no es en megas reales de ordenador sino en megas de CD, que en lugar de ser de 8/16/32 bits es de 12’5 bits, de ahí el tamaño. No tiene porque asustarse, es completamente normal. Otra de las ventajas que he podido apreciar es que ofrece mucha información sobre el CD antes de realizar el proceso de grabación.

8.2 Me sale un mensaje muy parecido al siguiente después de que el disco duro deje de funcionar durante unos segundos.

Me sale este mensaje después de que el disco duro deje de funcionar durante unos segundos:

     hda: irq timeout: status=0x58 { DriveReady SeekComplete DataRequest}
     hda: disabled DMA
     ide0: reset: success

Tiene que recompilar el kernel y desactivar el soporte para el chip Intel Tritón (I/II) DMA, ya que su disco duro no soporta extracción por DMA.

Esto puede ocasionar problemas a la hora de estar grabando un CD, puesto que el disco duro se puede parar durante 6 a 9 segundos, hasta que el kernel se da cuenta, resetea el IDE y desactiva la extracción DMA para ese disco, (con las unidades de CD-ROM que no lo soporten también) tiempo suficiente para que el CD pueda salir dañado al no llegarle constantemente los datos.

En el caso de estar emulando dispositivos SCSI es rotundamente necesario desactivar dicha opción en el kernel ya que en el momento en que pase, el bus se quedará colgado al hacer interferencia el controlador IDE y la emulación SCSI, haciendo que no pueda leer de las unidades al estar literalmente bloqueadas, por lo que el único remedio suele ser apagar el ordenador.

8.3 ¿Hay alguna forma de hacer una imagen exacta de un CD al disco duro que no sea copiar los ficheros del CD al disco y luego sacar la imagen?

Sí. Hay una forma de transferir una copia binaria de un CD directamente a disco duro, haciendo simplemente un cat o dd del dispositivo donde tenga la unidad lectora de CD (normalmente el enlace /dev/cdrom) y redireccionando a un archivo o partición libre en el disco duro; de esta forma podremos hacer una imagen exacta del CD si no tenemos una unidad secundaria desde donde copiarlo, o si queremos comprobar la legibilidad del CD.

Un ejemplo de cómo se hace es

     cat /dev/cdrom > imagenCD.iso

o

     dd if=/dev/cdrom of=imagenCD.iso

una vez hecho esto sólo tenemos que usar esa imagen para grabar y obtendremos una copia exacta del CD original. Si el CD lleva pistas de audio tendrá que extraer las pistas de audio primero a disco con un extractor digital como cdda2wav, o readcdda, suponiendo que su lector lo soporte, sino puede hacerlo desde la grabadora (ver sección 8.13).

8.4 ¿Se puede copiar de CD a CD (sólo de datos) directamente sin ningún problema?

Efectivamente se puede copiar de CD a CD sólo de datos sin ningún problema, pero eso sí, (el típico pero) no es nada recomendable hacer la copia desde un CD IDE y sobre todo si la unidad lectora se para o hace cosas raras. Para las grabadoras IDE no recomiendo (como ya dije anteriormente) que ponga la unidad lectora en el mismo puerto IDE que la grabadora. Si lo hace así, hágale muchas pruebas antes de proceder.

Para grabar directamente de CD a CD basta con indicarle al programa grabador que la imagen la obtenga del dispositivo lector, es decir /dev/scdX.

     cdrecord -v dev=0,0,0 speed=2 fs=8M -isosize -eject /dev/sr1

En este ejemplo podemos ver cómo se hace una copia directa desde la unidad lectora a la grabadora (IDE en este caso), y si se da cuenta, el parámetro -isosize es para forzar al programa grabador a que determine primero el tamaño del CD imagen ya que por sí solo no lo hace, e intenta leer los dos ultimos bloques, pudiendo resultar un CD defectuoso.

8.5 ¿Puedo duplicar directamente un CD mixto o de audio?

Actualmente, solo un programas para grabación de CDs bajo Linux permite duplicar directamente un CD mixto (1 o varias pistas de datos y una o varias de audio) sin extraer al menos las de audio a disco duro gracias a que soporta duplicación de tipo DAO (Disk At Once) y OTH (On The Fly). Por supuesto, la unidad grabadora ha de soportarlo, además del programa; además, el lector de CDRom ha de estar soportado por el programa para poder extraer las pistas.

Ver sección 7.3.

8.6 ¿Puedo duplicar CDs en formato xa2? (Por ejemplo, de PlayStation)

La respuesta a si se puede duplicar un CD en mode xa2 es sí.

SI. ¿Cómo? ¿Ahora sí? Pues sí, gracias al cdrdao ahora es posible duplicar CDs de PlayStation.

El problema de los CD-ROM de PlayStation es que incorporan un sistema de grabación basado en la pista 0. Esta pista está grabada como de datos y es errónea desde el punto de vista del estándar ISO9660 . No obstante, con las extensiones de nuestros sistemas somos capaces de leerlas. Al copiar con cdrecord la pista 0 pasa a ser pista 1; la PlayStation no coge el CD, ya que el busca la pista 0 sin encontrarla. Esa es la razón de usar un programa tipo DAO/OTH para hacer este tipo de copias.

software/grabadora/lector que soportase duplicación DAO, como ahora lo hay. Ver sección 8.5.

8.7 ¿Hay alguna FAQ genérica sobre CD-R o CD-RW?

Sí. En ella puede consultar desde qué tipo de CD-R vírgenes son mejor para qué cosa hasta qué grabadora es la más recomendable, o cuáles son en realidad productos OEM basados en marcas conocidas.

Su autor es Andy McFadden, puede consultarla en http://www.fadden.com/cdrfaq/ Eso sí, está en inglés, aunque puede aprovechar el traductor de Altavista:

http://babelfish.altavista.digital.com/cgi-bin/translate.

La traducción es un poco burda, pero menos da una piedra... :).

8.8 He grabado un CD de Audio, pero al escucharlo sólo se oye un zumbido horripilante...

Consulte la sección 6.2, Ha utilizado el orden de palabra binaria endian equivocado para grabar ficheros de audio.

8.9 Problemas con más de un dispositivo en controladoras SCSI NCR

Poseo una controladora Ultra-SCSI NCR 53c810a a la cual tenia conectada la grabadora, y en las opciones de configuración del kernel me aparecen una serie de parametros opcionales que no recomiendan ellos mismos que se activen, a no ser que los dispositivos den problemas o cuelguen el sistema.

Pues bien, cuando tenía sólo la grabadora y estos tres parámetros activados efectivamente el sistema se colgaba. Posteriormente adquirí una unidad lectora SCSI para poder realizar duplicaciones directas, pero en las duplicaciones aparecían errores por todos sitios.

Me di cuenta de que la unidad lectora no funcionaba a todo su rendimiento, asi que activé todas las opciones del kernel para mi controladora, solucionando el problema y comprobando que mi sistema no se caía.

Pero los problemas no acabaron ahí, cuando intentaba extraer audio la controladora se me colgaba, teniendo que resetear, así que me puse a recompilar el kernel de nuevo y cuál fue mi sorpresa al ver que no sólo había ese controlador para las tarjetas NCR de la serie 53c8xx.

El problema no era de la controladora sino del controlador que estaba usando. Por lo tanto cambié de controlador al más novedoso y recomendable, el ncr53c8xx, solucionando el problema y dejando de tener todos los inconvenientes anteriormente citados, funcionando todo a la primera.

De aquí deduzco que hay que fijarse mucho en todos los controladores disponibles, ya que por ejemplo para las controladoras NCR hay más de uno; familiarícese con su controladora.

Esto es un ejemplo de lo que puede pasar si el controlador de su dispositivo SCSI no corresponde lo mas recientemente con su controladora SCSI.

8.10 ¿Como se crea un CD Mixto?

Para crear un CD en modo mixto, es decir, con una primera pista de datos y las siguientes de audio hemos de crear una imagen de datos con el mkisofs y tener las pistas de audio listas en algún directorio, procediendo con cdrecord de la siguiente manera:

     cdrecord -v dev=4,0 speed=2 fs=16m -eject image.raw -audio /wavs/*.wav

y si lo que queremos es copiar una CD de este tipo, lo primero es extraer las pistas de audio al disco duro con, por ejemplo, el cdda2wav y luego usar el cdrecord de esta forma:

     cdda2wav -D 0,2,0 -B -t 2+9
     cdrecord -v dev=1,0 speed=4 fs=16m -nopad defpregap=0 pregap=0 -isosize \
     /dev/cdrom -audio *.wav

Las opciones que he incluido -nopad defpregap=0 pregap=0 nos sirven para que el CD ocupe un poco menos al ser grabado y no grabar espacios entre las imágenes. Recomiendo usarlas en las copias de CD mixtos y CD Plus.

8.11 ¿Como se graba un CD multisesión?

ATENCION: No es posible crear CDs Multisesion con formato Joliet.

El asunto de un CD multisesión es complicadillo. Si comenzamos con que hemos grabado una imagen digamos de 200 MB y también queremos grabar otra de otros 200 MB a continuación no podremos, es decir, primero tendremos que grabar una, y después crear la segunda imagen con unas opciones que tenemos que sacar de cdrecord, pasándoselas a mkisofs como muestra el ejemplo:

     cdrecord dev=4,0 -msinfo

Para obtener el número que hace falta, es decir, la información multisesión del CD. Sólo funciona con CDs que hayan sido grabados con la opción -multi. Entonces le pasamos a mkisofs el número que puede ser: 0,131456 de la siguiente forma:

     mkisofs -v -a -C 0,131456 -r -R -T -V "CDROM" -N /imagen1.iso -o /imagen2.iso /files/.

Como se puede observar, también se ha incluido el parámetro -N con el nombre de la imagen anteriormente copiada al CD, aunque si la hemos copiado podemos indicarle el nombre del dispositivo en el que se encuentra, si bien no he comprobado esto último.

Luego procedemos a copiar la imagen con el cdrecord de forma normal con el parámetro -multi para que sea multisesión.

8.12 ¿Como se crea un CD Plus?

¿Pero qué es un CD Plus? Un CD Plus contiene primero pistas de audio y al final una pista de datos. ¿Qué raro no? ¿Y para qué sirve? Se usa de forma común para usar este tipo de CDs con lectores de CD-Audio normales, ¿Ha probado a escuchar un CD de datos en un lector de CD-Audio normal? Para crear este tipo de CDs lo primero es crear una imagen sin archivos en ella, es decir, hacer una imagen básica desde un directorio en el que no hayan archivos. Grabamos las pistas de audio y la imagen básica que hemos creado con la siguiente sentencia:

     cdrecord -v dev=4,0 speed=4 fs=16m -multi -audio *.wav -data imagen.iso

una vez grabada, obtenemos la información de multisesión del CD y hacemos la imagen y la grabamos de la misma forma que está explicada en la sección 8.11.

8.13 ¿Se puede usar la grabadora para leer o extraer?

Sí, pero es algo altamente desancosejable. Las razones:

• MTBF de una grabadora (su tiempo de vida útil) suele ser muy bajo (unas 30000 horas) comparado con el de un lector de CD (unas 150000).

• El precio de un lector de CD IDE decente es aproximadamente de un 15% a un 20% respecto al de una grabadora, y entre un 20% y un 25% si es SCSI.

• Las velocidades de lectura de los lectores suelen ser de 40x o incluso 50x. Las de las grabadoras, no pasan de 10x.

De lo cual se deduce que no es nada rentable, por no decir efectivo, malgastar la vida útil de una grabadora en emplearla como lector.

8.14 Tengo una grabadora HP-7500, y cdrecord me hace cosas raras...

Como por ejemplo, en un -scanbus:

     bus, target: 0, ,0,0      0  'PIONEER ' 'CD-ROM DR-A02S  ' '1.08' Removable CD-ROM
     bus, target: 0, ,1,0      1  'HP      ' 'CD-Writer+ 7500 ' '1.0a' Removable CD-ROM
     0,,1,0    1,0 ('HP      ' 'CD-Writer+ 7500 ' '1.0a' Removable CD-ROM) == 0,,1,0
     1,0 ('HP      ' 'CD-Writer+ 7500 ' '1.0a' Removable CD-ROM)

O fallos continuos...

Necesita aplicar un parche a cdrecord, y recompilarlo para que soporte adecuadamente su grabadora.

En http://www.guug.de:8080/cgi-bin/winni/lsc.pl puede obtenerlo.

8.15 CDRDAO no detecta bien mi unidad

La única solución es leer bien el archivo README que acompaña al programa y comprobar si su unidad está realmente soportada en la lista que acompaña. Si realmente no está tiene la posibilidad de enviar un mail al autor para que añada soporte para ella. Pero antes de hacer eso, pruebe con todos los controladores de unidades que soporta el programa, a lo mejor alguno de ellos funciona.

8.16 Sugerencias y peticiones

NOTA: Dejo este apartado tal y como está para que se siga aportado ayuda a otros programas que lo necesiten. Si bien el que mas promete en este aspecto es cdrdao pido que el que pueda ayudar en su desarrollo no deje de lado tal programa que nos ayudará mucho si lo aprendemos a utilizar. Referirse al apartado del programa 7.3

Desde este documento pido la ayuda, dedicación que cada uno pueda aportar a la creación/desarrollo de algún programa DAO (Disk-At-Once) para la duplicación de CD-ROMs, ya que es muy costoso y trabajoso la creación o duplicación de CD Mixtos y de Audio, para que linux esté a la altura de hacer las cosas como lo hacen programas de este tipo para otras plataformas, como los conocidos DAO/CDRWIN de MS-DOS/Windows respectivamente de la empresa Golden Hawk y Adaptec Easy CD/Pro.

9 Créditos

Éste documento ha sido escrito por Leandro Terrés lord lt@retemail.es tras leer varios documentos en inglés, tanto el CDWriters-HOWTO como los manuales de varios programas que he comentado y gracias a la experiencia obtenida en este campo.

Otras partes de este documento son de incorporación propia y pruebas que he ido haciendo, a base de perder algún que otro CD con grabadoras IDE, que es la parte más actual por la que se ha hecho éste documento.

Éste documento es propiedad intelectual de Leandro Terrés como parte del Insflug, y del LDP (Linux Documentation Proyect). Para cualquier modificación, añadidura, traducción, etc. póngase en contacto con el autor.

Colaboraciones, añadiduras y correcciones:

• Jorge de Diego Rodríguez, toke@toke.net por su inestimable ayuda en la finalización del apartado sobre las grabadoras IDE/ATAPI por puerto paralelo.

• Revisión, reestructuración, formateo y ampliación (SCSI, extracción de audio), Francisco J. Montilla,

     pacopepe@insflug.org

a los que desde aqui doy mis más sinceras gracias por la ayuda prestada.

10 Anexo: El INSFLUG

El INSFLUG forma parte del grupo internacional Linux Documentation Project, encargándose de las traducciones al castellano de los Howtos (Comos), así como la producción de documentos originales en aquellos casos en los que no existe análogo en inglés.

En el INSFLUG se orienta preferentemente a la traducción de documentos breves, como los COMOs y PUFs (Preguntas de Uso Frecuente, las FAQs. :) ), etc.

Diríjase a la sede del INSFLUG para más información al respecto.

En la sede del INSFLUG encontrará siempre las últimas versiones de las traducciones <<oficiales>>: www.insflug.org. Asegúrese de comprobar cuál es la última versión disponible en el Insflug antes de bajar un documento de un servidor réplica.

Además, cuenta con un sistema interactivo de gestión de fe de erratas y sugerencias en línea, motor de búsqueda específico, y más servicios que estamos trabajando incesantemente para añadir.

Se proporcionará también una lista de los servidores réplica (mirror) del Insflug más cercanos a Vd., e información relativa a otros recursos en castellano.

En http://www.insflug.org/insflug/creditos.php3 cuenta con una detallada relación de las personas

que hacen posible tanto esto como las traducciones.

¡Diríjase a http://www.insflug.org/colaboracion/index.php3 si desea unirse a nosotros!.

Francisco José Montilla, pacopepe@insflug.org.