![阻止多区段 CD 的第一个区段的特殊文件](https://linux22.com/image/192562/%E9%98%BB%E6%AD%A2%E5%A4%9A%E5%8C%BA%E6%AE%B5%20CD%20%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%8C%BA%E6%AE%B5%E7%9A%84%E7%89%B9%E6%AE%8A%E6%96%87%E4%BB%B6.png)
我有一张多区段 CD。第一个部分是 CD 音轨,第二个部分是 SVCD qv“CD Extra”和“Blue book”。当在 CD 播放器上播放时,(直到最近)可以听到音轨;当在适当的视频播放器上播放时,SVCD(直到最近)都会播放。该描述中的两个“直到最近”突出了我的问题——磁盘开始退化,我需要从中提取数据。我执行此任务的首选是GNU地址救援。但是,ddrescue 与设备特殊文件交互,而不是与已安装的卷交互。 (所以“会话=Xmount
“对于各种光学介质文件系统的选项是无用的。)为了方便起见,假设这/dev/sr0
是设备特殊文件,无益地仅代表光盘上的最后一个会话(从cdrom.c
ioctl 的描述中可以看出CDROMMULTISESSION
)。有没有办法到
- 发出 IOCTL 来
/dev/sr0
更改它绑定到的会话, - 调用
mknod
将以某种方式将生成的设备文件绑定到特定会话,或者 - 为多会话磁盘的每个会话创建一组块特殊设备(类似于 sda1、sda2、...、sdan对于固定磁盘上的分区)?
(为了奖励积分,是否有一个用于多会话磁盘的标准容器,允许组合提取的 ISO,以便将整个介质呈现给 WINE、dosemu 和/或 VM 软件?这对于我拥有的另一张多会话 CD 来说会很方便 -会话 1 是一个仅 Win98SE(我的意思是,只是,WINE、WinMe 和后续 Windows 都无法运行此二进制文件)程序,它使用会话 2 中的音轨。我的最后一台仍然可以运行 Win98SE 的机器很好,但这不会永远持续下去——当它失败时,我需要能够以有效的格式将多会话磁盘呈现给虚拟机。也许有一种偷偷摸摸的方法可以滥用loop
这一目的。)