19.7. 创建和使用光学介质(DVD)

Contributed by Marc Fonvieille.
With inputs from Andy Polyakov.

19.7.1. 介绍

和 CD 相比,DVD 是下一代光学存储介质技术。 DVD 可以容纳比任何 CD 更多的数据,已经成为现今视频出版业的标准。

我们称作可记录 DVD 的有五种物理记录格式:

  • DVD-R:这是第一种可用的 DVD 可记录格式。 DVD-R 标准由 DVD Forum 定义。 这种格式是一次可写的。

  • DVD-RW:这是 DVD-R 标准的可覆写版本。 一张 DVD-RW 可以被覆写大约 1000 次。

  • DVD-RAM:这也是一种被 DVD Forum 所支持的可覆写格式。 DVD-RAM 可以被看作一种可移动硬盘。 然而,这种介质和大部分 DVD-ROM 驱动器以及 DVD-Video 播放器不兼容; 只有少数 DVD 刻录机支持 DVD-RAM。 请参阅 第 19.7.9 节 “使用 DVD-RAM” 以了解关于如何使用 DVD-RAM 的进一步详情。

  • DVD+RW:这是一种由 DVD+RW Alliance 定义的可覆写格式。一张 DVD+RW 可以被覆写大约 1000 次。

  • DVD+R:这种格式是 DVD+RW 格式的一次可写变种。

一张单层的可记录 DVD 可以存储 4,700,000,000  字节,相当于 4.38 GB 或者说 4485 MB (1 千字节等于 1024 字节)。

注意:

必须说明一下物理介质与应用程序的分歧。 例如 DVD-Video 是一种特殊的文件系统, 可以被覆写到任何可记录的 DVD 物理介质上: DVD-R、DVD+R、DVD-RW 等等。在选择介质类型之前, 您一定要确认刻录机和 DVD-Video 播放器 (一种单独的播放器或者计算机上的 DVD-ROM 驱动器) 是和这种介质兼容的。

19.7.2. 配置

growisofs(1) 将被用来实施 DVD 刻录。 这个命令是 dvd+rw-tools 工具集 (sysutils/dvd+rw-tools) 的一部分。 dvd+rw-tools 支持所有的 DVD 介质类型。

这些工具将使用 SCSI 子系统来访问设备,因此 ATAPI/CAM 支持 必须加入内核。 如果您的刻录机采用 USB 接口则不需要这么做,请参考 第 19.5 节 “USB 存储设备” 来了解 USB 设备配置的进一步详情。

此外,还需要启用 ATAPI 设备的 DMA 支持。 这一工作可以通过在 /boot/loader.conf 文件中加入下面的行来完成:

hw.ata.atapi_dma="1"

试图使用 dvd+rw-tools 之前您应该参考 dvd+rw-tools 硬件兼容性列表 是否有与您的 DVD 刻录机有关的信息。

注意:

如果您想要一个图形化的用户界面,您应该看一看 K3b (sysutils/k3b),它提供了 growisofs(1) 的一个友好界面和许多其他刻录工具。

19.7.3. 刻录数据 DVD

growisofs(1) 命令是 mkisofs 的前端,它会调用 mkisofs(8) 来创建文件系统布局,完成到 DVD 上的刻录。 这意味着您不需要在刻录之前创建数据映像。

要把 /path/to/data 目录的数据刻录到 DVD+R 或者 DVD-R 上面,使用下面的命令:

# growisofs -dvd-compat -Z /dev/cd0 -J -R /path/to/data

-J -R 选项传递给 mkisofs(8) 用于文件系统创建 (这表示创建带有带有 joliet 和 Rock Ridge 扩展的 ISO 9660 文件系统), 参考 mkisofs(8) 联机手册了解更多细节。

选项 -Z 用来在任何情况下初始刻录会话: 不管多会话与否。 DVD 设备,/dev/cd0, 必须依照您的配置做出改变。 -dvd-compat 参数会结束光盘, 光盘成为不可附加的。这会提供更多的和 DVD-ROM 驱动器的介质兼容性。

也可以刻录成一个 pre-mastered 映像, 例如记录一个映像文件 imagefile.iso, 我们可以运行:

# growisofs -dvd-compat -Z /dev/cd0=imagefile.iso

刻录的速度可以被检测到并自动进行调整, 根据介质和驱动器的使用情况。如果您想强制改变速度, 可以使用 -speed= 参数。更多的信息,请看 growisofs(1) 联机手册。

注意:

