光盘驱动器

出自 ArchWiki
(重定向自 DVD 刻录

出自 维基百科

在计算机领域,光盘驱动器 (ODD) 是一种光盘驱动器,它使用激光或可见光谱内或附近的电磁波作为从光盘读取或写入数据过程的一部分。有些驱动器只能从光盘读取数据,但最近的驱动器通常既是读取器又是记录器,也称为刻录机或写入器。光盘、DVD 和蓝光光盘是常见的光学介质类型,可以通过此类驱动器进行读取和记录。光驱是通用名称;驱动器通常被描述为“CD”、“DVD”或“蓝光”,后跟“驱动器”、“刻录机”等。

刻录

此条目或章节需要扩充。

原因:是否有任何命令行工具可以将文件排列成卷以适应光盘(例如 GAFFitter 或 cdrkit 的 dirsplit)并打包到 Arch Linux 中?(在 光盘驱动器讨论页 中讨论)
警告:光驱和光盘本身的质量差异很大。通常,建议使用较慢的刻录速度以获得可靠的刻录效果。如果您遇到光盘出现意外行为,请尝试以刻录机支持的最低速度进行刻录。

光盘驱动器的刻录过程包括创建或获取镜像并将其写入光学介质。原则上,镜像可以是任何数据文件。如果您想挂载生成的光学介质,那么它通常是 ISO 9660 文件系统镜像文件。音频和多媒体 CD 通常从 .bin 文件刻录,并在 .toc 文件或 .cue 文件的控制下,这些文件指示所需的音轨布局。

安装刻录工具

此条目或章节需要语言、wiki 语法或风格改进。请参阅 Help:Style 以获取参考。

原因:两次提到 X 是传统选择,但没有说明原因。(在 光盘驱动器讨论页 中讨论)

如果您想使用带有图形用户界面的程序,请按照 #使用 GUI 刻录 CD/DVD/BD 进行操作。

此处列出的程序是面向命令行的。它们是大多数用于 CD、DVD 和 BD 的免费 GUI 程序使用的后端。GUI 用户可能会在故障排除或刻录活动的脚本编写时接触到它们。

您至少需要一个用于创建文件系统镜像的程序和一个能够将数据刻录到所需介质类型的程序。

可用于创建 ISO 9660 镜像的程序有

传统的选择是 mkisofs,因为它出现得更早。

可用于刻录到介质的程序有

传统的选择是用于 CD 的 cdrecord 和用于 DVD 和蓝光光盘的 growisofs,因为 cdrecord 最先提供无需描述文件即可进行 CD 写入,而 growisofs 最先提供对 DVD 和 BD 的写入,而没有受到刻录程序的任何人为限制。要将 TOC/CUE/BIN 文件写入 CD,请安装 cdrdao

用于 CD、DVD 和 BD 刻录的免费 GUI 程序至少依赖于上述软件包之一。

xorrisofs 支持本文档中显示的 mkisofs 选项。

cdrskin 支持显示的 cdrecord 选项;xorrecord 也支持那些不处理音频 CD 的选项。

从现有文件制作 ISO 镜像

创建 ISO 镜像的最简单方法是首先将所需文件复制到一个目录,例如:./for_iso

然后使用 mkisofs 生成镜像文件

$ mkisofs -V "ARCHIVE_2013_07_27" -J -r -o isoimage.iso ./for_iso

以下章节将解释这些选项中的每一个。

基本选项

-V
指定文件系统的名称(即分配给文件系统的名称)。ISO 9660 标准规范对字符限制为 32 个字符的字符串长度,并将允许的字符限制为以下集合:“A”到“Z”、“0”到“9”和“_”。如果介质自动挂载,则此卷标可能会显示为挂载点。
-J
启用 Joliet 扩展,该扩展分配特殊空间以 Unicode 格式存储文件名(每个文件最多 64 个 UTF-16 字符)。
-joliet-long
将 Joliet 表中文件名的最大长度从 64 个增加到 103 个 UTF-16 字符。不符合 Joliet 规范,且不常用。
-r
启用 Rock Ridge 扩展,该扩展为镜像添加 POSIX 文件系统语义,包括支持 255 个字符的长文件名和 Unix 风格的文件权限。
-o
设置生成的 ISO 镜像的文件路径。

graft-points

也可以让 mkisofs 从各种路径收集文件和目录

$ mkisofs -V "BACKUP_2013_07_27" -J -r -o backup_2013_07_27.iso \
  -graft-points \
  /photos=/home/user/photos \
  /mail=/home/user/mail \
  /photos/holidays=/home/user/holidays/photos

-graft-points 启用对 pathspecs 的识别,pathspecs 由 ISO 文件系统中的目标地址(例如 /photos)和源地址(例如 /home/user/photos)组成。两者用“=”字符分隔。

因此,此示例分别将目录 /home/user/photos/home/user/mail/home/user/holidays/photos 放入 ISO 镜像中,作为 /photos/mail/photos/holidays

程序 mkisofsxorrisofs 接受相同的选项。为了安全备份,请考虑使用带有 --for_backup 选项的 xorrisofs,该选项记录最终的 ACL 并为每个数据文件存储 MD5 校验和。

有关其选项的更多信息,请参阅 mkisofs(8)xorrisofs(1) 的手册页。

挂载 ISO 镜像

如果您想浏览 ISO 镜像的文件,可以挂载它。要挂载 ISO 镜像,我们可以使用

# mount -t iso9660 -o ro,loop /path/to/file.iso /mount-point

请不要忘记在您完成映像检查后卸载映像。

# umount /mount-point

另请参阅 以用户身份挂载映像,了解如何在没有 root 权限的情况下挂载。

将 img/ccd 转换为 ISO 映像

要转换 img/ccd 映像,您可以使用 ccd2iso

$ ccd2iso ~/image.img ~/image.iso

了解您的光驱名称

在本节的剩余部分,假设您的刻录设备名称为 /dev/sr0

通过以下方式检查:

$ cdrecord dev=/dev/sr0 -checkdrive

这应该报告驱动器的 Vendor_infoIdentification 字段。

如果未找到驱动器,请检查是否存在任何 /dev/sr*,以及它们是否为您或您的组提供读/写权限 (wr-)。如果不存在 /dev/sr*,请尝试手动加载 模块 sr_mod

读取 CD 或 DVD 的卷标

如果您想获取介质的名称/标签,请使用 dd

$ dd if=/dev/sr0 bs=1 skip=32808 count=32

从 CD、DVD 或 BD 创建 ISO 映像

为了仅从光盘复制实际数据,而不是填充它的空块,首先检索其块/扇区计数和大小(通常为 2048)。

$ isosize -x /dev/sr0
sector count: 2041796, sector size: 2048

或者,

$ isoinfo -d -i /dev/sr0 | awk '/block size|Volume size/'
Logical block size is: 2048
Volume size is: 2041796
注意: 请不要忘记将 /dev/sr0 替换为您的光驱设备名称。

然后使用 dd 使用获得的值复制数据。

$ dd if=/dev/sr0 of=discmage.iso bs=sector_size count=sector_count status=progress
提示: 如果介质已损坏,则最好使用专用工具,例如 ddrescue。请参阅 磁盘克隆#使用 ddrescue

如果原始介质是可启动的,则副本将是可启动的映像。您可以将其用作虚拟机的伪 CD,或将其刻录到光介质上,使其变为可启动介质。 [1]

使用 dvdisaster 创建错误恢复数据

此条目或章节需要语言、wiki 语法或风格改进。请参阅 Help:Style 以获取参考。

原因: 请使用模板的第一个参数提供简要说明。 (在 Talk:Optical disc drive 中讨论)

dvdisasterAURdvdisaster-unofficialAUR 是一款工具,可向光介质添加纠错数据。此数据可以帮助从划伤或损坏的光盘中恢复内容。

1. 将 CD、DVD 或 Blu-ray 光盘插入您的光驱。
2. 确保光盘未挂载。您可以使用以下命令卸载它:

sudo umount /dev/cdrom

3. 从命令行运行 dvdisaster 或在您的应用程序菜单中找到它。
4. 在 dvdisaster 界面中,选择 创建纠错数据
5. 从下拉菜单中选择光盘类型 (CD/DVD/BD)。
6. 单击 加载光盘 按钮以扫描您的光介质的内容。
7. dvdisaster 将分析光盘并显示其结构。
8. 选择一个位置来保存错误恢复 (ECC) 文件。
9. 设置纠错级别。较高的级别提供更好的恢复,但代价是 ECC 文件尺寸更大。
10. 单击 生成 开始创建纠错数据。
11. 该过程可能需要几分钟,具体取决于您的光盘大小。
12. 创建 ECC 文件后,dvdisaster 将提示您验证该文件。
13. 保存原始光盘映像 (ISO) 和 ECC 文件以供将来使用。
14. 建议将您的 ISO 和 ECC 文件存储在多个设备或云存储中,以获得最大的安全性。

最佳结果提示

  • 使用高质量的光盘创建备份。
  • 将您的 ECC 文件与 ISO 映像一起存储,以便于恢复。
  • dvdisaster 可以与 ISO 文件结合使用,而无需原始光盘。

使用 dvdisaster 重建损坏的光盘

此条目或章节需要语言、wiki 语法或风格改进。请参阅 Help:Style 以获取参考。

原因: 请使用模板的第一个参数提供简要说明。 (在 Talk:Optical disc drive 中讨论)

如果您的光盘被划伤或以其他方式损坏,dvdisaster 可以使用纠错 (ECC) 文件帮助恢复丢失的数据。 1. 将损坏的 CD、DVD 或 Blu-ray 光盘插入您的光驱。
2. 卸载光盘以避免冲突

sudo umount /dev/cdrom

3. 启动 dvdisaster
4. 在 dvdisaster 界面中,选择 扫描和修复 模式。
5. 通过从下拉菜单中选择驱动器或使用 加载光盘 按钮加载损坏的光盘。
6. 单击 加载 ECC 以选择相应的纠错文件(通常为 `.ecc`),该文件是在您首次刻录光盘时创建的。
7. 确保 ECC 文件与光盘结构完全匹配。如果您没有匹配的 ECC 文件,则此方法将不起作用。
8. 单击 扫描 开始读取光盘并识别损坏的扇区。
9. dvdisaster 将显示光盘状态的可视化表示,显示良好、不可读和已更正的扇区。
10. 扫描完成后,单击 修复 以使用 ECC 文件重建丢失或损坏的数据。 11. 恢复的数据将写入新的 ISO 映像文件。
12. 选择一个目标位置来保存重建的 ISO 映像。示例:`/home/user/recovered_disc.iso`
13. 单击 **“保存”** 完成该过程。
14. 挂载 ISO 以验证文件是否已成功恢复。

sudo mount -o loop /home/user/recovered_disc.iso /mnt

15. 检查 `/mnt` 中的内容以确保数据完整性。

最佳结果提示

  • 使用可靠的光驱,该光驱可以很好地读取损坏的光盘。
  • 确保 ECC 文件与您的 ISO 备份安全地存储在一起。
  • 如果恢复失败,请清洁光盘并尝试再次扫描。

视频:https://www.youtube.com/watch?v=zolvCcxcN4g

擦除 CD-RW 和 DVD-RW

使用过的 CD-RW 介质需要在您覆盖先前记录的数据之前擦除。这可以通过以下方式完成:

$ cdrecord -v dev=/dev/sr0 blank=fast

有两个空白选项:blank=fastblank=all。完全空白处理持续时间与完整写入运行一样长。它会覆盖 CD 上的有效负载数据。然而,这不应被视为安全地使这些数据无法读取。为此,建议进行多次使用随机数据的完整写入运行。

替代命令是:

$ cdrskin -v dev=/dev/sr0 blank=fast
$ xorriso -outdev /dev/sr0 -blank as_needed

要擦除 DVD-RW,请使用 dvd+rw-tools 中的 dvd+rw-format 实用程序。

$ dvd+rw-format -blank=fast /dev/sr0

替代命令是:

$ cdrecord -v dev=/dev/sr0 blank=fast
$ cdrskin -v dev=/dev/sr0 blank=deformat_sequential_quickest
$ xorriso -outdev /dev/sr0 -blank deformat_quickest

这种快速空白处理的 DVD-RW 不适用于多会话,并且无法接受长度不可预测的输入流。为此,必须使用以下命令之一:

$ cdrecord -v dev=/dev/sr0 blank=all
$ dvd+rw-format -blank=full /dev/sr0
$ cdrskin -v dev=/dev/sr0 blank=as_needed
$ xorriso -outdev /dev/sr0 -blank as_needed

其他介质类型要么是写入一次的(CD-R、DVD-R、DVD+R、BD-R),要么是可覆盖的,而无需擦除(DVD-RAM、DVD+RW、BD-RE)。

格式化 DVD-RW

格式化的 DVD-RW 介质可以在没有先前擦除的情况下被覆盖。因此,请考虑在其生命周期中应用一次:

$ dvd+rw-format -force /dev/sr0
$ cdrskin -v dev=/dev/sr0 blank=format_if_needed
$ xorriso -outdev /dev/sr0 -format as_needed

与 DVD-RAM、DVD+RW 和 BD-RE 不同,格式化的 DVD-RW 不能直接用作(慢速)硬盘,而是需要 pktcdvd 驱动程序的调解。请参阅 pktsetup(8)

格式化 BD-RE 和 BD-R

BD-RE 在首次使用前需要格式化。当刻录程序检测到未格式化状态时,会自动执行此操作。然而,有效负载区域的大小可能会受到上述 DVD-RW 格式命令的专家版本的影响。

BD-R 可以未格式化或格式化使用。未格式化时,它们以全额定速度写入并提供最大存储容量。格式化后,它们在写入操作期间进行 checkread,坏块被备用区域的块替换。这会将写入速度降低到额定速度的一半或更低。默认大小的备用区域将存储容量减少 768 MiB。

growisofs 默认格式化 BD-R。其他程序则不然。可以阻止 growisofs 进行格式化。cdrskin 和 xorriso 可以以全额定速度在格式化的 BD-RE 或 BD-R 上写入。

 $ growisofs -use-the-force-luke=spare:none ...growisofs.or.mkisofs.options...
 $ cdrskin stream_recording=on ...cdrecord.options...
 $ xorriso -stream_recording on ...xorriso.commands...

将 ISO 映像刻录到 CD、DVD 或 BD

要将预先准备好的 ISO 映像文件 isoimage.iso 刻录到光介质上,请为 CD 运行:

$ cdrecord -v -sao dev=/dev/sr0 isoimage.iso

以及为 DVD 或 BD 运行:

$ growisofs -dvd-compat -Z /dev/sr0=isoimage.iso

以及为 CD、DVD 或 BD 运行:

$ xorriso -as cdrecord -v -sao dev=/dev/sr0 isoimage.iso
注意
  • 确保在开始写入介质时,介质未挂载。如果介质包含可读文件系统,则可能会自动挂载。在最好的情况下,它将阻止刻录程序使用刻录设备。在最坏的情况下,由于读取操作干扰了驱动器,将发生刻录错误。因此,如有疑问,请执行:
    # umount /dev/sr0
  • growisofs 在空白 BD-R 介质上存在一个 小错误。刻录完成后,它会发出错误消息。然后,像 k3b 这样的程序会认为整个刻录运行失败。为了防止这种情况,可以:
    • 在将空白 BD-R 提交给 growisofs 之前,使用 dvd+rw-format /dev/sr0 格式化它。
    • 或者使用 growisofs 选项 -use-the-force-luke=spare:none

验证刻录的 ISO 映像

您可以验证刻录介质的完整性,以确保它不包含任何错误。在验证之前,始终弹出介质并重新插入。这将保证任何内核缓存都不会用于读取数据。

首先计算原始 ISO 映像的 MD5 校验和:

$ md5sum isoimage.iso
 e5643e18e05f5646046bb2e4236986d8 isoimage.iso

接下来计算介质上 ISO 文件系统的 MD5 校验和。虽然某些介质类型提供的确切数据量与提交给刻录程序的数据量相同,但许多其他介质在读取时会附加尾部垃圾数据。因此,您应该将读取限制为 ISO 映像文件的大小。

$ blocks=$(expr $(du -b isoimage.iso | awk '{print $1}') / 2048)
$ dd if=/dev/sr0 bs=2048 count=$blocks | md5sum
43992+0 records in
43992+0 records out
90095616 bytes (90 MB, 86 MiB) copied, 0.359539 s, 251 MB/s
e5643e18e05f5646046bb2e4236986d8  -

两次运行都应产生相同的 MD5 校验和(此处为:e5643e18e05f5646046bb2e4236986d8)。如果它们不相同,您可能还会从 dd 运行中收到 I/O 错误消息。如果您有兴趣,dmesg 可能会告诉您有关 SCSI 错误和块号的信息。

ISO 9660 和即时刻录

在将新兴的 ISO 文件系统写入光介质之前,没有必要将其存储在硬盘上。只有非常旧的计算机中的非常旧的 CD 驱动器才可能由于驱动器缓冲区为空而导致刻录失败。

如果您从 mkisofs 中省略选项 -o,则它会将 ISO 映像写入标准输出。这可以管道传输到刻录程序的标准输入。

$ mkisofs -V "ARCHIVE_2013_07_27" -J -r ./for_iso | \
  cdrecord -v dev=/dev/sr0 -waiti -

此处实际上不需要选项 -waiti。它可以防止 cdrecordmkisofs 开始其输出之前写入介质。这将允许 mkisofs 读取介质,而不会干扰已经开始的刻录运行。请参阅下一节关于多会话的内容。

在 DVD 和 BD 上,您可以让 growisofs 为您操作 mkisofs,并即时刻录其输出。

$ growisofs -Z /dev/sr0 -V "ARCHIVE_2013_07_27" -r -J ./for_iso

多会话

ISO 9660 多会话意味着具有可读文件系统的介质在其第一个未使用的块地址处仍然可写,并且新的 ISO 目录树被写入此未使用部分。新树伴随着新添加或覆盖的数据文件的内容块。数据文件的块(应与旧 ISO 树中保持不变)将不会再次写入。

Linux 和许多其他操作系统将挂载介质上最后一个会话中的目录树。这个最新的树通常也会显示旧会话的文件。

cdrecord 的多会话

如果使用了 cdrecord 选项 -multi,则 CD-R 和 CD-RW 保持可写(也称为“可追加”)。

$ cdrecord -v -multi dev=/dev/sr0 isoimage.iso

然后可以查询介质以获取下一个会话的参数:

$ m=$(cdrecord dev=/dev/sr0 -msinfo)

借助这些参数和驱动器中可读的介质,您可以生成附加的 ISO 会话:

$ mkisofs -M /dev/sr0 -C "$m" \
   -V "ARCHIVE_2013_07_28" -J -r -o session2.iso ./more_for_iso

最后,将会话附加到介质并使其再次可追加:

$ cdrecord -v -multi dev=/dev/sr0 session2.iso

程序 cdrskinxorrecord 也对 DVD-R、DVD+R、BD-R 和未格式化的 DVD-RW 执行此操作。程序 cdrecord 至少对 DVD-R 和 DVD-RW 执行多会话。当然,它们都对 CD-R 和 CD-RW 执行此操作。

大多数可重复使用的介质类型不记录内核可识别的会话历史记录。但是,使用 ISO 9660,即使在这些介质上也可以实现多会话效果。

growisofsxorriso 可以做到这一点,并隐藏了大部分复杂性。

growisofs 的多会话

默认情况下,growisofs 使用 mkisofs 作为后端来创建 ISO 映像,并将其大部分程序参数转发到 。请参阅上面 mkisofs 的示例。它禁止选项 -o 并弃用选项 -C。默认情况下,它使用 mkisofs。您可以通过设置环境变量 MKISOFS 来指定使用其他兼容的后端程序。

$ export MKISOFS="xorrisofs"

希望在光介质上开始使用新的 ISO 文件系统由选项 -Z 表示。

$ growisofs -Z /dev/sr0 -V "ARCHIVE_2013_07_27" -r -J ./for_iso

希望将更多文件作为新会话附加到现有 ISO 文件系统由选项 -M 表示。

$ growisofs -M /dev/sr0 -V "ARCHIVE_2013_07_28" -r -J ./more_for_iso

有关详细信息,请参阅 growisofs(1) 手册以及 mkisofsxorrisofs 的手册。

xorriso 的多会话

xorriso 从介质的空白状态了解开始使用新的 ISO 文件系统的意愿。因此,如果介质包含数据,则适合将其空白化。命令 -blank as_needed 适用于所有类型的可重复使用介质,甚至适用于硬盘上数据文件中的 ISO 映像。如果应用于空白的一次写入介质,则不会导致错误。

$ xorriso -outdev /dev/sr0 -blank as_needed \
          -volid "ARCHIVE_2013_07_27" -joliet on -add ./for_iso --

在非空白可写介质上,如果使用命令 -dev 而不是 -outdevxorriso 会附加新给定的光盘文件。当然,此处不应给出命令 -blank

$ xorriso -dev /dev/sr0 \
          -volid "ARCHIVE_2013_07_28" -joliet on -add ./more_for_iso --

有关详细信息,请参阅 xorriso(1) 手册页,尤其是其示例。

BD 缺陷管理

通常情况下,BD-RE 和格式化后的 BD-R 媒体在写入时会启用缺陷管理。此功能会在写入块仍然存储在驱动器缓冲区中时读取它们。如果读取质量不佳,这些块将被重新写入或重定向到备用区域,数据将被存储在替换块中。

这种校验读取会将写入速度降低到驱动器和 BD 媒体标称速度的最多一半。有时情况甚至更糟。大量使用备用区域会导致读取操作期间出现长时间延迟。因此,缺陷管理并非总是理想的。

cdrecord 不会格式化 BD-R。但是,它无法阻止 BD-RE 媒体上的缺陷管理。

growisofs 默认格式化 BD-R。可以通过选项 -use-the-force-luke=spare:none 来阻止缺陷管理。但是,它也无法阻止 BD-RE 媒体上的缺陷管理。

cdrskinxorrisoxorrecord 默认不格式化 BD-R。它们会通过 cdrskin blank=format_if_neededxorriso -format as_neededxorrecord blank=format_overwrite 来进行格式化。这三个程序可以通过 cdrskin stream_recording=onxorriso -stream_recording onxorrecord stream_recording=on 来禁用 BD-RE 和已格式化的 BD-R 的缺陷管理。

刻录音频 CD

创建您的音轨,并将它们存储为未压缩的、16 位、44100-Hz、立体声 WAV 文件。要将 MP3 转换为 WAV,请确保已安装 lamecd 到包含 MP3 文件的目录,并运行

$ for FILE in *.mp3; do lame --decode "$FILE" "${FILE%.mp3}.wav"; done

如果您在尝试刻录使用 LAME 转换的 WAV 文件时遇到错误,请尝试使用 mpg123 进行解码

$ for FILE in *.mp3; do mpg123 --rate 44100 --stereo --buffer 3072 --resync -w "${FILE%.mp3}.wav" "$FILE"; done

要将 AAC 转换为 WAV,请确保已安装 faad2 并运行

$ for FILE in *.m4a; do faad "$FILE"; done

要修复现有 WAV 文件(或许多其他格式)的比特率,请尝试使用 sox

$ for FILE in *.wav; do sox "$FILE" -c 2 -r 44100 "${FILE%.wav}-ok.wav"; done

以字母顺序列出音频文件时,按照期望的音轨顺序列出它们的方式命名音频文件,例如 01.wav02.wav03.wav 等。

使用 cdrtools,使用以下命令模拟将 WAV 文件刻录为音频 CD

$ cdrecord -dummy -v -pad speed=X dev=/dev/sr0 -dao -swab *.wav

如果一切正常,您可以删除 -dummy 标志以实际刻录 CD。

注意: 生成的光盘可能无法在所有 CD 播放器中播放。对于纯音频光盘(丢弃一些音轨元数据),添加 -audio 标志。

或者,使用 cdrdao,使用以下命令创建一个“目录表”文件

$ {
    echo "CD_DA"
    printf 'TRACK AUDIO\nFILE "%s" 0\n' *.wav
  } > toc

这将使其在音轨之间没有间隙。可选地,如果您想在某些音轨之间插入 X 秒的间隙,您可以编辑 toc 文件,并在该音轨的 TRACK AUDIO 和 FILE 行之间插入以下行

PREGAP 00:0X:00

然后,我们刻录 CD

$ cdrdao write --speed X toc

可以调整速度,较低的速度会产生更高的质量结果。这是因为音频 CD 格式的纠错能力不如数据存储格式先进。

要测试新的音频 CD,请使用 MPlayer

$ mplayer cdda://

刻录 BIN/CUE

要刻录 BIN/CUE 镜像,请运行

$ cdrdao write --device /dev/sr0 image.cue

混合模式光盘的 TOC/CUE/BIN

ISO 镜像仅存储单个数据轨道。如果您想创建混合模式光盘(带有多个音轨的数据轨道)的镜像,则需要制作 TOC/BIN 对

$ cdrdao read-cd --read-raw --datafile image.bin --driver generic-mmc:0x20000 --device /dev/cdrom image.toc

某些软件只接受 CUE/BIN 对,您可以使用 toc2cuecdrdao 的一部分)制作 CUE 表

