光盘驱动器

出自 ArchWiki
(重定向自 Optical Disc Drive

出自 Wikipedia

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

刻录

此文章或章节需要扩充。

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

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

安装刻录工具

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

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

如果您想使用带有图形用户界面的程序,请遵循 #使用 GUI 刻录 CD/DVD/BD

此处列出的程序面向命令行。它们是大多数免费 GUI 程序用于 CD、DVD 和 BD 的后端。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 以获得参考。

原因: 请使用模板的第一个参数来提供简要说明。 (在光盘驱动器讨论页中讨论)

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

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

sudo umount /dev/cdrom

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

最佳结果提示

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

使用 dvdisaster 重建损坏的光盘

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

原因: 请使用模板的第一个参数来提供简要说明。 (在光盘驱动器讨论页中讨论)

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

sudo umount /dev/cdrom

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

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

14. 检查 `/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 可以未格式化或格式化使用。未格式化时,它们以全额定速度写入,并提供最大存储容量。格式化后,它们在写入操作期间进行校验读取,坏块将被备用区域中的块替换。这会将写入速度降低到额定速度的一半或更低。默认大小的备用区域将存储容量减少 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。请参阅上面的 mkisofs 示例。它禁止选项 -o 并弃用选项 -C。默认情况下,它使用 mkisofs。您可以通过设置环境变量 MKISOFS 来指定使用其他兼容的后端程序

$ export MKISOFS="xorrisofs"

通过选项 -Z 表示希望在光介质上开始新的 ISO 文件系统

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

通过选项 -M 表示希望将更多文件作为新区段追加到现有的 ISO 文件系统

$ 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 — 功能丰富且易于操作的 CD 刻录和抓取应用程序,基于 KDElibs。是 kde-multimedia 的一部分。
https://apps.kde.org/k3b/ || k3b
  • X-CD-Roast — 轻量级 cdrtools 前端,用于 CD 和 DVD 写入。
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 软件包。要使 KDE 应用程序(如 Dolphin)读取音频 CD,请安装 audiocd-kio

DVD

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

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

蓝光

请参阅 蓝光#播放

抓取

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

音频 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、freeddb 和各种编解码器的命令行抓取器。
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 — 功能丰富且易于操作的 CD/DVD 刻录和抓取应用程序,基于 KDElibs。是 kde-multimedia 的一部分。
https://apps.kde.org/k3b/ || k3b
  • KAudioCreator — 用于抓取和编码音频 CD 的 KDE 程序。已不再维护,并且 不再启动
https://invent.kde.org/unmaintained/kaudiocreator || kaudiocreator-gitAUR
  • ripperX — GTK 程序,用于抓取 CD 音轨并将它们编码为 Ogg、MP3 或 FLAC 格式。
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 — 用于纯数据提取的工具,不进行转码。它可用于创建加密 DVD 的精确副本(与 libdvdcss 结合使用),或用于解密其他无法读取加密 DVD 的实用程序的视频。
https://dvdbackup.sourceforge.net/ || dvdbackup
  • FFmpeg — 完整且免费的互联网直播音频和视频广播解决方案,适用于 Linux/Unix,能够直接从 DVD 视频 ISO 镜像中抓取任何格式(音频/视频),只需选择 ISO 镜像作为输入并继续使用所需的选项即可。它还允许降混、缩小、分割、选择流等功能。
https://ffmpeg.cpp.org.cn/ || ffmpeg
  • HandBrake CLI — 简单而强大的视频转码器,非常适合批量 mkv/x264 抓取。
https://handbrake.fr/ || handbrake-cli
  • MEncoder — 免费的命令行视频解码、编码和过滤工具。它支持抓取和转码 DVD 视频。
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 — 功能丰富且易于操作的 CD/DVD 刻录和抓取应用程序,基于 KDElibs。是 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 音频

  • Python Audio Tools — 包括 dvda2track,这是一个易于使用的命令行工具,用于将 DVD 音频轨道提取为未压缩的 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 程序并遇到问题,程序的日志将问题归咎于某些后端程序,请尝试通过记录的后端程序参数重现该问题。无论您是否成功重现,您都可以将记录的行以及您自己的发现报告给 #刻录后端问题 部分中提到的位置。

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

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

Brasero 与后端 growisofs

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

Brasero 与后端 libburn

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

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

外部光驱无法识别

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

另请参阅