我正在尝试将 ISO 映像写入 Debian Jessie 上的 CD。我的 CD 已放入驱动器中,并且所有符号链接似乎都指向了它们应在的位置,并且内核识别了我的 CD-RW 驱动器。(顺便说一下,它是通过 IDE 连接的)
我从官方 Debian 存储库安装了 Wodim。使用wodim --devices
或wodim -scanbus
我收到...
wodim: No such file or directory.
Cannot open SCSI driver!
For possible targets try 'wodim --devices' or 'wodim -scanbus'.
For possible transport specifiers try 'wodim dev=help'.
For IDE/ATAPI devices configuration, see the file README.ATAPI.setup from
the wodim documentation.
虽然我认为这不会有什么区别,但我是通过远程 SSH 来做到这一点的。
错误明确指出我需要读取README.ATAPI.setup
。如果我知道那个文件在哪里,我会非常乐意这样做。我用 Google 搜索了该文件,但只在各种论坛上找到了与我类似的问题。找到后这个问题我运行了一些测试命令来查看是否遇到同样的问题。
lsmod | grep sr_mod
产量……
sr_mod 21568 0
cdrom 46828 1 sr_mod
scsi_mod 164132 4 sg,libata,sd_mod,sr_mod
lsmod | grep sg
产量……
sg 25573 0
scsi_mod 164132 4 sg,libata,sd_mod,sr_mod
ls -l /dev/sr0
产量……
brw-rw---- 1 root cdrom 11, 0 Mar 12 17:20 /dev/sr0
那篇文章提到应该/dev/cdrom
链接到/dev/sr0
。结果ls -l /dev/cdrom
是……
lrwxrwxrwx 1 root root 3 Mar 12 17:20 /dev/cdrom -> sr0
以 root 身份使用sudo
或使用 root shell 运行这些命令不会影响任何这些命令的结果。此外,告诉 Wodim 使用哪个设备wodim dev=/dev/sr0 --scanbus
会产生与不声明 shell 变量相同的结果。
有什么问题?
答案1
wodim 产生的错误消息通常意味着您的 CD-RW 驱动器中有一张光盘,并且该光盘已安装。卸载光盘并尝试wodim -scanbus
再次运行。Wodim 显示“没有这样的文件或目录”的原因如下。Wodim 的-scanbus
选项通过打开可能指向 CD/DVD 刻录机的每个文件并查询每个设备来确定是否有任何设备是 CD/DVD 刻录机来工作。现在,wodim 的工作方式是,如果它找不到任何设备,它就会失败,并显示与它遇到的最后一个错误相对应的错误消息。在我的系统上,wodim 遇到的最后一个设备是/dev/scd255
,它可能不存在于您的系统中,因此 wodim 显示与它遇到的最后一个错误相对应的错误消息,即“没有这样的文件或目录”。如果您想在 wodim 检查每个设备时查看所有错误消息,您可以执行strace wodim -scanbus
。在我的系统上,驱动器中安装了光盘,它会产生:
[many irrelevant and repetitive lines of output deleted]
︙
open("/dev/hdy", O_RDWR|O_EXCL|O_NONBLOCK|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/dev/hdz", O_RDWR|O_EXCL|O_NONBLOCK|O_LARGEFILE) = -1 ENOENT (No such file or directory)
uname({sys="Linux", node="ubuntu", ...}) = 0
open("/dev/scd0", O_RDWR|O_EXCL|O_NONBLOCK|O_LARGEFILE) = -1 EBUSY (Device or resource busy)
nanosleep({0, 399999000}, NULL) = 0
open("/dev/scd0", O_RDWR|O_EXCL|O_NONBLOCK|O_LARGEFILE) = -1 EBUSY (Device or resource busy)
nanosleep({0, 399999000}, NULL) = 0
open("/dev/scd0", O_RDWR|O_EXCL|O_NONBLOCK|O_LARGEFILE) = -1 EBUSY (Device or resource busy)
nanosleep({0, 399999000}, NULL) = 0
open("/dev/scd0", O_RDWR|O_EXCL|O_NONBLOCK|O_LARGEFILE) = -1 EBUSY (Device or resource busy)
nanosleep({0, 400000000}, NULL) = 0
open("/dev/scd0", O_RDWR|O_EXCL|O_NONBLOCK|O_LARGEFILE) = -1 EBUSY (Device or resource busy)
nanosleep({0, 400000000}, NULL) = 0
open("/dev/scd0", O_RDWR|O_EXCL|O_NONBLOCK|O_LARGEFILE) = -1 EBUSY (Device or resource busy)
open("/dev/scd1", O_RDWR|O_EXCL|O_NONBLOCK|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/dev/scd2", O_RDWR|O_EXCL|O_NONBLOCK|O_LARGEFILE) = -1 ENOENT (No such file or directory)
︙
[many more irrelevant and repetitive lines of output deleted]
正如您将在上面的输出中看到的,wodim 检测到光驱,但无法将其专门打开。顺便说一下,在我的系统上,/dev/scd0
有一个符号链接/dev/sr0
:
$ ls -l /dev/scd0
lrwxrwxrwx 1 root root 3 2019-04-03 11:13 /dev/scd0 -> sr0
至于那个叫做 的文件README.ATAPI.setup
,在 Debian 及其衍生版本中,该文件位于 目录中/usr/share/doc/wodim
,可以在线找到这里并且可能其他地方。其内容已经过时,部分信息具有误导性。例如,该文件指出:
如果您的计算机中只有一台 CD 刻录机,则 CD 刻录应该可以立即使用。应该有一个符号链接
/dev/cdrw
指向您实际的 CD 刻录机设备(例如/dev/hdb
)。如果不存在该链接(例如,系统未使用 udev/devfs)或者您想使用其他设备作为默认设备,您可以在以下位置配置该设备/etc/wodim.conf
:CDR_DEVICE=/dev/hdd
将会把默认设备配置为
/dev/hdd
,即辅助 IDE 总线上的从属设备。
/dev/hdb
使用或 的建议/dev/hdd
不再适用,因为 Linux 内核现在使用“IDE-SCSI”模拟来使 IDE / PATA 设备显示为 SCSI 设备。因此,您可以阅读文档,但凡有 的地方/dev/hd*
,请将其替换为/dev/sr0
。
答案2
我必须将 附加dev=/dev/cdrom
到参数列表中才能解决此错误。 和
都成功了。cdrecord
wodim