0%

Linux刻光盘:xorriso图形界面开发

编写项目的背景

众所周知,Linux 系统一直缺乏一个好用的刻录光盘的软件。Brasero 软件的功能比较简单,而 k3b 是比较好用的软件,但是他采用的后端既不支持使用 UDF 的蓝光光盘续刻,也不支持使用iso9660的蓝光光盘进行续刻。也就是说在Linux系统下, 无法对蓝光光盘进行续刻 (Muliti-sessioning)。也就是说蓝光光盘必须一次性先准备好所有的文件进行刻录,之后没办法再追加了。这是对光盘存储空间的极大浪费。

k3b 软件并没有明确标明不支持蓝光光盘的续刻,而是在实际上刻录完第一次之后想要续刻的时候,提示介质不支持续刻了(具体的提示我已经忘记)。这样的一个问题曾经困扰我很久,之后我在互联网上找到一篇英文的帖子 https://forums.linuxmint.com/viewtopic.php?t=428014 ,讨论了这个问题。下面的人提出:k3b使用的后端均不支持蓝光光盘的UDF续刻,然而好在iso9660实际上并没有2GB的文件大小限制,所以我们可以仍旧使用iso9660。xorriso软件默认就打开最大级别的iso9660文件大小限制,所以我们可以用xorriso来刻录多分段的光盘。例如这篇帖子中回答者提供的示例代码:

# To address your DVD or Blu-ray dive as target device do:
iso=/dev/sr1
# But before using slow optical media, try with an image file on fast disk.
# (Make sure this file does not exist yet.)
iso=/...some.large.filesystem.../test.iso

# Choose some large test files
file1=/.../some_large_file
file2=/.../some_other_large_file

# Write first session
xorriso -outdev "$iso" -map "$file1" /file1

# Write second session
xorriso -dev "$iso" -map "$file2" /file2

# Mount on a GNU/Linux system
mount_point=/mnt/iso
sudo mount "$iso" "$mount_point"
ls -l "$mount_point"

这个工具只有命令行程序。虽然有对话模式可以在里面进行编辑,但是这些命令并不是和外面的bash完全兼容的,敲起来也不太习惯,学习成本比较高。因此我为这个工具开发了一个图形界面。

界面的主要操作逻辑就是左边是硬盘的文件系统,右边是光盘的文件系统。左右拖拽可以进行提取、刻录等计划,点击执行会最终执行。

截图

项目地址:https://github.com/LittleWalnutX/xorriso-gui