如果需要在刻录的编录中添加超过 4.38GB 的单个文件, 就必须使用 mkisofs(8) 或其他相关工具 (例如 growisofs(1)) 的 -udf -iso-level 3 参数来创建 UDF/ISO-9660 混合文件系统。 只有在创建 ISO 映像文件或直接在盘上写数据时才需要这样做。 以这种方式创建的光盘必须通过 mount_udf(8) 工具以 UDF 文件系统挂载, 因此只有操作系统支持 UDF 时才可以这样做, 否则盘上的文件数据可能会无法正确读出。

要创建这样的 ISO 文件:

% mkisofs -R -J -udf -iso-level 3 -o imagefile.iso /path/to/data

直接将文件刻录到光盘上:

# growisofs -dvd-compat -udf -iso-level 3 -Z /dev/cd0 -J -R /path/to/data

假如只是使用包含巨型文件的 ISO 映像文件时, 就不需要在运行 growisofs(1) 来将映像文件刻录成光盘时指定任何额外的选项了。

另外, 在映像文件中增加或直接刻录巨型文件时, 还需要注意使用最新的 sysutils/cdrtools (包含了 mkisofs(8)), 因为旧版并不提供巨型文件支持。 如果您遇到问题, 也可以尝试一下开发版本的软件包, 例如 sysutils/cdrtools-devel 并参阅 mkisofs(8) 联机手册。

19.7.4. 刻录 DVD-Video

DVD-Video 是一种特殊的基于 ISO 9660 和 micro-UDF (M-UDF) 规范的文件系统。 DVD-Video 也呈现了一个特殊的数据格式, 这就是为什么您需要一个特殊的程序像 multimedia/dvdauthor 来制作 DVD 的原因。

如果您已经有了 DVD-Video 文件系统的映像, 就可以以同样的方式制作另一个映像,可以参看前面章节的例子。 如果您想制作 DVD 并想放在特定的目录中,如在目录 /path/to/video 中, 可以使用下面的命令来刻录 DVD-Video:

# growisofs -Z /dev/cd0 -dvd-video /path/to/video

-dvd-video 选项将传递给 mkisofs(8) 并指示它创建一个 DVD-Video 文件系统布局。 除此之外。 -dvd-video 选项也包含了 -dvd-compat growisofs(1) 选项。

19.7.5. 使用 DVD+RW

不像 CD-RW, 一个空白的 DVD+RW 在每一次使用前必须先格式化。 growisofs(1) 程序将会适时的自动对其进行适当的处理, 这是 recommended 的方式。您也可以使用 dvd+rw-format 来对 DVD+RW 进行格式化:

# dvd+rw-format /dev/cd0

您只需要执行这样的操作一次,牢记只有空白的 DVD+RW 介质才需要格式化。您可以以前面章节同样的方式来刻录 DVD+RW。

如果您想刻录新的数据 (刻录一个新的完整的文件系统 而不仅仅是追加一些数据) 到 DVD+RW,您不必再将其格式化成空白盘, 您只须要直接覆盖掉以前的记录即可。 (执行一个新的初始化对话), 像这样:

# growisofs -Z /dev/cd0 -J -R /path/to/newdata

DVD+RW 格式化程序为简单的向以前的记录追加数据提供了可能性。 这个操作有一个新的会话和一个已经存在的会话合并而成。 它不需要多个写会话过程, growisofs(1) 将在介质上 增加 ISO 9660 文件系统。

例如,我们想追加一些数据到到我们以前的 DVD+RW 上,我们可以使用下面的命令:

# growisofs -M /dev/cd0 -J -R /path/to/nextdata

在以后的写操作时, 应使用与最初的刻录会话时相同的 mkisofs(8) 选项。

注意:

如果您想获得与 DVD-ROM 驱动更好的兼容性,可以使用 -dvd-compat 选项。 在 DVD+RW 这种情况下, 这样做并不妨碍您添加数据。

如果出于某种原因您真的想要空白介质盘, 可以执行下面的命令:

# growisofs -Z /dev/cd0=/dev/zero

19.7.6. 使用 DVD-RW

DVD-RW 接受两种光盘格式:增补顺序写入和受限式覆写。默认的 DVD-RW 盘是顺序写入格式。

空白的 DVD-RW 能够直接进行刻录而不需要格式化操作, 然而非空的顺序写入格式的 DVD-RW 需要格式化才能写入新的初始区段。

要格式化一张 DVD-RW 为顺序写入模式,运行:

# dvd+rw-format -blank=full /dev/cd0