$ toc2cue image.toc image.cue

刻录后端问题

如果您遇到问题,可以在邮件列表 cdwrite@other.debian.org 寻求建议,或者尝试写入程序手册页末尾附近列出的支持邮件地址(如果有)。

请告知您尝试的命令行、媒体类型(例如 CD-R、DVD+RW 等)以及故障症状(程序消息、用户期望落空等)。您可能会被要求获取受影响程序的最新发布版本或开发版本并进行测试运行。但答案也可能是您的驱动器不喜欢特定的媒体。

使用 GUI 刻录 CD/DVD/BD

有几个应用程序可用于在图形环境中刻录 CD。

另请参阅 Wikipedia:光盘制作软件比较

  • AcetoneISO — 多合一 ISO 工具(支持 BIN、MDF、NRG、IMG、DAA、DMG、CDI、B5I、BWI、PDI 和 ISO)。
https://sourceforge.net/projects/acetoneiso || acetoneiso2AUR
  • BashBurn — 基于轻量级终端菜单的 CD/DVD 刻录工具前端。
https://web.archive.org/web/20161118032849/https://bashburn.dose.se/ || bashburn
  • Brasero — GNOME 桌面的光盘刻录应用程序,旨在尽可能简单易用。
https://wiki.gnome.org/Apps/Brasero || brasero
  • cdwcdrecordmkisofsgrowisofsdvd+rw-mediainfodvd+rw-formatxorriso 的 Ncurses 前端。
