> For the complete documentation index, see [llms.txt](https://handbook.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://handbook.bsdcn.org/di-21-zhang-cun-chu/21.6.-chuang-jian-he-shi-yong-dvd.md).

# 21.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](#id-21.6.8.-shi-yong-dvdram)。
* **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 播放器与所选光盘兼容。

## 21.6.1. 配置

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

这些工具使用 SCSI 子系统访问设备，因此必须加载或静态编译 [ATAPI/CAM 支持](/di-21-zhang-cun-chu/21.5.-chuang-jian-he-shi-yong-cd.md) 到内核中。如果刻录机使用 USB 接口，则无需此支持。有关 USB 设备配置的更多详细信息，请参阅 [USB 存储设备](/di-21-zhang-cun-chu/21.4.-usb-cun-chu-she-bei.md)。

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

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

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

> **注意**
>
> 如果需要图形用户界面，可考虑使用 Port [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) 和许多其他刻录工具。

## 21.6.2. 刻录数据 DVD

由于 [growisofs(1)](https://man.freebsd.org/cgi/man.cgi?query=growisofs\&sektion=1\&format=html) 是 [mkisofs](/di-21-zhang-cun-chu/21.5.-chuang-jian-he-shi-yong-cd.md) 的前端，它将调用 [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.38 GB 的工作文件，必须通过将 `-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) 刻录该镜像时不需要额外选项。
>
> 务必使用最新版本的 Port [sysutils/cdrtools](https://cgit.freebsd.org/ports/tree/sysutils/cdrtools/)（包含 [mkisofs(8)](https://man.freebsd.org/cgi/man.cgi?query=mkisofs\&sektion=8\&format=html)），因为旧版本可能不支持大文件。如果最新版本无法使用，请安装 Port [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)。

## 21.6.3. 刻录 DVD-Video

DVD-Video 是基于 ISO 9660 和 micro-UDF (M-UDF) 规范的特定文件布局。由于 DVD-Video 具有特定的数据结构层次，因此需要使用特定程序，如 Port [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) 选项。

## 21.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
```

## 21.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，请使用以下命令：
>
> ```sh
> # 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-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
```

## 21.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 个。

## 21.6.7. 更多信息

要获取有关 DVD 的更多信息，请在光盘放入指定驱动器后使用 `dvd+rw-mediainfo /dev/cd0`。

有关 `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` 的输出。

## 21.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 将可读写。
