# 20.6.创建和使用 DVD

与 CD 相比，DVD 是下一代光学媒体存储技术。DVD 可以存储比任何 CD 更多的数据，并且是视频出版的标准。

可记录 DVD 有五种物理格式：

* **DVD-R**：这是第一个可记录 DVD 格式。DVD-R 标准由 [DVD Forum](http://www.dvdforum.org/forum.shtml) 定义。该格式是一次性可写的。
* **DVD-RW**：这是 DVD-R 标准的可重写版本。DVD-RW 可以重写约 1000 次。
* **DVD-RAM**：这是一个可重写格式，可以视为可移动硬盘。然而，这种介质与大多数 DVD-ROM 驱动器和 DVD-Video 播放器不兼容，因为只有少数 DVD 写入器支持 DVD-RAM 格式。有关 DVD-RAM 使用的更多信息，请参阅 [使用 DVD-RAM](https://docs.freebsd.org/en/books/handbook/disks/#creating-dvd-ram)。
* **DVD+RW**：这是由 [DVD+RW Alliance](https://en.wikipedia.org/wiki/DVD%2BRW_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 播放器与所考虑的介质兼容。

## 20.6.1. 配置

要执行 DVD 刻录，请使用 [growisofs(1)](https://man.freebsd.org/cgi/man.cgi?query=growisofs\&sektion=1\&format=html)。此命令是 [sysutils/dvd+rw-tools](https://cgit.freebsd.org/ports/tree/sysutils/dvd+rw-tools/) 工具的一部分，支持所有 DVD 媒体类型。

这些工具使用 SCSI 子系统访问设备，因此必须加载或静态编译 [ATAPI/CAM 支持](https://docs.freebsd.org/en/books/handbook/disks/#atapicam) 到内核中。如果刻录机使用 USB 接口，则无需此支持。有关 USB 设备配置的更多详细信息，请参阅 [USB 存储设备](https://docs.freebsd.org/en/books/handbook/disks/#usb-disks)。

ATAPI 设备还必须启用 DMA 访问，方法是在 **/boot/loader.conf** 中添加以下行：

```ini
hw.ata.atapi_dma="1"
```

在尝试使用 dvd+rw-tools 之前，请查阅 [硬件兼容性说明](http://fy.chalmers.se/~appro/linux/DVD+RW/hcn.html)。

> **注意**
>
> 如果需要图形用户界面，可以考虑使用 [sysutils/k3b](https://cgit.freebsd.org/ports/tree/sysutils/k3b/)，它提供了一个用户友好的界面，支持 [growisofs(1)](https://man.freebsd.org/cgi/man.cgi?query=growisofs\&sektion=1\&format=html) 和许多其他刻录工具。

## 20.6.2. 刻录数据 DVD

由于 [growisofs(1)](https://man.freebsd.org/cgi/man.cgi?query=growisofs\&sektion=1\&format=html) 是 [mkisofs](https://docs.freebsd.org/en/books/handbook/disks/#mkisofs) 的前端，它将调用 [mkisofs(8)](https://man.freebsd.org/cgi/man.cgi?query=mkisofs\&sektion=8\&format=html) 来创建文件系统布局并执行 DVD 刻录过程。这意味着在刻录之前不需要创建数据的镜像。

要将 **/path/to/data** 中的数据刻录到 DVD+R 或 DVD-R，请使用以下命令：

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

在此示例中，`-J -R` 被传递给 [mkisofs(8)](https://man.freebsd.org/cgi/man.cgi?query=mkisofs\&sektion=8\&format=html)，以创建带有 Joliet 和 Rock Ridge 扩展的 ISO 9660 文件系统。有关更多详细信息，请参阅 [mkisofs(8)](https://man.freebsd.org/cgi/man.cgi?query=mkisofs\&sektion=8\&format=html)。

对于初始会话录制，`-Z` 可用于单次和多次会话。将 *​/dev/cd0*​ 替换为 DVD 设备的名称。使用 `-dvd-compat` 表示磁盘将被关闭，并且录制将不可追加。这还应提供更好的与 DVD-ROM 驱动器的兼容性。

要刻录预制的镜像文件，如 *imagefile.iso*，请使用：

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

写入速度应根据所使用的介质和驱动器自动检测并设置。要强制设置写入速度，请使用 `-speed=`。有关示例用法，请参阅 [growisofs(1)](https://man.freebsd.org/cgi/man.cgi?query=growisofs\&sektion=1\&format=html)。

> **注意**
>
> 为了支持大于 4.38GB 的工作文件，必须通过将 `-udf -iso-level 3` 传递给 [mkisofs(8)](https://man.freebsd.org/cgi/man.cgi?query=mkisofs\&sektion=8\&format=html) 和所有相关程序（如 [growisofs(1)](https://man.freebsd.org/cgi/man.cgi?query=growisofs\&sektion=1\&format=html)）来创建 UDF/ISO-9660 混合文件系统。仅在创建 ISO 镜像文件或直接将文件写入磁盘时需要此操作。由于以这种方式创建的磁盘必须作为 UDF 文件系统挂载，并使用 [mount\_udf(8)](https://man.freebsd.org/cgi/man.cgi?query=mount_udf\&sektion=8\&format=html)，因此它只能在支持 UDF 的操作系统上使用。否则，它看起来就像包含损坏文件的磁盘。
>
> 要创建这种类型的 ISO 文件，请使用：
>
> ```sh
> % mkisofs -R -J -udf -iso-level 3 -o imagefile.iso /path/to/data
> ```
>
> 要将文件直接写入磁盘，请使用：
>
> ```sh
> # growisofs -dvd-compat -udf -iso-level 3 -Z /dev/cd0 -J -R /path/to/data
> ```
>
> 当 ISO 镜像中已包含大文件时，[growisofs(1)](https://man.freebsd.org/cgi/man.cgi?query=growisofs\&sektion=1\&format=html) 刻录该镜像时不需要额外选项。
>
> 务必使用最新版本的 [sysutils/cdrtools](https://cgit.freebsd.org/ports/tree/sysutils/cdrtools/)，因为旧版本可能不支持大文件。如果最新版本无法使用，请安装 [sysutils/cdrtools-devel](https://cgit.freebsd.org/ports/tree/sysutils/cdrtools-devel/) 并阅读其 [mkisofs(8)](https://man.freebsd.org/cgi/man.cgi?query=mkisofs\&sektion=8\&format=html)。

## 20.6.3. 刻录 DVD-Video

DVD-Video 是基于 ISO 9660 和 micro-UDF (M-UDF) 规范的特定文件布局。由于 DVD-Video 具有特定的数据结构层次，因此需要使用特定程序，如 [multimedia/dvdauthor](https://cgit.freebsd.org/ports/tree/multimedia/dvdauthor/)，来创建 DVD。

如果已经存在 DVD-Video 文件系统的镜像，可以像其他镜像一样进行刻录。如果使用 `dvdauthor` 制作了 DVD 并且结果存放在 **/path/to/video**，则可以使用以下命令来刻录 DVD-Video：

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

`-dvd-video` 选项传递给 [mkisofs(8)](https://man.freebsd.org/cgi/man.cgi?query=mkisofs\&sektion=8\&format=html)，指示其创建 DVD-Video 文件系统布局。此选项意味着使用了 `-dvd-compat` [growisofs(1)](https://man.freebsd.org/cgi/man.cgi?query=growisofs\&sektion=1\&format=html) 选项。

## 20.6.4. 使用 DVD+RW

与 CD-RW 不同，初次使用的 DVD+RW 需要先格式化。*推荐*在适当的情况下让 [growisofs(1)](https://man.freebsd.org/cgi/man.cgi?query=growisofs\&sektion=1\&format=html) 自动处理此事。然而，也可以使用 `dvd+rw-format` 来格式化 DVD+RW：

```sh
# dvd+rw-format /dev/cd0
```

此操作只需要执行一次，并且只需要格式化未使用过的 DVD+RW 媒体。格式化后，DVD+RW 可以像往常一样进行刻录。

若要刻录一个全新的文件系统而不仅仅是向 DVD+RW 添加一些数据，无需首先清空介质。可以像下面这样覆盖之前的录制内容：

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

DVD+RW 格式支持向先前的录制内容追加数据。此操作将新的会话与现有的会话合并，它不被视为多会话写入。 [growisofs(1)](https://man.freebsd.org/cgi/man.cgi?query=growisofs\&sektion=1\&format=html) 将*扩展*媒体上现有的 ISO 9660 文件系统。

例如，要将数据追加到 DVD+RW，请使用以下命令：

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

在后续写入时，应该使用与初始会话相同的 [mkisofs(8)](https://man.freebsd.org/cgi/man.cgi?query=mkisofs\&sektion=8\&format=html) 选项。

> **注意**
>
> 使用 `-dvd-compat` 以提高与 DVD-ROM 驱动器的兼容性。当使用 DVD+RW 时，该选项不会阻止数据的添加。

要清空介质，请使用：

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

## 20.6.5. 使用 DVD-RW

DVD-RW 接受两种磁盘格式：增量顺序格式和受限覆盖格式。默认情况下，DVD-RW 磁盘使用顺序格式。

一个全新的 DVD-RW 可以直接写入，而无需格式化。然而，若是非全新的 DVD-RW 且使用顺序格式，则需要在写入新初始会话之前先将其清空。

要清空顺序模式下的 DVD-RW，请使用：

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

> **注意**
>
> 使用 `-blank=full` 进行完全清空将花费大约一个小时（1x 媒体）。如果 DVD-RW 将以 Disk-At-Once (DAO) 模式进行刻录，可以使用 `-blank` 进行快速清空。要以 DAO 模式刻录 DVD-RW，请使用以下命令：
>
> ```
> # growisofs -use-the-force-luke=dao -Z /dev/cd0=imagefile.iso
> ```
>
> 由于 [growisofs(1)](https://man.freebsd.org/cgi/man.cgi?query=growisofs\&sektion=1\&format=html) 会自动尝试检测快速清空的介质并启动 DAO 写入，因此不需要使用 `-use-the-force-luke=dao`。建议使用受限覆盖模式，因为这种格式比默认的增量顺序格式更加灵活。

要在顺序 DVD-RW 上写入数据，请使用与其他 DVD 格式相同的指令：

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

要将一些数据追加到先前的录制内容中，请使用 `-M` 和 [growisofs(1)](https://man.freebsd.org/cgi/man.cgi?query=growisofs\&sektion=1\&format=html)。然而，如果数据是追加到顺序模式下的 DVD-RW 上，新会话将会创建，结果是一个多会话磁盘。

在受限覆盖格式的 DVD-RW 上，无需清空介质即可进行新初始会话。只需使用 `-Z` 覆盖磁盘即可。也可以使用 `-M` 扩展已写入磁盘的现有 ISO 9660 文件系统，结果将是一个单会话 DVD。

要将 DVD-RW 转换为受限覆盖格式，必须使用以下命令：

```sh
# dvd+rw-format /dev/cd0
```

要恢复为顺序格式，请使用：

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

## 20.6.6. 多会话

很少有 DVD-ROM 驱动器支持多会话 DVD，并且大多数情况下只读取第一个会话。DVD+R、DVD-R 和顺序格式的 DVD-RW 可以接受多个会话。DVD+RW 和受限覆盖格式的 DVD-RW 不支持多会话。

使用以下命令，在 DVD+R、DVD-R 或顺序格式的 DVD-RW 上初始非关闭会话后，将向磁盘添加一个新会话：

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

在 DVD+RW 或受限覆盖格式的 DVD-RW 上使用此命令时，将追加数据并将新会话与现有会话合并。结果将是一个单会话磁盘。使用此方法在这些类型的介质上进行首次写入后添加数据。

> **注意**
>
> 由于每个会话之间会使用一些空间来标记会话的开始和结束，因此应该添加大量数据来优化介质空间。每个 DVD+R 的会话数量限制为 154 个，DVD-R 的会话数量限制约为 2000 个，DVD+R 双层的会话数量限制为 127 个。

## 20.6.7. 更多信息

要获取有关 DVD 的更多信息，可以在指定的驱动器中使用 `dvd+rw-mediainfo <device>`。

有关 dvd+rw-tools 的更多信息，请参阅 [growisofs(1)](https://man.freebsd.org/cgi/man.cgi?query=growisofs\&sektion=1\&format=html)、[dvd+rw-tools 网站](http://fy.chalmers.se/~appro/linux/DVD+RW/) 和 [cdwrite 邮件列表](http://lists.debian.org/cdwrite/) 归档。

> **注意**
>
> 当创建与 dvd+rw-tools 使用相关的问题报告时，始终包括 `dvd+rw-mediainfo` 的输出。

## 20.6.8. 使用 DVD-RAM

DVD-RAM 写入器可以使用 SCSI 或 ATAPI 接口。对于 ATAPI 设备，必须通过将以下行添加到 **/boot/loader.conf** 来启用 DMA 访问：

```sh
hw.ata.atapi_dma="1"
```

DVD-RAM 可以被看作是一个可移动硬盘。像其他硬盘一样，在使用之前必须对 DVD-RAM 进行格式化。以下是格式化整个磁盘空间并使用标准 UFS2 文件系统的示例：

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

DVD 设备 **acd0** 必须根据实际配置进行更改。

待 DVD-RAM 格式化完成，它就可以像普通硬盘一样挂载：

```sh
# mount /dev/acd0 /mnt
```

挂载后，DVD-RAM 将可以读写。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://handbook.bsdcn.org/di-20-zhang-cun-chu/20.6.-chuang-jian-he-shi-yong-dvd.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