https://cdw.sourceforge.net/ || cdwAUR
  • Gnome CD Master (gcdmaster) — 用于创建音频 CD 并使用 cdrdao 刻录它们的 GUI 前端。
https://cdrdao.sourceforge.net/gcdmaster/ || cdrdao
  • Graveman — 基于 GTK 的 CD/DVD 刻录应用程序。它需要配置以指向正确的设备。
https://graveman.tuxfamily.org/ || gravemanAUR
  • isomaster — ISO 镜像编辑器。
http://littlesvr.ca/isomaster || isomasterAUR
  • K3b — 基于 KDElibs 的功能丰富且易于操作的 CD 刻录和抓取应用程序。属于 kde-multimedia 的一部分。
https://apps.kde.org/k3b/ || k3b
  • X-CD-Roast — 用于 CD 和 DVD 写入的轻量级 cdrtools 前端。
http://www.xcdroast.org/ || xcdroastAUR
  • Xfburn — libburnia 库的简单前端,支持 CD/DVD(-RW)、ISO 镜像和 BurnFree。
https://docs.xfce.org/apps/xfburn/start || xfburn
  • xorriso-tcltk — ISO 和 CD/DVD/BD 刻录工具 xorriso 的图形前端
https://gnu.ac.cn/software/xorriso/ || libisoburn

