数据包写入

快速入门

  • 在块设备部分选择数据包支持,并在文件系统部分选择 UDF 支持。

  • 编译并安装内核及模块,然后重启。

  • 你需要 udftools 软件包 (pktsetup, mkudffs, cdrwtool)。从此处下载:https://github.com/pali/udftools

  • 准备一张新的 CD-RW 光盘并格式化它(假设 CD-RW 为 hdc,请酌情替换)

    # cdrwtool -d /dev/hdc -q
    
  • 设置你的刻录机

    # pktsetup dev_name /dev/hdc
    
  • 现在你可以挂载 /dev/pktcdvd/dev_name 并向其复制文件。尽情享受吧

    # mount /dev/pktcdvd/dev_name /cdrom -t udf -o rw,noatime
    

DVD-RW 媒体的数据包写入

如果 DVD-RW 光盘处于所谓的“受限覆盖”模式,它们就可以像 CD-RW 光盘一样进行写入。要将光盘置于受限覆盖模式,请运行

# dvd+rw-format /dev/hdc

然后你就可以像使用 CD-RW 光盘一样使用该光盘了

# pktsetup dev_name /dev/hdc
# mount /dev/pktcdvd/dev_name /cdrom -t udf -o rw,noatime

DVD+RW 媒体的数据包写入

根据 DVD+RW 规范,支持 DVD+RW 光盘的驱动器应实现“2KB 粒度的真随机写入”,这意味着可以在此类光盘上放置任何块大小 >= 2KB 的文件系统。例如,应该可以进行

# dvd+rw-format /dev/hdc   (only needed if the disc has never
                            been formatted)
# mkudffs /dev/hdc
# mount /dev/hdc /cdrom -t udf -o rw,noatime

然而,有些驱动器不遵循规范,并期望主机在 32KB 边界上执行对齐写入。其他驱动器确实遵循规范,但如果写入未对齐 32KB,则会遇到严重的性能问题。

这两个问题都可以通过使用 pktcdvd 驱动程序来解决,该驱动程序始终生成对齐写入

# dvd+rw-format /dev/hdc
# pktsetup dev_name /dev/hdc
# mkudffs /dev/pktcdvd/dev_name
# mount /dev/pktcdvd/dev_name /cdrom -t udf -o rw,noatime

DVD-RAM 媒体的数据包写入

DVD-RAM 光盘是随机可写入的,因此不需要使用 pktcdvd 驱动程序。然而,使用 pktcdvd 驱动程序可以像对 DVD+RW 媒体那样提高性能。

备注

  • CD-RW 媒体通常不能被覆盖超过约 1000 次,因此为了避免对媒体造成不必要的磨损,你应该始终使用 noatime 挂载选项。

  • 缺陷管理(即坏扇区的自动重映射)尚未实现,因此如果光盘磨损,你很可能会遇到文件系统损坏的情况。

  • 由于 pktcdvd 驱动程序使光盘显示为具有 2KB 块大小的常规块设备,你可以在光盘上放置任何你喜欢的文件系统。例如,运行

    # /sbin/mke2fs /dev/pktcdvd/dev_name
    

    以在光盘上创建 ext2 文件系统。

使用 pktcdvd sysfs 接口

自 Linux 2.6.20 以来,pktcdvd 模块具有一个 sysfs 接口,并可以通过它进行控制。例如,“pktcdvd”工具使用此接口。(参见 http://tom.ist-im-web.de/linux/software/pktcdvd

“pktcdvd”的工作方式类似于“pktsetup”,例如:

# pktcdvd -a dev_name /dev/hdc
# mkudffs /dev/pktcdvd/dev_name
# mount -t udf -o rw,noatime /dev/pktcdvd/dev_name /dvdram
# cp files /dvdram
# umount /dvdram
# pktcdvd -r dev_name

有关 sysfs 接口的描述,请查看文件

使用 pktcdvd debugfs 接口

要以人类可读的形式读取 pktcdvd 设备信息,请执行

# cat /sys/kernel/debug/pktcdvd/pktcdvd[0-7]/info

有关 debugfs 接口的描述,请查看文件