我正在尝试在 Linux 上读取多会话 CD(在 MS Windows 系统上制作)。我想访问各个会话。
我发现我可以写:
mount -t iso9660 -oro,session=2 /dev/dvd /mnt/dir
就目前而言,这是有效的。我还剩下三个问题:
如何枚举现有会话?
编辑:看来我可以通过wodim dev=/dev/sr0 -toc
这显示曲目获得部分列表,但不是英文可读的曲目详细信息。如何一次安装多个会话? (目前,当我尝试安装第二个会话时,它只是将现有安装链接到新的安装点。)
如何让它因不存在的会话而失败? (目前,它只打开最后一个会话。显然有我可以阅读的 printk 消息。)
以前,我会使用CDfs,并且(我认为)对这些问题都没有任何问题。不幸的是,它不再受支持。
答案1
该程序wodim
是由一群对 OSS 怀有敌意的人于 2004 年 5 月创建的,目的是愚弄用户。wodim
尽管有大量针对该软件特定变体的错误报告,但自 2004 年 8 月以来尚未得到修复,因此请勿使用它。
您最好使用原始软件cdrtools
和程序,并且您应该知道,当您在 Linux 上时,使用特殊参数cdrecord
进行调用是不明智的,因为 Linux 为同时可用的相同硬件实现了多个不同质量的竞争驱动程序,并且通常强制使用现有驱动程序中最差的。如果您使用官方记录的语法,则能够自动选择可用的最佳驱动程序,并且如果您的计算机中只有一个光驱,如果您完全省略,甚至会自动发现它自己的正确接口。cdrecord
dev=/dev/sr0
dev=/dev/sr0
dev=
cdrecord
cdrecord
dev=
为了满足您的愿望,最好的方法是致电:
cdrecord -minfo
因为这列出了所有曲目和所有相关会话及其编号。您可能需要进行试验,以查明您的操作系统是否存在该选项的会话号偏移一问题mount
。
请注意,该选项-minfo
已于 2006 年 11 月添加,因此您需要一个cdrecord
足够新的版本...一些不友好的 Linux 发行版可能从那时起就没有更新其软件。 Gentoo、Arch、Suse 等都是一些友好的 Linux 发行版,它们配备了最新的软件。
有趣的是,自 2004 年以来,原始软件的源代码和功能集增加了一倍多,当时 OSS 敌对人员创建了您正在使用的分叉。
如果您的发行版是不友好的发行版之一,请获取最新的源代码希利工具从http://sourceforge.net/projects/schilytools/files/并通过调用来编译它make
。
让我添加来自多会话 CD 的典型输出的部分,如网络中调用结果所示cdrecord -minfo -v
:
ATIP start of lead out: 359847 (79:59/72)
...
Track Sess Type Start Addr End Addr Size
==============================================
1 1 Data 0 299 300 -1
2 2 Data 11702 21333 9632 11402
3 3 Data 28236 78091 49856 6902
4 4 Blank 84994 359844 274851 6902
Last session start address: 28236
Last session leadout start address: 78092
Next writable address: 84994
Remaining writable size: 274851
BTW:最后一列不带标题的是记录数据后的引出区的大小。第一个引出区的大小是11402个扇区,其他引出区的大小是缩小后的6902个扇区。
在这种情况下,磁盘上有 3 个写入会话。列表中提到的第四个会话是介质上的剩余可用空间。
最后,让我对经常出现的针对原版的毫无根据的主张添加评论cdrtools
,人们断言cdrtools
据称存在许可证问题。 Sun Microsystems、Oracle和SUSE的法务部门以及Eben Moglen都进行了深入分析,确认原版从来不存在任何许可问题cdrtools
。