刻录后挂载 DVD 而不弹出

刻录后挂载 DVD 而不弹出

我有一个脚本可以在 Gentoo 系统上的 DVD 上写入一些备份。
最初,我收集了文件,创建了 ISO 映像,然后使用 cdrecord 将该映像刻录到磁盘上。
刻录过程完成后,我想安装写入的 DVD,然后安装 ISO 映像并比较文件和大小。
问题是,如果不先弹出 DVD,我就无法播放 DVD。
不幸的是,在我的场景中,我无法取回 DVD,因为我有一个小型便携式 USB DVDRW。

关于我应该如何处理这个问题有什么想法吗?

答案1

使用 lsscsi 确定 DVD 驱动器的 scsi id(我使用“A”、“B”、“C”、“D”代表数字)

# lsscsi
[0:0:0:0]    disk    ATA      SAMSUNG MZNLN512 1L6Q  /dev/sda 
[A:B:C:D]    cd/dvd  PLDS     DVD-RW DU8A6SH   DU53  /dev/sr0 

删除设备

# echo 1 > /sys/class/scsi_device/A\:B\:C\:D/device/delete

重新加载设备。在下面的示例中,“hostA”A 来自上面的 lsscsi 行

# echo 'B C D'> /sys/class/scsi_host/hostA/scan

答案2

这是刻录程序和 Linux 内核之间的一个已知问题。内核仅将SG_IO ioctl转发到刻录器设备,并不知道设备内容发生变化。因此它的设备状态模型和数据缓冲区仍然过时。

除了重新加载介质之外,我不知道有什么可靠的方法可以让内核重新评估介质。如果 Orion 提出的 udevadm 触发器有帮助,那么我将有兴趣了解确切的命令文本。

好吧,如果它是 ISO 9660 文件系统,xorriso 可以通过 SG_IO ioctl 读取文件的真实内容来比较文件。

xorriso -for_backup -indev /dev/sr0 -compare_r /disk/path1 /iso/path1 -compare_r /disk/path2 /iso/path2 ...more.compare_r...

您使用要比较的硬盘上和 ISO 中的目录树路径而不是 /disk/pathX /iso/pathX 。

如果您在命令 -for_backup 生效时通过 xorriso 创建 ISO,或者使用 xorrisofs 和选项 --for_backup 创建 ISO,将会变得更加方便。

xorrisofs --for_backup ...mkisofs.arguments...

这样的 ISO 可以通过以下方式验证

xorriso -for_backup -indev /dev/sr0 -check_md5_r 抱歉/--

相关内容