播放

CD

音频 CD 的播放需要 libcdio 软件包。要使 Dolphin 等 KDE 应用程序能够读取音频 CD,请安装 audiocd-kio

DVD

如果您希望播放加密的 DVD,则必须安装 libdvd* 软件包

此外,您必须安装播放器软件。流行的 DVD 播放器有 MPlayerxineVLC。请参阅视频播放器列表以及 MPlayer 的具体说明。

蓝光

请参阅 Blu-ray#播放

抓取

抓取是将音频或视频内容复制到硬盘的过程,通常来自可移动媒体或媒体流。

音频 CD

控制台

  • abcde — 用于抓取音频 CD 的综合命令行工具。
https://abcde.einval.com/ || abcdeAUR
  • cdda2wav — 具有偏执模式支持的 CD 音频提取程序。
http://www.cdda2wav.de/ || cdrtools
  • cdparanoia — 光盘数字音频 (CDDA) 数字音频提取 (DAE) 工具。
https://xiph.org/paranoia/index.html || cdparanoia
  • cyanrip — 功能广泛的 CD 抓取器,具有 musicbrainz 集成、错误检测、日志生成、多种格式、HDCD 解码、封面艺术自动下载。
https://github.com/cyanreg/cyanrip/ || cyanripAUR
  • redumper — 高级字节完美光盘转储器,支持增量转储、高级 SCSI/C2 修复、智能音频 CD 偏移检测以及许多其他功能。
