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.
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.
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, “cdrecord”.
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
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).
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
<questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a
<doc@FreeBSD.org>.