Los CD tienen muchas opciones que los hacen distintos de los discos convencionales. Al principio los usuarios no podían escribirlos. Su diseño permite que leamos en ellos sin el retardo del movimiento de una cabeza lectora de una pista a otra. También son mucho más fáciles de transportar de un sistema a otro que muchos otros soportes de información.
Los CD tienen pistas, pero son una sección de los que permiten lectura contínua, no una propiedad física del disco. Para crear un CD en FreeBSD debe preparar los ficheros de datos que van a constituir las pistas del CD y luego escribir las pistas al CD.
El sistema de ficheros ISO 9660 se diseñó para gestionar estas diferencias. Por desgracia implementa límites de sistema de ficheros que eran comunes en la época en que se diseñó. Por suerte también proporciona un mecanismo de extensiones que permite que CD escritos excediendo dichos límites funcionen en sistemas que no soportan esas extensiones.
El port sysutils/cdrtools incluye mkisofs(8), un programa que le permitirá crear un fichero de datos que contenga un sistema de ficheros ISO 9660. Incorpora opciones que soportan varias extensiones. Se describe más adelante.
Qué herramienta usar para grabar el CD depende de si su grabadora es ATAPI o no. Las grabadoras de CD ATAPI usan el programa burncd, que forma parte del sistema base. Las grabadoras SCSI y USB usan cdrecord, del port sysutils/cdrtools.
burncd no soporta cualquier unidad de grabación. Para saber si una unidad está soportada consulte la siguiente lista de unidades CD-R/RW soportadas.
Nota: Si utiliza FreeBSD 5.X, FreeBSD 4.8-RELEASE o posteriores, puede utilizar cdrecord y otras herramientas para unidades SCSI en hardware ATAPI con el módulo ATAPI/CAM.
Si quiere usar un interfaz gráfico con su software de grabación de CD quizás le guste X-CD-Roast o K3b. Puede instalar estas herramientas como paquetes o desde los ports sysutils/xcdroast y sysutils/k3b, respectivamente. X-CD-Roast y K3b requieren el módulo ATAPI/CAM si usa hardware ATAPI.
El programa mkisofs(8) (que forma parte del port sysutils/cdrtools) genera un sistema de ficheros ISO 9660 que es una imagen de un árbol de directorios en el espacio de nombres del sistema de ficheros UNIX®. Esta es la forma más simple de usarlo:
# mkisofs -o ficherodeimagen.iso /ruta/del/árbol
Este comando creará un ficherodeimagen.iso que contenga un sistema de ficheros ISO 9660 que es una copia del árbol ubicado en /ruta/al/árbol. En el proceso, mapeará los nombres de fichero a nombres que se ajusten a las limitaciones del estándar del sistema de ficheros ISO 9660, y excluirá ficheros que posean nombres no característicos de sistemas de ficheros ISO.
Existe gran cantidad de opciones que permiten superar esas restricciones. En
particular, -R
habilita las extensiones Rock Ridge comunes
para sistemas UNIX, -J
habilita las extensiones Joliet usadas por sistemas Microsoft y -hfs
puede usarse para crear sistemas de ficheros utilizados por
Mac OS®.
Puede utilizar -U
para deshabilitar todas las
restricciones de nombres de fichero si quiere crear un CD que se vaya a usar
exclusivamente en sistemas FreeBSD. Cuando se usa con -R
produce una imagen de sistema de ficheros que es idéntica al árbol FreeBSD origen, aunque
puede violar el estándar ISO 9660 de múltiples formas.
La última opción de uso general es -b
. Se usa para
configurar la ubicación de la imagen de arranque que se usará al crear un CD arrancable
“El Torito”. Esta opción usa como argumento la ruta a la imagen de arranque
desde la raíz del árbol de directorios que se va a escribir en el CD. Por defecto
mkisofs(8) crea
una imagen ISO en un modo llamado “de emulación de disquete (floppy)”, y por
lo tanto espera que la imagen de arranque sea exactamente de 1.200, 1.440 o 2880 KB de
tamaño. Algunos cargadores de arranque, como el que se usa en los discos de la
distribución FreeBSD, no utilizan modo de emulación: se usa la opción -no-emul-boot
. Por tanto, si /tmp/miarranque tiene un sistema FreeBSD arrancable con la imagen
de arranque en /tmp/miarranque/boot/cdboot podría crear la
imagen en un sistema de ficheros ISO 9660 en /tmp/arrancable.iso de la siguiente manera:
# mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/arrancable.iso /tmp/miarranque
Hecho esto, si tiene vn (FreeBSD 4.X), o md (FreeBSD 5.X) configurado en su kernel, puede montar el sistema de ficheros del siguiente modo:
# vnconfig -e vn0c /tmp/arrancable.iso # mount -t cd9660 /dev/vn0c /mnt
En FreeBSD 4.X y FreeBSD 5.X proceda del siguiente modo:
# mdconfig -a -t vnode -f /tmp/arrancable.iso -u 0 # mount -t cd9660 /dev/md0 /mnt
Ahora puede verificar que /mnt y /tmp/miarranque sean idénticos.
Existen muchas otras opciones que puede usar para depurar el comportamiento de mkisofs(8), sobre todo en lo que se refiere al esquema ISO 9660 y la creación de discos Joliet y HFS. Consulte el manual de mkisofs(8).
Si tiene una grabadora ATAPI puede usar burncd para grabar una imagen ISO en un CD. burncd forma parte del sistema base, y está en /usr/sbin/burncd. Su uso es muy sencillo, ya que tiene pocas opciones:
# burncd -f unidaddecd data ficheroimagen.iso fixate
Esto grabará una copia de ficheroimagen.iso en unidadcd. El dispositivo por defecto es /dev/acd0 (o /dev/acd0c en FreeBSD 4.X). Consulte burncd(8) para ver las opciones de configuración de velocidad de escritura, expulsión de CD una vez grabado, y escritura de datos de audio.
Si no dispone de una grabadora ATAPI de CD, tendrá que usar cdrecord para grabar sus CD. cdrecord no forma parte del sistema base; instálelo desde el port sysutils/cdrtools o como paquete. Los cambios en el sistema base pueden hacer que las versiones binarias del programa fallen. Tendrá que actualizar el port cuando actualice su sistema o, si está siguiendo la rama -STABLE, actualizar el port cuando haya una nueva versión disponible.
Aunque cdrecord tiene muchas opciones, el uso básico es incluso más simple que el de burncd. Así se graba una imagen ISO 9660:
# cdrecord dev=dispositivo ficheroimagen.iso
La parte complicada de utilizar cdrecord es encontrar qué
dev
usar. Utilice la bandera -scanbus
para dar con la configuración apropiada. La salida será
parecida a la siguiente:
# cdrecord -scanbus Cdrecord 1.9 (i386-unknown-freebsd4.2) Copyright (C) 1995-2000 Jörg Schilling Using libscg version 'schily-0.1' scsibus0: 0,0,0 0) 'SEAGATE ' 'ST39236LW ' '0004' Disk 0,1,0 1) 'SEAGATE ' 'ST39173W ' '5958' Disk 0,2,0 2) * 0,3,0 3) 'iomega ' 'jaz 1GB ' 'J.86' Removable Disk 0,4,0 4) 'NEC ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM 0,5,0 5) * 0,6,0 6) * 0,7,0 7) * scsibus1: 1,0,0 100) * 1,1,0 101) * 1,2,0 102) * 1,3,0 103) * 1,4,0 104) * 1,5,0 105) 'YAMAHA ' 'CRW4260 ' '1.0q' Removable CD-ROM 1,6,0 106) 'ARTEC ' 'AM12S ' '1.06' Scanner 1,7,0 107) *
Esta lista muestra los valores dev
apropiados para los
dispositivos de la lista. Localice su grabadora de CD y utilice los tres números
separados por comas como valor para dev
. En este caso, el
dispositivo CDW es 1,5,0 y por tanto la entrada apropiada sería dev=1,5,0
. Hay modos más fáciles de especificar este valor;
consulte
cdrecord(1) para
más detalles. También es el lugar donde buscar información sobre la escritura de pistas
de audio, controlar la velocidad de escritura y muchas más cosas.
Puede duplicar un CD de audio extrayendo los datos de audio del CD a ficheros y escribir estos ficheros en un CD virgen. El proceso es ligeramente diferente en unidades ATAPI y SCSI.
Unidades SCSI
Use cdda2wav para extraer el audio.
% cdda2wav -v255 -D2,0 -B -Owav
Use cdrecord para escribir los ficheros .wav.
% cdrecord -v dev=2,0 -dao -useinfo *.wav
Asegúrese de que 2,0 este configurado apropiadamente, como se describe en la Sección 18.6.4.
Unidades ATAPI
El controlador de CD ATAPI hace que cada pista sea accesible como /dev/acddtnn, donde d es el número de unidad y nn es el número de pista expresado con dos dígitos decimales, precedido por un cero si es necesario. La primera pista del primer disco es /dev/acd0t01, la segunda es /dev/acd0t02, la tercera es /dev/acd0t03 y así sucesivamente.
Asegúrese de que existen los ficheros apropiados en /dev.
# cd /dev # sh MAKEDEV acd0t99
Nota: En FreeBSD 5.0 devfs(5) creará y gestionará automáticamente las entradas necesarias en /dev, así que no será necesario usar MAKEDEV.
Extraer cada pista con dd(1). También deberá declarar un tamaño específico de bloque al extraer los ficheros.
# dd if=/dev/acd0t01 of=pista1.cdr bs=2352 # dd if=/dev/acd0t02 of=pista2.cdr bs=2352 ...
Grabar los ficheros extraídos a disco con burncd. Debe declarar que son ficheros de audio y que burncd debe cerrar (“fixate”) el disco al terminar la grabación.
# burncd -f /dev/acd0 audio pista1.cdr pista2.cdr ... fixate
Puede copiar un CD de datos a un fichero de imagen que será funcionalmente equivalente al fichero de imagen creado con mkisofs(8), y puede usarlo para duplicar cualquier CD de datos. El ejemplo dado aquí asume que su dispositivo CDROM es acd0. Sustitúyalo por el dispositivo CDROM correcto para su configuración. Bajo FreeBSD 4.X, se debe añadir una c al final del nombre del dispositivo para indicar la partición entera o, en el caso de los CDROM, el disco entero.
# dd if=/dev/acd0 of=fichero.iso bs=2048
Hecha la imagen puede garbarla en un CD como se describió anteriormente.
Ahora que ha creado un CDROM de datos estándar tal vez quiera montarlo y leer los datos que contiene. Por defecto mount(8) asume que los sistemas de ficheros son de tipo ufs. Si trata de hacer algo como
# mount /dev/cd0 /mnt
recibirá un error como este: “Incorrect super
block” y no se montará. Un CDROM no es un sistema de ficheros UFS así que los intentos de montarlo como tal fallarán. Tendrá que
decirle a mount(8) que el
sistema de ficheros es de tipo ISO9660 y funcionará. Puede
hacerlo mediante la opción -t cd9660
. Por ejemplo, si quiere
montar el dispositivo CDROM /dev/cd0 en /mnt ejecute:
# mount -t cd9660 /dev/cd0 /mnt
Tenga en cuenta que el nombre de su dispositivo (/dev/cd0 en
este ejemplo) puede ser diferente, dependiendo de la interfaz que su CDROM utilice.
Además la opción -t cd9660
sólo ejecuta mount_cd9660(8). El
ejemplo de arriba puede resumirse del siguiente modo:
# mount_cd9660 /dev/cd0 /mnt
En general puede usar CDROM de datos de cualquier fabricante, aunque los discos con ciertas extensiones ISO 9660 pueden mostrar un comportamiento extraño. Por ejemplo, los discos Joliet almacenan todos los nombres de fichero en caracteres unicode de dos-bytes. El kernel de FreeBSD no comprende unicode (todavía) así que los caracteres que no están en inglés aparecen como signos de interrogación. (Si utiliza FreeBSD 4.3 o alguna versión posterior, el controlador CD9660 incluye unas estructuras llamadas “ganchos”, que le permitirán cargar una tabla de conversión unicode apropiada cuando haga falta. Hay módulos para algunas de las codificaciones más comunes en el port sysutils/cd9660_unicode.)
Es posible que reciba un error “Device not configured” al tratar de montar un CDROM. Generalmente esto significa que la unidad de CDROM piensa que no hay disco en la bandeja, o que la unidad no es visible en el bus. Puede llevar un par de segundos el que una unidad de CDROM se dé cuenta de que ha sido alimentada, por lo tanto sea paciente.
Algunas veces un CDROM SCSI puede “perdido” debido a que no tuvo tiempo suficiente para responder al reset del bus. Si tiene un CDROM SCSI añada la siguiente opción a su fichero de configuración del kernel y recompile su kernel.
options SCSI_DELAY=15000
Esto le indica a su bus SCSI que haga una pausa de 15 segundos durante el arranque para darle ocasión a su unidad de CDROM de responder al reset del bus.
Puede guardar un fichero directamente a CD sin crear un sistema de ficheros ISO 9660. Algunas personas hacen esto al crear respaldos. Es un proceso más rápido que grabar un CD estándar:
# burncd -f /dev/acd1 -s 12 data fichero.tar.gz fixate
Para recuperar los datos guardardados de este modo en un CD, debe leer los datos desde el nodo de dispositivo “crudo”:
# tar xzvf /dev/acd1
No puede montar este disco como lo haría con un CDROM normal. Estos CDROM no pueden leerse en ningún sistema operativo que no sea FreeBSD. Si quiere montar el CD o compartir los datos con otro sistema operativo debe utilizar mkisofs(8) como se describió previamente.
Este controlador permite que dispositivos ATAPI (CD-ROM, CD-RW, unidades DVD, etc) sean accesibles a través del subsistema SCSI y por lo tanto permite el uso de aplicaciones como sysutils/cdrdao o cdrecord(1).
Para usar este controlador necesitará añadir la siguiente línea al fichero de configuración de su kernel:
device atapicam
Es posible que necesite también las siguientes líneas en el fichero de configuración de su kernel:
device ata device scbus device cd device pass
(que, por otra parte, ya deberín estar presentes).
Recompile, instale su nuevo kernel y reinicie su máquina. Durante el proceso de arranque su grabadora debe ser detectada; veamos un ejemplo:
acd0: CD-RW <MATSHITA CD-RW/DVD-ROM UJDA740> at ata1-master PIO4 cd0 at ata1 bus 0 target 0 lun 0 cd0: <MATSHITA CDRW/DVD UJDA740 1.00> Removable CD-ROM SCSI-0 device cd0: 16.000MB/s transfers cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed
Puede acceder a la unidad a través del del nombre de dispositivo /dev/cd0; por ejemplo, para montar un CDROM en /mnt, teclée lo siguiente:
# mount -t cd9660 /dev/cd0 /mnt
Como root, puede ejecutar el siguiente comando para obtener las direcciones SCSI del dispositivo:
# camcontrol devlist <MATSHITA CDRW/DVD UJDA740 1.00> at scbus1 target 0 lun 0 (pass0,cd0)
Según esto, 1,0,0 será la dirección SCSI a utilizar con cdrecord(1) y otras aplicaciones SCSI.
Para mayor información sobre sistemas ATAPI/CAM y SCSI, diríjase a las páginas de manual atapicam(4) y cam(4).
Anterior | Inicio | Siguiente |
Dispositivos de almacenamiento USB | Subir | Crear y utilizar medios ópticos (DVDs) |
Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista
<[email protected]>.
Envíe sus preguntas sobre la documentación a <[email protected]>.