https://github.com/superg/redumper/tree/main/ || redumperAUR
  • ripright — 以 autorip 为模型的极简 CD 抓取器。
https://www.mcternan.me.uk/ripright/ || riprightAUR
  • ripit — 支持 MusicBrainz、freedb 和各种编解码器的命令行抓取器。
https://www.ripit.pl/ || ripitAUR
  • shnsplit — 根据 CUE 表拆分 .wav 和 .flac 文件,并对生成的片段进行编码。ABCDE 的有用伴侣。
http://shnutils.freeshell.org/shntool/ || shntoolAUR
  • whipper — CD 抓取器,旨在追求精度而非速度。使用 cdparanoia、MusicBrainz、AccurateRip。
https://github.com/whipper-team/whipper || whipper

图形界面

  • Asunder — 基于 GTK 的 CD 抓取程序。
http://littlesvr.ca/asunder/ || asunderAUR
  • Audex — 基于 KDE 的 CD-ROM 驱动器音频抓取工具。属于 kde-multimedia 的一部分。
https://apps.kde.org/audex/ || audex
  • fre:ac — 音频转换器和 CD 抓取器,支持各种流行的格式和编码器。
https://freac.org/ || freacAUR
  • Goobox — GNOME 的 CD 播放器和抓取器。
https://gitlab.gnome.org/Archive/goobox || goobox
  • Grip — GNOME 项目中快速轻便的 CD 抓取器,类似于 Audiograbber