注意:

一次完全的格式化 (-blank=full) 在 1x 倍速的介质上将会花费大约 1 个小时。快速格式化可以使用 -blank 选项来进行,如果 DVD-RW 要以 Disk-At-Once (DAO) 模式刻录的话。要以 DAO 模式刻录 DVD-RW,使用命令:

# growisofs -use-the-force-luke=dao -Z /dev/cd0=imagefile.iso

-use-the-force-luke=dao 选项不是必需的, 因为 growisofs(1) 试图最低限度的检测 (快速格式化) 介质并进行 DAO 写入。

事实上对于任何 DVD-RW 都应该使用受限式覆写模式, 这种格式比默认的增补顺序写入更加灵活。

在一张顺序 DVD-RW 上写入数据,使用和其他 DVD 格式相同的指令:

# growisofs -Z /dev/cd0 -J -R /path/to/data

如果您想在您以前的刻录上附加数据,您必须使用 growisofs(1)-M 选项。然而, 如果您在一张增补顺序写入模式的 DVD-RW 上附加数据, 将会在盘上创建一个新的区段,结果就是一张多区段光盘。

受限式覆写格式的 DVD-RW 在新的初始化区段前不需要格式化, 您只是要用 -Z 选项覆写光盘,这和 DVD+RW 的情形是相似的。也可以用和 DVD+RW 同样方式的 -M 选项把现存的 ISO 9660 文件系统写入光盘。 结果会是一张单区段 DVD。

要把 DVD-RW 置于受限式覆写格式, 必须使用下面的命令:

# dvd+rw-format /dev/cd0

更改回顺序写入模式使用:

# dvd+rw-format -blank=full /dev/cd0

19.7.7. 多区段

几乎没有哪个 DVD-ROM 驱动器支持多区段 DVD,它们大多数时候都只读取第一个区段。 顺序写入格式的 DVD+R、DVD-R 和 DVD-RW 可以支持多区段, DVD+RW 和 DVD-RW 受限式覆写格式不存在多区段的概念。

在 DVD+R、DVD-R 或者 DVD-RW 的顺序写入格式下, 一次初始化 (未关闭) 区段之后使用下面的命令, 将会在光盘上添加一个新的区段:

# growisofs -M /dev/cd0 -J -R /path/to/nextdata

对 DVD+RW 或者 DVD-RW 在受限式覆写模式下使用这条命令, 会合并新区段到存在的区段中来附加数据。 结果就是一张单区段光盘。 这是在这些介质上用于在最初的写操作之后添加数据的方式。

注意:

介质上的一些空间用于区段之间区段的开始与结束。 因此,应该用大量的数据添加区段来优化介质空间。 对于 DVD+R 来说区段的数量限制为 154, 对于 DVD-R 来说大约是 2000,对于双层 DVD+R 来说是 127。

19.7.8. 更多的信息

要获得更多的关于 DVD 的信息 dvd+rw-mediainfo /dev/cd0 命令可以运行来获得 更多的信息。

更多的关于 dvd+rw-tools 的信息可以在 growisofs(1) 联机手册找到,在 dvd+rw-tools web sitecdwrite mailing list 联接中也可找到。

注意:

dvd+rw-mediainfo 命令的输出结果记录, 以及介质的问题会被用来做问题报告。 如果没有这些输出, 就很难帮您解决问题。

19.7.9. 使用 DVD-RAM

19.7.9.1. 配置

DVD-RAM 刻录机通常使用 SCSI 或 ATAPI 两种接口之一。 对于 ATAPI 设备, DMA 传输模式必须手工启用。 这一工作可以通过在 /boot/loader.conf 文件中增加下述配置来完成:

hw.ata.atapi_dma="1"

19.7.9.2. 初始化介质

如本章前面的介绍所言, DVD-RAM 可以视为一移动硬盘。 与任何其它型号的移动硬盘类似, 首次使用它之前, 应首先 初始化 DVD-RAM。 在下面的例子中, 我们将在全部空间上使用标准的 UFS2 文件系统:

# dd if=/dev/zero of=/dev/acd0 bs=2k count=1
# bsdlabel -Bw acd0
# newfs /dev/acd0

您应根据实际情况将 acd0 改为您所使用的设备名。

19.7.9.3. 使用介质

一旦您在 DVD-RAM 上完成了前面的操作, 就可以像普通的硬盘一样挂接它了:

# mount /dev/acd0 /mnt

然后就可以正常地对 DVD-RAM 进行读写了。

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.