https://sourceforge.net/projects/grip/ || gripAUR.
  • K3b — 基于 KDElibs 的功能丰富且易于操作的 CD/DVD 刻录和抓取应用程序。属于 kde-multimedia 的一部分。
https://apps.kde.org/k3b/ || k3b
  • KAudioCreator — 用于抓取和编码音频 CD 的 KDE 程序。已停止维护且不再启动
https://invent.kde.org/unmaintained/kaudiocreator || kaudiocreator-gitAUR
  • ripperX — 用于抓取 CD 音轨并将其编码为 Ogg、MP3 或 FLAC 格式的 GTK 程序。
https://sourceforge.net/projects/ripperx/ || ripperxAUR
  • rubyripper — 音频光盘抓取器,旨在通过多次抓取同一音轨并纠正任何差异来提供安全抓取。
https://github.com/bleskodev/rubyripper || rubyripperAUR
https://wiki.gnome.org/Apps/SoundJuicer || sound-juicer
  • soundKonverter — 各种音频转换器的前端。
https://www.linux-apps.com/p/1126634 || soundkonverterAUR

DVD-视频

另请参阅 Wikipedia:DVD 抓取软件比较

通常,将 DVD 翻录成数字文件的过程可以分解为两个子任务

  1. 数据提取 — 将音频和/或视频数据复制到硬盘,
  2. 转码 — 将提取的数据转换为合适的格式。

一些实用程序执行这两个任务,而另一些则侧重于其中一个方面。

控制台

  • dvdbackup — 用于纯数据提取的工具,不进行转码。它可用于结合 libdvdcss 创建加密 DVD 的精确副本,或用于为其他无法读取加密 DVD 的实用程序解密视频。
https://dvdbackup.sourceforge.net/ || dvdbackup
  • FFmpeg — 完整且免费的互联网直播音频和视频广播解决方案,适用于 Linux/Unix,能够从 DVD-Video ISO 镜像直接翻录成任何格式(音频/视频),只需选择 ISO 镜像作为输入并继续执行所需选项即可。它还允许进行混音降噪、缩小尺寸、分割、选择流等功能。
https://ffmpeg.cpp.org.cn/ || ffmpeg
  • HandBrake CLI — 简单而强大的视频转码器,非常适合批量 mkv/x264 翻录。
https://handbrake.fr/ || handbrake-cli
  • MEncoder — 免费的命令行视频解码、编码和过滤工具。它支持 DVD-Video 的翻录和转码。
http://www.mplayerhq.hu/ || mencoder
  • subtitleripper — 将 DVD 字幕转换为文本格式。
https://subtitleripper.sourceforge.net/ || subtitleripperAUR
|| transcodeAUR
  • Vobcopy — 将 DVD .vob 文件复制到硬盘,并在复制过程中解密。
https://github.com/barak/vobcopy || vobcopyAUR

图形界面

  • dvd::riptranscodeAUR 的前端,用于将 DVD 提取到硬盘,并进行转码或即时提取和转码。
https://www.exit1.org/dvdrip/ || dvdripAUR
  • HandBrake — 简单而强大的视频转码器,非常适合批量 mkv/x264 翻录。GTK 版本。
https://handbrake.fr/ || handbrake
  • K3b — 基于 KDElibs 的功能丰富且易于操作的 CD/DVD 刻录和抓取应用程序。属于 kde-multimedia 的一部分。
https://apps.kde.org/k3b/ || k3b
  • OGMRip — 一个应用程序和一组库,用于使用各种编解码器将 DVD 翻录和编码为 AVI、OGM、MP4 或 Matroska 文件。它依赖于 mplayer、mencoder、ogmtools、mkvtoolnix、mp4box、oggenc、lame 和 faac 来执行其任务。
https://ogmrip.sourceforge.net/ || ogmripAUR

DVD-Audio

  • Python Audio Tools — 包括 dvda2track,这是一个易于使用的命令行工具,用于将 DVD-Audio 音轨提取为未压缩的 wav 文件。
https://audiotools.sourceforge.net/ || audiotoolsAUR

多格式

  • Aaru — 用于 CD、DVD 和硬盘驱动器存档翻录的软件
https://aaru.app || aaruAUR

故障排除

Brasero 无法标准化音频 CD

如果您尝试刻录,它可能会在名为“标准化”的第一步停止。

作为一种解决方法,您可以使用“编辑 > 插件”菜单禁用标准化插件

VLC:错误“... 无法打开光盘 /dev/dvd”

如果您收到类似这样的错误

vlc dvdread could not open the disc "/dev/dvd"

这可能是因为您的系统上没有设备节点 /dev/dvd。Udev 不再创建 /dev/dvd,而是使用 /dev/sr0。要修复此问题,请编辑 VLC 配置文件 (~/.config/vlc/vlcrc)

# DVD device (string)
dvd=/dev/sr0

DVD 驱动器噪音很大

如果播放 DVD 视频导致系统声音很大,可能是因为光盘旋转速度超过了需要的速度。要临时更改驱动器的速度,请运行

# eject -x 12 /dev/dvd

有时

# hdparm -E12 /dev/dvd

可以使用驱动器支持的任何速度,或使用 0 表示最大速度。

设置 CD-ROM 和 DVD-ROM 驱动器速度

播放在新电脑(新 DVD 驱动器)上无法工作

如果播放无法工作,并且您有一台新电脑(新 DVD 驱动器),原因可能是未设置区域码。您可以使用 regionsetAUR 软件包读取和设置区域码。

以上程序都无法将 DVD 翻录/编码到我的硬盘!

确保您的 DVD 读取器的区域设置正确;否则,您将收到大量无法解释的 CSS 相关错误。使用 regionsetAUR 软件包执行此操作。

如果在设置了正确的区域后翻录仍然不起作用,请参阅 libdvdcss 开发人员文档,以了解如何启用日志消息和设置其他相关选项。

GUI 程序日志指示后端程序存在问题

如果您使用 GUI 程序并遇到程序日志归咎于某些后端程序的问题,请尝试通过记录的后端程序参数重现该问题。无论您是否成功重现,您都可以将记录的行和您自己的发现报告给 #刻录后端问题 部分中提到的位置。

特殊情况:介质错误 / 写入错误

以下是一些关于驱动器不喜欢介质的典型消息。这只能通过使用不同的驱动器或不同的介质来解决。不同的程序几乎无济于事。

使用后端 growisofs 的 Brasero

BraseroGrowisofs stderr: :-[ WRITE@LBA=0h failed with SK=3h/ASC=0Ch/ACQ=00h]: Input/output error

使用后端 libburn 的 Brasero

BraseroLibburn Libburn reported an error SCSI error on write(16976,16): [3 0C 00] Write error

尝试刻录第二层时,BD-R DL 50GB 出错

使用 dvd+rw-tools 中的 growisofs 刻录 50GB BD-R DL 光盘可能会导致致命错误和介质损坏,例如

$ growisofs -Z /dev/sr0 -J -R -V "label" files
Executing 'mkisofs -J -R -V label files | builtin_dd of=/dev/sr0 obs=32k seek=0'
I: -input-charset not specified, using utf-8 (detected in locale settings)
  0.03% done, estimate finish Fri Jan 29 19:50:36 2016
  0.05% done, estimate finish Fri Jan 29 19:50:36 2016
  0.08% done, estimate finish Fri Jan 29 19:50:36 2016
/dev/sr0: pre-formatting blank BD-R for 49.8GB...
/dev/sr0: "Current Write Speed" is 8.2x4390KBps.
  0.11% done, estimate finish Sat Jan 30 03:29:13 2016
  0.13% done, estimate finish Sat Jan 30 02:10:01 2016
...
 63.20% done, estimate finish Fri Jan 29 20:43:45 2016
:-[ WRITE@LBA=b6d820h failed with SK=3h/WRITE ERROR]: Input/output error
:-( write failed: Input/output error
/dev/sr0: flushing cache
/dev/sr0: closing track
/dev/sr0: closing session
:-[ CLOSE SESSION failed with SK=5h/INVALID FIELD IN CDB]: Input/output error
/dev/sr0: reloading tray

这发生在开始写入第二层时的 25GB 边界处。使用 cdrtools 中的 cdrecord 可以正常工作。使用 'HL-DT-ST BD-RE WH16NS40' LG 刻录机和 Verbatim BD-R DL 6x 光盘 (#96911) 进行了测试。 FS#47797

光盘托盘自动关闭

如果在弹出 CD 后,无论是使用 eject 命令还是按下驱动器按钮,驱动器光盘托盘在能够取出光盘之前自动关闭,请尝试以下命令

# sysctl -w dev.cdrom.autoclose=0

如果这解决了问题,请使更改永久生效

/etc/sysctl.d/60-cdrom-autoclose.conf
dev.cdrom.autoclose = 0

如果上述方法不起作用,并且作为最后的手段,您可以通过以下方式从内核卸载光盘模块

# rmmod sr_mod

现在光盘驱动器应该按预期运行,但将不再挂载光盘。将光盘放入驱动器后,通过以下方式重新激活模块

# modprobe sr_mod

现在应该可以挂载光盘了。

外部光驱无法识别

请参阅 通用故障排除#内核升级后无法使用某些外围设备

另请参阅